Skip to content

Commit a150b79

Browse files
codinja1188ctreatma
authored andcommitted
Added Unit test case for events sub commands
1 parent 09eca82 commit a150b79

File tree

4 files changed

+146
-20
lines changed

4 files changed

+146
-20
lines changed

internal/events/event.go

+3
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ func (c *Client) NewCommand() *cobra.Command {
6464
type Servicer interface {
6565
MetalAPI(*cobra.Command) *metal.APIClient
6666
Format() outputs.Format
67+
Filters() map[string]string
68+
Includes(defaultIncludes []string) (incl []string)
69+
Excludes(defaultExcludes []string) (excl []string)
6770
}
6871

6972
func NewClient(s Servicer, out outputs.Outputer) *Client {

internal/events/event_test.go

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package events
2+
3+
import (
4+
"bytes"
5+
"testing"
6+
7+
root "github.com/equinix/metal-cli/internal/cli"
8+
outputPkg "github.com/equinix/metal-cli/internal/outputs"
9+
"github.com/spf13/cobra"
10+
"github.com/stretchr/testify/assert"
11+
)
12+
13+
func TestCli_Plans(t *testing.T) {
14+
if testing.Short() {
15+
t.Skip("skipping test in short mode.")
16+
}
17+
subCommand := "events"
18+
consumerToken := ""
19+
apiURL := ""
20+
Version := "metal"
21+
rootClient := root.NewClient(consumerToken, apiURL, Version)
22+
type fields struct {
23+
MainCmd *cobra.Command
24+
Outputer outputPkg.Outputer
25+
}
26+
tests := []struct {
27+
name string
28+
fields fields
29+
want *cobra.Command
30+
cmdFunc func(*testing.T, *cobra.Command)
31+
}{
32+
{
33+
name: "get",
34+
fields: fields{
35+
MainCmd: NewClient(rootClient, outputPkg.Outputer(&outputPkg.Standard{})).NewCommand(),
36+
Outputer: outputPkg.Outputer(&outputPkg.Standard{}),
37+
},
38+
want: &cobra.Command{},
39+
cmdFunc: func(t *testing.T, c *cobra.Command) {
40+
root := c.Root()
41+
out := &bytes.Buffer{}
42+
root.SetArgs([]string{subCommand, "get"})
43+
root.SetOutput(out)
44+
err := root.Execute()
45+
assert.NoError(t, err)
46+
},
47+
},
48+
{
49+
name: "get",
50+
fields: fields{
51+
MainCmd: NewClient(rootClient, outputPkg.Outputer(&outputPkg.Standard{})).NewCommand(),
52+
Outputer: outputPkg.Outputer(&outputPkg.Standard{}),
53+
},
54+
want: &cobra.Command{},
55+
cmdFunc: func(t *testing.T, c *cobra.Command) {
56+
root := c.Root()
57+
out := &bytes.Buffer{}
58+
root.SetArgs([]string{subCommand, "get", "-i", "e9a969b3-8911-4667-9d99-57cd3dd4ef6f"})
59+
root.SetOutput(out)
60+
err := root.Execute()
61+
assert.NoError(t, err)
62+
},
63+
},
64+
{
65+
name: "get",
66+
fields: fields{
67+
MainCmd: NewClient(rootClient, outputPkg.Outputer(&outputPkg.Standard{})).NewCommand(),
68+
Outputer: outputPkg.Outputer(&outputPkg.Standard{}),
69+
},
70+
want: &cobra.Command{},
71+
cmdFunc: func(t *testing.T, c *cobra.Command) {
72+
root := c.Root()
73+
out := &bytes.Buffer{}
74+
root.SetArgs([]string{subCommand, "get", "-o", "c079178c-9557-48f2-9ce7-cfb927b81928"})
75+
root.SetOutput(out)
76+
err := root.Execute()
77+
assert.NoError(t, err)
78+
},
79+
},
80+
{
81+
name: "get",
82+
fields: fields{
83+
MainCmd: NewClient(rootClient, outputPkg.Outputer(&outputPkg.Standard{})).NewCommand(),
84+
Outputer: outputPkg.Outputer(&outputPkg.Standard{}),
85+
},
86+
want: &cobra.Command{},
87+
cmdFunc: func(t *testing.T, c *cobra.Command) {
88+
root := c.Root()
89+
out := &bytes.Buffer{}
90+
root.SetArgs([]string{subCommand, "get", "-p", "1867ee8f-6a11-470a-9505-952d6a324040"})
91+
root.SetOutput(out)
92+
err := root.Execute()
93+
assert.NoError(t, err)
94+
},
95+
},
96+
{
97+
name: "get",
98+
fields: fields{
99+
MainCmd: NewClient(rootClient, outputPkg.Outputer(&outputPkg.Standard{})).NewCommand(),
100+
Outputer: outputPkg.Outputer(&outputPkg.Standard{}),
101+
},
102+
want: &cobra.Command{},
103+
cmdFunc: func(t *testing.T, c *cobra.Command) {
104+
root := c.Root()
105+
out := &bytes.Buffer{}
106+
root.SetArgs([]string{subCommand, "get", "-d", "ca614540-fbd4-4dbb-9689-457c6ccc8353"})
107+
root.SetOutput(out)
108+
err := root.Execute()
109+
assert.NoError(t, err)
110+
},
111+
},
112+
}
113+
for _, tt := range tests {
114+
t.Run(tt.name, func(t *testing.T) {
115+
rootCmd := rootClient.NewCommand()
116+
rootCmd.AddCommand(tt.fields.MainCmd)
117+
tt.cmdFunc(t, tt.fields.MainCmd)
118+
})
119+
}
120+
}

internal/events/retrieve.go

+15-11
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ func (c *Client) Retrieve() *cobra.Command {
5959
var err error
6060
header := []string{"ID", "Body", "Type", "Created"}
6161
inc := []string{}
62-
exc := []string{}
6362

6463
// only fetch extra details when rendered
6564
switch c.Servicer.Format() {
@@ -70,34 +69,39 @@ func (c *Client) Retrieve() *cobra.Command {
7069
if deviceID != "" && projectID != "" && organizationID != "" && eventID != "" {
7170
return fmt.Errorf("id, project-id, device-id, and organization-id parameters are mutually exclusive")
7271
} else if deviceID != "" {
73-
events, err = pager.GetDeviceEvents(c.EventService, deviceID, inc, exc)
72+
deviceRequest := c.EventService.FindDeviceEvents(context.Background(), deviceID).Include(c.Servicer.Includes(inc)).Exclude(c.Servicer.Excludes(nil))
73+
events, err = pager.GetDeviceEvents(deviceRequest)
7474
if err != nil {
75-
return fmt.Errorf("Could not list Device Events: %w", err)
75+
return fmt.Errorf("could not list Device Events: %w", err)
7676
}
7777
} else if projectID != "" {
78-
events, err = pager.GetProjectEvents(c.EventService, projectID, inc, exc)
78+
projRequest := c.EventService.FindProjectEvents(context.Background(), projectID).Include(c.Servicer.Includes(inc)).Exclude(c.Servicer.Excludes(nil))
79+
events, err = pager.GetProjectEvents(projRequest)
7980
if err != nil {
80-
return fmt.Errorf("Could not list Project Events: %w", err)
81+
return fmt.Errorf("could not list Project Events: %w", err)
8182
}
8283
} else if organizationID != "" {
83-
events, err = pager.GetOrganizationEvents(c.EventService, organizationID, inc, exc)
84+
85+
orgRequest := c.EventService.FindOrganizationEvents(context.Background(), organizationID).Include(c.Servicer.Includes(inc)).Exclude(c.Servicer.Excludes(nil))
86+
events, err = pager.GetOrganizationEvents(orgRequest)
8487
if err != nil {
85-
return fmt.Errorf("Could not list Organization Events: %w", err)
88+
return fmt.Errorf("could not list Organization Events: %w", err)
8689
}
8790
} else if eventID != "" {
88-
event, _, err := c.EventService.FindEventById(context.Background(), eventID).Include(inc).Exclude(exc).Execute()
91+
event, _, err := c.EventService.FindEventById(context.Background(), eventID).Include(c.Servicer.Includes(inc)).Exclude(c.Servicer.Excludes(nil)).Execute()
8992
if err != nil {
90-
return fmt.Errorf("Could not get Event: %w", err)
93+
return fmt.Errorf("could not get Event: %w", err)
9194
}
9295

9396
data := make([][]string, 1)
9497

9598
data[0] = []string{event.GetId(), event.GetBody(), event.GetType(), event.GetCreatedAt().String()}
9699
return c.Out.Output(event, header, &data)
97100
} else {
98-
events, err = pager.GetAllEvents(c.EventService, inc, exc)
101+
request := c.EventService.FindEvents(context.Background()).Include(c.Servicer.Includes(inc)).Exclude(c.Servicer.Excludes(nil))
102+
events, err = pager.GetAllEvents(request)
99103
if err != nil {
100-
return fmt.Errorf("Could not list Events: %w", err)
104+
return fmt.Errorf("could not list Events: %w", err)
101105
}
102106
}
103107

internal/pagination/pager.go

+8-9
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ func GetAllProjects(s metal.ProjectsApiService, include []string, exclude []stri
2525
}
2626
}
2727

28-
func GetDeviceEvents(s metal.EventsApiService, deviceId string, include []string, exclude []string) ([]metal.Event, error) {
28+
func GetDeviceEvents(s metal.ApiFindDeviceEventsRequest) ([]metal.Event, error) {
2929
var events []metal.Event
3030

3131
page := int32(1) // int32 | Page to return (optional) (default to 1)
3232
perPage := int32(20) // int32 | Items returned per page (optional) (default to 10)
3333

3434
for {
35-
eventsPage, _, err := s.FindDeviceEvents(context.Background(), deviceId).Include(include).Exclude(exclude).Page(page).PerPage(perPage).Execute()
35+
eventsPage, _, err := s.Page(page).PerPage(perPage).Execute()
3636
if err != nil {
3737
return nil, err
3838
}
@@ -46,14 +46,14 @@ func GetDeviceEvents(s metal.EventsApiService, deviceId string, include []string
4646
}
4747
}
4848

49-
func GetProjectEvents(s metal.EventsApiService, projectId string, include []string, exclude []string) ([]metal.Event, error) {
49+
func GetProjectEvents(s metal.ApiFindProjectEventsRequest) ([]metal.Event, error) {
5050
var events []metal.Event
5151

5252
page := int32(1) // int32 | Page to return (optional) (default to 1)
5353
perPage := int32(20) // int32 | Items returned per page (optional) (default to 10)
5454

5555
for {
56-
eventsPage, _, err := s.FindProjectEvents(context.Background(), projectId).Include(include).Exclude(exclude).Page(page).PerPage(perPage).Execute()
56+
eventsPage, _, err := s.Page(page).PerPage(perPage).Execute()
5757
if err != nil {
5858
return nil, err
5959
}
@@ -67,14 +67,14 @@ func GetProjectEvents(s metal.EventsApiService, projectId string, include []stri
6767
}
6868
}
6969

70-
func GetOrganizationEvents(s metal.EventsApiService, orgId string, include []string, exclude []string) ([]metal.Event, error) {
70+
func GetOrganizationEvents(s metal.ApiFindOrganizationEventsRequest) ([]metal.Event, error) {
7171
var events []metal.Event
7272

7373
page := int32(1) // int32 | Page to return (optional) (default to 1)
7474
perPage := int32(20) // int32 | Items returned per page (optional) (default to 10)
7575

7676
for {
77-
eventsPage, _, err := s.FindOrganizationEvents(context.Background(), orgId).Include(include).Exclude(exclude).Page(page).PerPage(perPage).Execute()
77+
eventsPage, _, err := s.Page(page).PerPage(perPage).Execute()
7878
if err != nil {
7979
return nil, err
8080
}
@@ -88,14 +88,13 @@ func GetOrganizationEvents(s metal.EventsApiService, orgId string, include []str
8888
}
8989
}
9090

91-
func GetAllEvents(s metal.EventsApiService, include []string, exclude []string) ([]metal.Event, error) {
91+
func GetAllEvents(s metal.ApiFindEventsRequest) ([]metal.Event, error) {
9292
var events []metal.Event
9393

9494
page := int32(1) // int32 | Page to return (optional) (default to 1)
9595
perPage := int32(20) // int32 | Items returned per page (optional) (default to 10)
96-
9796
for {
98-
eventsPage, _, err := s.FindEvents(context.Background()).Include(include).Exclude(exclude).Page(page).PerPage(perPage).Execute()
97+
eventsPage, _, err := s.Page(page).PerPage(perPage).Execute()
9998
if err != nil {
10099
return nil, err
101100
}

0 commit comments

Comments
 (0)