Skip to content

Commit 1925071

Browse files
committed
test: expand mock tests for odata, rest, businessevents, workflows, javascript_actions
1 parent 6b9eec0 commit 1925071

6 files changed

Lines changed: 237 additions & 0 deletions

mdl/executor/cmd_businessevents_mock_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,36 @@ func TestDescribeBusinessEventService_Mock(t *testing.T) {
7777
assertContainsStr(t, out, "create or replace business event service")
7878
assertContainsStr(t, out, "MyModule.OrderEvents")
7979
}
80+
81+
func TestDescribeBusinessEventService_NotFound(t *testing.T) {
82+
mb := &mock.MockBackend{
83+
IsConnectedFunc: func() bool { return true },
84+
ListBusinessEventServicesFunc: func() ([]*model.BusinessEventService, error) {
85+
return nil, nil
86+
},
87+
}
88+
ctx, _ := newMockCtx(t, withBackend(mb))
89+
assertError(t, describeBusinessEventService(ctx, ast.QualifiedName{Module: "X", Name: "NoSuch"}))
90+
}
91+
92+
func TestShowBusinessEventServices_FilterByModule(t *testing.T) {
93+
mod := mkModule("Orders")
94+
svc := &model.BusinessEventService{
95+
BaseElement: model.BaseElement{ID: nextID("bes")},
96+
ContainerID: mod.ID,
97+
Name: "OrderEvents",
98+
}
99+
h := mkHierarchy(mod)
100+
withContainer(h, svc.ContainerID, mod.ID)
101+
102+
mb := &mock.MockBackend{
103+
IsConnectedFunc: func() bool { return true },
104+
ListBusinessEventServicesFunc: func() ([]*model.BusinessEventService, error) {
105+
return []*model.BusinessEventService{svc}, nil
106+
},
107+
}
108+
109+
ctx, buf := newMockCtx(t, withBackend(mb), withHierarchy(h))
110+
assertNoError(t, listBusinessEventServices(ctx, "Orders"))
111+
assertContainsStr(t, buf.String(), "Orders.OrderEvents")
112+
}

mdl/executor/cmd_javascript_actions_mock_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package executor
44

