Skip to content

Commit 9a32e1a

Browse files
author
Gustavo Bazan
authored
fix: handle pagination properly for events (#2550)
1 parent cd2b194 commit 9a32e1a

File tree

4 files changed

+61
-60
lines changed

4 files changed

+61
-60
lines changed

internal/cli/atlas/events/list.go

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
14+
1415
package events
1516

1617
import (
@@ -78,32 +79,39 @@ func (opts *ListOpts) NewOrgListOptions() admin.ListOrganizationEventsApiParams
7879
if len(opts.EventType) > 0 {
7980
eventType = &opts.EventType
8081
}
81-
listEventsAPIParams := admin.ListOrganizationEventsApiParams{
82-
OrgId: opts.orgID,
83-
ItemsPerPage: &opts.ItemsPerPage,
84-
PageNum: &opts.PageNum,
85-
EventType: eventType,
86-
IncludeRaw: new(bool),
87-
MaxDate: pointer.StringToTimePointer(opts.MaxDate),
88-
MinDate: pointer.StringToTimePointer(opts.MinDate),
82+
p := admin.ListOrganizationEventsApiParams{
83+
OrgId: opts.orgID,
84+
EventType: eventType,
85+
MaxDate: pointer.StringToTimePointer(opts.MaxDate),
86+
MinDate: pointer.StringToTimePointer(opts.MinDate),
87+
}
88+
if opts.ItemsPerPage > 0 {
89+
p.ItemsPerPage = &opts.ItemsPerPage
90+
}
91+
if opts.PageNum > 0 {
92+
p.PageNum = &opts.PageNum
8993
}
90-
return listEventsAPIParams
94+
return p
9195
}
9296

9397
func (opts *ListOpts) NewProjectListOptions() admin.ListProjectEventsApiParams {
9498
var eventType *[]string
9599
if len(opts.EventType) > 0 {
96100
eventType = &opts.EventType
97101
}
98-
listEventsAPIParams := admin.ListProjectEventsApiParams{
99-
GroupId: opts.projectID,
100-
ItemsPerPage: &opts.ItemsPerPage,
101-
PageNum: &opts.PageNum,
102-
EventType: eventType,
103-
MaxDate: pointer.StringToTimePointer(opts.MaxDate),
104-
MinDate: pointer.StringToTimePointer(opts.MinDate),
102+
p := admin.ListProjectEventsApiParams{
103+
GroupId: opts.projectID,
104+
EventType: eventType,
105+
MaxDate: pointer.StringToTimePointer(opts.MaxDate),
106+
MinDate: pointer.StringToTimePointer(opts.MinDate),
107+
}
108+
if opts.ItemsPerPage > 0 {
109+
p.ItemsPerPage = &opts.ItemsPerPage
110+
}
111+
if opts.PageNum > 0 {
112+
p.PageNum = &opts.PageNum
105113
}
106-
return listEventsAPIParams
114+
return p
107115
}
108116

109117
// ListBuilder
@@ -125,10 +133,10 @@ func ListBuilder() *cobra.Command {
125133
Long: fmt.Sprintf(usage.RequiredRole, "Project Read Only"),
126134
Deprecated: `
127135
To return project events prefer
128-
mongocli atlas|ops-manager|cloud-manager events projects list [--projectId <projectId>]
136+
atlas events projects list [--projectId <projectId>]
129137
130138
To return organization events prefer
131-
mongocli atlas|ops-manager|cloud-manager events organizations list [--orgId <orgId>]
139+
atlas events organizations list [--orgId <orgId>]
132140
`,
133141
Aliases: []string{"ls"},
134142
Args: require.NoArgs,

internal/cli/atlas/events/orgs_list.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,19 @@ func (opts *orgListOpts) NewOrgListOptions() admin.ListOrganizationEventsApiPara
6161
if len(opts.EventType) > 0 {
6262
eventType = &opts.EventType
6363
}
64-
listEventsAPIParams := admin.ListOrganizationEventsApiParams{
65-
OrgId: opts.ConfigOrgID(),
66-
ItemsPerPage: &opts.ItemsPerPage,
67-
PageNum: &opts.PageNum,
68-
EventType: eventType,
69-
MaxDate: pointer.StringToTimePointer(opts.MaxDate),
70-
MinDate: pointer.StringToTimePointer(opts.MinDate),
64+
p := admin.ListOrganizationEventsApiParams{
65+
OrgId: opts.ConfigOrgID(),
66+
EventType: eventType,
67+
MaxDate: pointer.StringToTimePointer(opts.MaxDate),
68+
MinDate: pointer.StringToTimePointer(opts.MinDate),
7169
}
72-
return listEventsAPIParams
70+
if opts.ItemsPerPage > 0 {
71+
p.ItemsPerPage = &opts.ItemsPerPage
72+
}
73+
if opts.PageNum > 0 {
74+
p.PageNum = &opts.PageNum
75+
}
76+
return p
7377
}
7478

7579
// OrgListBuilder

internal/cli/atlas/events/projects_list.go

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,20 @@ func (opts *projectListOpts) NewProjectListOptions() admin.ListProjectEventsApiP
6565
if len(opts.EventType) > 0 {
6666
eventType = &opts.EventType
6767
}
68-
listEventsAPIParams := admin.ListProjectEventsApiParams{
69-
GroupId: opts.ConfigProjectID(),
70-
ItemsPerPage: &opts.ItemsPerPage,
71-
PageNum: &opts.PageNum,
72-
EventType: eventType,
73-
MaxDate: pointer.StringToTimePointer(opts.MaxDate),
74-
MinDate: pointer.StringToTimePointer(opts.MinDate),
68+
p := admin.ListProjectEventsApiParams{
69+
GroupId: opts.ConfigProjectID(),
70+
EventType: eventType,
71+
MaxDate: pointer.StringToTimePointer(opts.MaxDate),
72+
MinDate: pointer.StringToTimePointer(opts.MinDate),
7573
}
76-
return listEventsAPIParams
74+
75+
if opts.ItemsPerPage > 0 {
76+
p.ItemsPerPage = &opts.ItemsPerPage
77+
}
78+
if opts.PageNum > 0 {
79+
p.PageNum = &opts.PageNum
80+
}
81+
return p
7782
}
7883

7984
// ProjectListBuilder

test/e2e/atlas/events_test.go

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ import (
2323
"time"
2424

2525
"github.com/mongodb/mongodb-atlas-cli/test/e2e"
26+
"github.com/stretchr/testify/assert"
27+
"github.com/stretchr/testify/require"
2628
"go.mongodb.org/atlas-sdk/v20231115002/admin"
2729
)
2830

2931
func TestEvents(t *testing.T) {
3032
cliPath, err := e2e.AtlasCLIBin()
31-
if err != nil {
32-
t.Fatalf("unexpected error: %v", err)
33-
}
33+
require.NoError(t, err)
3434
t.Run("List Project Events", func(t *testing.T) {
3535
cmd := exec.Command(cliPath,
3636
eventsEntity,
@@ -41,18 +41,10 @@ func TestEvents(t *testing.T) {
4141

4242
cmd.Env = os.Environ()
4343
resp, err := cmd.CombinedOutput()
44-
if err != nil {
45-
t.Fatalf("unexpected error: %v, resp: %v", err, string(resp))
46-
}
47-
44+
require.NoError(t, err)
4845
var events admin.GroupPaginatedEvent
49-
if err := json.Unmarshal(resp, &events); err != nil {
50-
t.Fatalf("unexpected error: %v", err)
51-
}
52-
53-
if len(events.Results) == 0 {
54-
t.Errorf("got=%#v\nwant>0\n", len(events.Results))
55-
}
46+
require.NoError(t, json.Unmarshal(resp, &events))
47+
assert.NotEmpty(t, events.Results)
5648
})
5749

5850
t.Run("List Organization Events", func(t *testing.T) {
@@ -66,17 +58,9 @@ func TestEvents(t *testing.T) {
6658

6759
cmd.Env = os.Environ()
6860
resp, err := cmd.CombinedOutput()
69-
if err != nil {
70-
t.Fatalf("unexpected error: %v, resp: %v", err, string(resp))
71-
}
72-
61+
require.NoError(t, err)
7362
var events admin.OrgPaginatedEvent
74-
if err := json.Unmarshal(resp, &events); err != nil {
75-
t.Fatalf("unexpected error: %v", err)
76-
}
77-
78-
if len(events.Results) == 0 {
79-
t.Errorf("got=%#v\nwant>0\n", len(events.Results))
80-
}
63+
require.NoError(t, json.Unmarshal(resp, &events))
64+
assert.NotEmpty(t, events.Results)
8165
})
8266
}

0 commit comments

Comments
 (0)