|
17 | 17 | package alerts |
18 | 18 |
|
19 | 19 | import ( |
| 20 | + "errors" |
20 | 21 | "testing" |
21 | 22 |
|
22 | 23 | "github.com/golang/mock/gomock" |
| 24 | + "github.com/mongodb/mongocli/internal/cli" |
| 25 | + "github.com/mongodb/mongocli/internal/flag" |
23 | 26 | "github.com/mongodb/mongocli/internal/mocks" |
| 27 | + "github.com/stretchr/testify/assert" |
24 | 28 | "go.mongodb.org/atlas/mongodbatlas" |
25 | 29 | ) |
26 | 30 |
|
27 | | -func TestAcknowledge_Run(t *testing.T) { |
| 31 | +func TestAcknowledgeBuilder(t *testing.T) { |
| 32 | + cli.CmdValidator( |
| 33 | + t, |
| 34 | + AcknowledgeBuilder(), |
| 35 | + 0, |
| 36 | + []string{ |
| 37 | + flag.Forever, |
| 38 | + flag.Until, |
| 39 | + flag.Comment, |
| 40 | + flag.ProjectID, |
| 41 | + flag.Output, |
| 42 | + }, |
| 43 | + ) |
| 44 | +} |
| 45 | + |
| 46 | +func TestAcknowledgeOpts_Run(t *testing.T) { |
28 | 47 | ctrl := gomock.NewController(t) |
29 | 48 | mockStore := mocks.NewMockAlertAcknowledger(ctrl) |
30 | 49 | defer ctrl.Finish() |
31 | 50 |
|
32 | | - expected := &mongodbatlas.Alert{} |
33 | | - |
34 | | - acknowledgeOpts := &AcknowledgeOpts{ |
35 | | - alertID: "533dc40ae4b00835ff81eaee", |
36 | | - comment: "Test", |
37 | | - store: mockStore, |
| 51 | + tests := []struct { |
| 52 | + name string |
| 53 | + opts AcknowledgeOpts |
| 54 | + wantErr bool |
| 55 | + }{ |
| 56 | + { |
| 57 | + name: "default", |
| 58 | + opts: AcknowledgeOpts{ |
| 59 | + alertID: "533dc40ae4b00835ff81eaee", |
| 60 | + comment: "Test", |
| 61 | + store: mockStore, |
| 62 | + }, |
| 63 | + wantErr: false, |
| 64 | + }, |
| 65 | + { |
| 66 | + name: "forever", |
| 67 | + opts: AcknowledgeOpts{ |
| 68 | + alertID: "533dc40ae4b00835ff81eaee", |
| 69 | + comment: "Test", |
| 70 | + forever: true, |
| 71 | + store: mockStore, |
| 72 | + }, |
| 73 | + wantErr: false, |
| 74 | + }, |
| 75 | + { |
| 76 | + name: "with error", |
| 77 | + opts: AcknowledgeOpts{ |
| 78 | + alertID: "533dc40ae4b00835ff81eaee", |
| 79 | + comment: "Test", |
| 80 | + forever: true, |
| 81 | + store: mockStore, |
| 82 | + }, |
| 83 | + wantErr: true, |
| 84 | + }, |
38 | 85 | } |
39 | | - |
40 | | - ackReq := acknowledgeOpts.newAcknowledgeRequest() |
41 | | - |
42 | | - mockStore. |
43 | | - EXPECT(). |
44 | | - AcknowledgeAlert(acknowledgeOpts.ProjectID, acknowledgeOpts.alertID, ackReq). |
45 | | - Return(expected, nil). |
46 | | - Times(1) |
47 | | - |
48 | | - err := acknowledgeOpts.Run() |
49 | | - if err != nil { |
50 | | - t.Fatalf("Run() unexpected error: %v", err) |
| 86 | + for _, tt := range tests { |
| 87 | + opts := tt.opts |
| 88 | + wantErr := tt.wantErr |
| 89 | + t.Run(tt.name, func(t *testing.T) { |
| 90 | + ackReq := opts.newAcknowledgeRequest() |
| 91 | + if wantErr { |
| 92 | + mockStore. |
| 93 | + EXPECT(). |
| 94 | + AcknowledgeAlert(opts.ProjectID, opts.alertID, ackReq). |
| 95 | + Return(nil, errors.New("fake")). |
| 96 | + Times(1) |
| 97 | + assert.Error(t, opts.Run()) |
| 98 | + } else { |
| 99 | + expected := &mongodbatlas.Alert{} |
| 100 | + mockStore. |
| 101 | + EXPECT(). |
| 102 | + AcknowledgeAlert(opts.ProjectID, opts.alertID, ackReq). |
| 103 | + Return(expected, nil). |
| 104 | + Times(1) |
| 105 | + assert.NoError(t, opts.Run()) |
| 106 | + } |
| 107 | + }) |
51 | 108 | } |
52 | 109 | } |
0 commit comments