55
import (
6+
"fmt"
67
"testing"
78

89
"github.com/mendixlabs/mxcli/mdl/ast"
@@ -57,3 +58,36 @@ func TestDescribeJavaScriptAction_Mock(t *testing.T) {
5758
out := buf.String()
5859
assertContainsStr(t, out, "create javascript action")
5960
}
61+
62+
func TestDescribeJavaScriptAction_NotFound(t *testing.T) {
63+
mb := &mock.MockBackend{
64+
IsConnectedFunc: func() bool { return true },
65+
ReadJavaScriptActionByNameFunc: func(qn string) (*types.JavaScriptAction, error) {
66+
return nil, fmt.Errorf("not found: %s", qn)
67+
},
68+
}
69+
ctx, _ := newMockCtx(t, withBackend(mb))
70+
assertError(t, describeJavaScriptAction(ctx, ast.QualifiedName{Module: "X", Name: "NoSuch"}))
71+
}
72+
73+
func TestShowJavaScriptActions_FilterByModule(t *testing.T) {
74+
mod := mkModule("WebMod")
75+
jsa := &types.JavaScriptAction{
76+
BaseElement: model.BaseElement{ID: nextID("jsa")},
77+
ContainerID: mod.ID,
78+
Name: "ShowAlert",
79+
Platform: "Web",
80+
}
81+
82+
h := mkHierarchy(mod)
83+
withContainer(h, jsa.ContainerID, mod.ID)
84+
85+
mb := &mock.MockBackend{
86+
IsConnectedFunc: func() bool { return true },
87+
ListJavaScriptActionsFunc: func() ([]*types.JavaScriptAction, error) { return []*types.JavaScriptAction{jsa}, nil },
88+
}
89+
90+
ctx, buf := newMockCtx(t, withBackend(mb), withHierarchy(h))
91+
assertNoError(t, listJavaScriptActions(ctx, "WebMod"))
92+
assertContainsStr(t, buf.String(), "WebMod.ShowAlert")
93+
}

mdl/executor/cmd_odata_mock_test.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,71 @@ func TestDescribeODataClient_Mock(t *testing.T) {
9696
assertContainsStr(t, out, "2.0")
9797
}
9898

99+
func TestDescribeODataClient_NotFound(t *testing.T) {
100+
mb := &mock.MockBackend{
101+
IsConnectedFunc: func() bool { return true },
102+
ListConsumedODataServicesFunc: func() ([]*model.ConsumedODataService, error) {
103+
return nil, nil
104+
},
105+
}
106+
ctx, _ := newMockCtx(t, withBackend(mb))
107+
assertError(t, describeODataClient(ctx, ast.QualifiedName{Module: "MyModule", Name: "NoSuch"}))
108+
}
109+
110+
func TestShowODataClients_FilterByModule(t *testing.T) {
111+
mod1 := mkModule("Alpha")
112+
mod2 := mkModule("Beta")
113+
svc1 := &model.ConsumedODataService{
114+
BaseElement: model.BaseElement{ID: nextID("cos")},
115+
ContainerID: mod1.ID,
116+
Name: "AlphaSvc",
117+
}
118+
svc2 := &model.ConsumedODataService{
119+
BaseElement: model.BaseElement{ID: nextID("cos")},
120+
ContainerID: mod2.ID,
121+
Name: "BetaSvc",
122+
}
123+
h := mkHierarchy(mod1, mod2)
124+
withContainer(h, svc1.ContainerID, mod1.ID)
125+
withContainer(h, svc2.ContainerID, mod2.ID)
126+
127+
mb := &mock.MockBackend{
128+
IsConnectedFunc: func() bool { return true },
129+
ListConsumedODataServicesFunc: func() ([]*model.ConsumedODataService, error) {
130+
return []*model.ConsumedODataService{svc1, svc2}, nil
131+
},
132+
}
133+
134+
ctx, buf := newMockCtx(t, withBackend(mb), withHierarchy(h))
135+
assertNoError(t, listODataClients(ctx, "Alpha"))
136+
137+
out := buf.String()
138+
assertContainsStr(t, out, "Alpha.AlphaSvc")
139+
assertNotContainsStr(t, out, "Beta.BetaSvc")
140+
}
141+
142+
func TestShowODataServices_FilterByModule(t *testing.T) {
143+
mod := mkModule("Sales")
144+
svc := &model.PublishedODataService{
145+
BaseElement: model.BaseElement{ID: nextID("pos")},
146+
ContainerID: mod.ID,
147+
Name: "SalesSvc",
148+
}
149+
h := mkHierarchy(mod)
150+
withContainer(h, svc.ContainerID, mod.ID)
151+
152+
mb := &mock.MockBackend{
153+
IsConnectedFunc: func() bool { return true },
154+
ListPublishedODataServicesFunc: func() ([]*model.PublishedODataService, error) {
155+
return []*model.PublishedODataService{svc}, nil
156+
},
157+
}
158+
159+
ctx, buf := newMockCtx(t, withBackend(mb), withHierarchy(h))
160+
assertNoError(t, listODataServices(ctx, "Sales"))
161+
assertContainsStr(t, buf.String(), "Sales.SalesSvc")
162+
}
163+
99164
func TestDescribeODataService_Mock(t *testing.T) {
100165
mod := mkModule("MyModule")
101166
svc := &model.PublishedODataService{
@@ -124,3 +189,14 @@ func TestDescribeODataService_Mock(t *testing.T) {
124189
assertContainsStr(t, out, "create odata service")
125190
assertContainsStr(t, out, "MyModule.CatalogService")
126191
}
192+
193+
func TestDescribeODataService_NotFound(t *testing.T) {
194+
mb := &mock.MockBackend{
195+
IsConnectedFunc: func() bool { return true },
196+
ListPublishedODataServicesFunc: func() ([]*model.PublishedODataService, error) {
197+
return nil, nil
198+
},
199+
}
200+
ctx, _ := newMockCtx(t, withBackend(mb))
201+
assertError(t, describeODataService(ctx, ast.QualifiedName{Module: "X", Name: "NoSuch"}))
202+
}

mdl/executor/cmd_published_rest_mock_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,37 @@ func TestDescribePublishedRestService_Mock(t *testing.T) {
6868
assertContainsStr(t, out, "create published rest service")
6969
assertContainsStr(t, out, "MyModule.OrderAPI")
7070
}
71+
72+
func TestDescribePublishedRestService_NotFound(t *testing.T) {
73+
mb := &mock.MockBackend{
74+
IsConnectedFunc: func() bool { return true },
75+
ListPublishedRestServicesFunc: func() ([]*model.PublishedRestService, error) {
76+
return nil, nil
77+
},
78+
}
79+
ctx, _ := newMockCtx(t, withBackend(mb))
80+
assertError(t, describePublishedRestService(ctx, ast.QualifiedName{Module: "X", Name: "NoSuch"}))
81+
}
82+
83+
func TestShowPublishedRestServices_FilterByModule(t *testing.T) {
84+
mod := mkModule("Sales")
85+
svc := &model.PublishedRestService{
86+
BaseElement: model.BaseElement{ID: nextID("prs")},
87+
ContainerID: mod.ID,
88+
Name: "SalesAPI",
89+
Path: "/rest/sales/v1",
90+
}
91+
h := mkHierarchy(mod)
92+
withContainer(h, svc.ContainerID, mod.ID)
93+
94+
mb := &mock.MockBackend{
95+
IsConnectedFunc: func() bool { return true },
96+
ListPublishedRestServicesFunc: func() ([]*model.PublishedRestService, error) {
97+
return []*model.PublishedRestService{svc}, nil
98+
},
99+
}
100+
101+
ctx, buf := newMockCtx(t, withBackend(mb), withHierarchy(h))
102+
assertNoError(t, listPublishedRestServices(ctx, "Sales"))
103+
assertContainsStr(t, buf.String(), "Sales.SalesAPI")
104+
}

mdl/executor/cmd_rest_clients_mock_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,37 @@ func TestDescribeRestClient_Mock(t *testing.T) {
6161
assertContainsStr(t, out, "create rest client")
6262
assertContainsStr(t, out, "MyModule.WeatherAPI")
6363
}
64+
65+
func TestDescribeRestClient_NotFound(t *testing.T) {
66+
mb := &mock.MockBackend{
67+
IsConnectedFunc: func() bool { return true },
68+
ListConsumedRestServicesFunc: func() ([]*model.ConsumedRestService, error) {
69+
return nil, nil
70+
},
71+
}
72+
ctx, _ := newMockCtx(t, withBackend(mb))
73+
assertError(t, describeRestClient(ctx, ast.QualifiedName{Module: "X", Name: "NoSuch"}))
74+
}
75+
76+
func TestShowRestClients_FilterByModule(t *testing.T) {
77+
mod := mkModule("Integrations")
78+
svc := &model.ConsumedRestService{
79+
BaseElement: model.BaseElement{ID: nextID("crs")},
80+
ContainerID: mod.ID,
81+
Name: "PaymentAPI",
82+
BaseUrl: "https://api.payment.com",
83+
}
84+
h := mkHierarchy(mod)
85+
withContainer(h, svc.ContainerID, mod.ID)
86+
87+
mb := &mock.MockBackend{
88+
IsConnectedFunc: func() bool { return true },
89+
ListConsumedRestServicesFunc: func() ([]*model.ConsumedRestService, error) {
90+
return []*model.ConsumedRestService{svc}, nil
91+
},
92+
}
93+
94+
ctx, buf := newMockCtx(t, withBackend(mb), withHierarchy(h))
95+
assertNoError(t, listRestClients(ctx, "Integrations"))
96+
assertContainsStr(t, buf.String(), "Integrations.PaymentAPI")
97+
}

mdl/executor/cmd_workflows_mock_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,29 @@ func TestDescribeWorkflow_Mock(t *testing.T) {
5050
assertContainsStr(t, out, "workflow")
5151
assertContainsStr(t, out, "Sales.ApproveOrder")
5252
}
53+
54+
func TestDescribeWorkflow_NotFound(t *testing.T) {
55+
mb := &mock.MockBackend{
56+
IsConnectedFunc: func() bool { return true },
57+
ListWorkflowsFunc: func() ([]*workflows.Workflow, error) { return nil, nil },
58+
}
59+
ctx, _ := newMockCtx(t, withBackend(mb))
60+
assertError(t, describeWorkflow(ctx, ast.QualifiedName{Module: "X", Name: "NoSuch"}))
61+
}
62+
63+
func TestShowWorkflows_FilterByModule(t *testing.T) {
64+
mod := mkModule("Sales")
65+
wf := mkWorkflow(mod.ID, "ApproveOrder")
66+
67+
h := mkHierarchy(mod)
68+
withContainer(h, wf.ContainerID, mod.ID)
69+
70+
mb := &mock.MockBackend{
71+
IsConnectedFunc: func() bool { return true },
72+
ListWorkflowsFunc: func() ([]*workflows.Workflow, error) { return []*workflows.Workflow{wf}, nil },
73+
}
74+
75+
ctx, buf := newMockCtx(t, withBackend(mb), withHierarchy(h))
76+
assertNoError(t, listWorkflows(ctx, "Sales"))
77+
assertContainsStr(t, buf.String(), "Sales.ApproveOrder")
78+
}

0 commit comments

Comments
 (0)