1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | const upgrade = require("./upgrade");
|
8 | const models = require("@conversationlearner/models");
|
9 | describe('upgrade', () => {
|
10 | describe('getActionPayload', () => {
|
11 | test('given single arguments payload callback with argument moved to either logic or render function return a new payload with argument in respective arguments list', () => {
|
12 |
|
13 | const legacyActionPayload = {
|
14 | payload: 'payload',
|
15 | arguments: [
|
16 | {
|
17 | parameter: "logicArg",
|
18 | value: {
|
19 | json: {}
|
20 | }
|
21 | },
|
22 | {
|
23 | parameter: "renderArg",
|
24 | value: {
|
25 | json: {}
|
26 | }
|
27 | },
|
28 | {
|
29 | parameter: "sharedArg",
|
30 | value: {
|
31 | json: {}
|
32 | }
|
33 | }
|
34 | ]
|
35 | };
|
36 | const callback = {
|
37 | name: "myCallback",
|
38 | logicArguments: [
|
39 | "logicArg",
|
40 | "sharedArg"
|
41 | ],
|
42 | isLogicFunctionProvided: true,
|
43 | renderArguments: [
|
44 | "renderArg",
|
45 | "sharedArg"
|
46 | ],
|
47 | isRenderFunctionProvided: true
|
48 | };
|
49 |
|
50 | const actionPayload = upgrade.getActionPayload(legacyActionPayload, callback);
|
51 |
|
52 | expect(actionPayload.payload).toEqual(legacyActionPayload.payload);
|
53 | expect(actionPayload.logicArguments.some(la => la.parameter === legacyActionPayload.arguments[0].parameter)).toBeTruthy();
|
54 | });
|
55 | test('given single arguments payload callback with arguments not found in either logic or render it will be dropped', () => {
|
56 |
|
57 | const legacyActionPayload = {
|
58 | payload: 'payload',
|
59 | arguments: [
|
60 | {
|
61 | parameter: "arg1",
|
62 | value: {
|
63 | json: {}
|
64 | }
|
65 | }
|
66 | ]
|
67 | };
|
68 | const callback = {
|
69 | name: "myCallback",
|
70 | logicArguments: [],
|
71 | isLogicFunctionProvided: true,
|
72 | renderArguments: [],
|
73 | isRenderFunctionProvided: true,
|
74 | };
|
75 |
|
76 | const actionPayload = upgrade.getActionPayload(legacyActionPayload, callback);
|
77 |
|
78 | expect(actionPayload.payload).toEqual(legacyActionPayload.payload);
|
79 | expect(actionPayload.logicArguments.some(la => la.parameter === legacyActionPayload.arguments[0].parameter)).toBeFalsy();
|
80 | expect(actionPayload.renderArguments.some(la => la.parameter === legacyActionPayload.arguments[0].parameter)).toBeFalsy();
|
81 | });
|
82 | });
|
83 | describe('getActionChangeResult', () => {
|
84 | test('given a action without need to be changed, return it unmodified with no changes', () => {
|
85 |
|
86 | const action = {
|
87 | actionId: 'fakeActionId',
|
88 | actionType: models.ActionTypes.API_LOCAL,
|
89 | createdDateTime: new Date().toJSON(),
|
90 | isTerminal: false,
|
91 | negativeEntities: [],
|
92 | negativeConditions: [],
|
93 | payload: JSON.stringify({
|
94 | payload: "myCallback",
|
95 | logicArguments: [
|
96 | {
|
97 | parameter: "someArg",
|
98 | value: {
|
99 | json: {}
|
100 | }
|
101 | }
|
102 | ],
|
103 | renderArguments: [
|
104 | {
|
105 | parameter: "otherArg",
|
106 | value: {
|
107 | json: {}
|
108 | }
|
109 | }
|
110 | ]
|
111 | }),
|
112 | requiredEntities: [],
|
113 | requiredConditions: [],
|
114 | requiredEntitiesFromPayload: [],
|
115 | suggestedEntity: null,
|
116 | version: 0,
|
117 | packageCreationId: 0,
|
118 | packageDeletionId: 0
|
119 | };
|
120 | const callbackMap = {};
|
121 |
|
122 | const defaultActionChangeResult = upgrade.getDefaultChangeResult(action);
|
123 | const actionChangeResult = upgrade.getActionChangeResult(action, callbackMap);
|
124 |
|
125 | expect(actionChangeResult).toEqual(defaultActionChangeResult);
|
126 | });
|
127 | test('given an old action return it with list of change descriptions', () => {
|
128 |
|
129 | const action = {
|
130 | actionId: 'fakeActionId',
|
131 | actionType: models.ActionTypes.API_LOCAL,
|
132 | createdDateTime: new Date().toJSON(),
|
133 | isTerminal: false,
|
134 | negativeEntities: [],
|
135 | negativeConditions: [],
|
136 | payload: JSON.stringify({
|
137 | payload: "myCallback",
|
138 | arguments: [
|
139 | {
|
140 | parameter: "logicArg",
|
141 | value: {
|
142 | json: {}
|
143 | }
|
144 | },
|
145 | {
|
146 | parameter: "renderArg",
|
147 | value: {
|
148 | json: {}
|
149 | }
|
150 | }
|
151 | ]
|
152 | }),
|
153 | requiredEntities: [],
|
154 | requiredConditions: [],
|
155 | requiredEntitiesFromPayload: [],
|
156 | suggestedEntity: null,
|
157 | version: 0,
|
158 | packageCreationId: 0,
|
159 | packageDeletionId: 0
|
160 | };
|
161 | const callbackMap = {};
|
162 |
|
163 | const actionChangeResult = upgrade.getActionChangeResult(action, callbackMap);
|
164 |
|
165 | expect(actionChangeResult.isChanged).toBe(true);
|
166 | expect(actionChangeResult.changes.length).toBeGreaterThan(0);
|
167 | });
|
168 | });
|
169 | describe('getAppDefinitionChange', () => {
|
170 | test('given app definition without changes return object as is without changes', () => {
|
171 |
|
172 | const appDefinition = {
|
173 | actions: [],
|
174 | entities: [],
|
175 | trainDialogs: []
|
176 | };
|
177 |
|
178 | const appChange = upgrade.default(appDefinition, {});
|
179 |
|
180 | expect(appChange.isChanged).toBe(false);
|
181 | expect(appChange.currentAppDefinition).toEqual(appDefinition);
|
182 | });
|
183 | test('given app definition without changes return object as is without changes', () => {
|
184 |
|
185 | const action = {
|
186 | actionId: 'fakeActionId',
|
187 | actionType: models.ActionTypes.API_LOCAL,
|
188 | createdDateTime: new Date().toJSON(),
|
189 | isTerminal: false,
|
190 | negativeEntities: [],
|
191 | negativeConditions: [],
|
192 | payload: JSON.stringify({
|
193 | payload: "myCallback",
|
194 | arguments: [
|
195 | {
|
196 | parameter: "logicArg",
|
197 | value: {
|
198 | json: {}
|
199 | }
|
200 | },
|
201 | {
|
202 | parameter: "renderArg",
|
203 | value: {
|
204 | json: {}
|
205 | }
|
206 | }
|
207 | ]
|
208 | }),
|
209 | requiredEntities: [],
|
210 | requiredConditions: [],
|
211 | requiredEntitiesFromPayload: [],
|
212 | suggestedEntity: null,
|
213 | version: 0,
|
214 | packageCreationId: 0,
|
215 | packageDeletionId: 0
|
216 | };
|
217 | const appDefinition = {
|
218 | actions: [
|
219 | action
|
220 | ],
|
221 | entities: [],
|
222 | trainDialogs: []
|
223 | };
|
224 |
|
225 | const appChange = upgrade.default(appDefinition, {});
|
226 |
|
227 | expect(appChange.isChanged).toBe(true);
|
228 | expect(appChange.currentAppDefinition).toEqual(appDefinition);
|
229 | });
|
230 | });
|
231 | });
|
232 |
|
\ | No newline at end of file |