@progress/sitefinity-webservices-sdk 0.3.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc.js +19 -0
  3. package/ci/pipelines/ci.yml +219 -0
  4. package/config/helpers.js +0 -6
  5. package/config/webpack.common.js +1 -3
  6. package/config/webpack.dev.js +2 -9
  7. package/config/webpack.prod.js +5 -6
  8. package/dist/docs/.nojekyll +1 -0
  9. package/dist/docs/assets/highlight.css +57 -0
  10. package/dist/docs/assets/icons.css +1043 -0
  11. package/dist/docs/assets/icons.png +0 -0
  12. package/dist/docs/assets/icons@2x.png +0 -0
  13. package/dist/docs/assets/main.js +52 -0
  14. package/dist/docs/assets/search.js +1 -0
  15. package/dist/docs/assets/style.css +1413 -0
  16. package/dist/docs/assets/{images/widgets.png → widgets.png} +0 -0
  17. package/dist/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
  18. package/dist/docs/classes/BlobBuilder.BlobBuilder-1.html +7 -0
  19. package/dist/docs/classes/Data.Data-1.html +65 -0
  20. package/dist/docs/classes/Expression.BinaryExpression.html +1 -0
  21. package/dist/docs/classes/Expression.ComplexExpression.html +1 -0
  22. package/dist/docs/classes/Expression.ExpressionBase.html +1 -0
  23. package/dist/docs/classes/OrderProperty.OrderProperty-1.html +1 -0
  24. package/dist/docs/classes/Query.Query-1.html +33 -0
  25. package/dist/docs/classes/QueryBase.QueryBase-1.html +7 -0
  26. package/dist/docs/classes/QueryBuilder.QueryBuilder-1.html +1 -0
  27. package/dist/docs/classes/Requests_BatchRequest.BatchRequest.html +17 -0
  28. package/dist/docs/classes/Requests_BatchRequest.Transaction.html +17 -0
  29. package/dist/docs/classes/Requests_ExecutableRequest.ExecutableRequest.html +1 -0
  30. package/dist/docs/classes/Requests_Request.CreateRelatedRequest.html +1 -0
  31. package/dist/docs/classes/Requests_Request.CreateRequest.html +1 -0
  32. package/dist/docs/classes/Requests_Request.DeleteRelatedByIdRequest.html +1 -0
  33. package/dist/docs/classes/Requests_Request.DeleteRelatedRequest.html +1 -0
  34. package/dist/docs/classes/Requests_Request.DeleteRequest.html +1 -0
  35. package/dist/docs/classes/Requests_Request.GetByIdRequest.html +1 -0
  36. package/dist/docs/classes/Requests_Request.GetRelatedByIdRequest.html +1 -0
  37. package/dist/docs/classes/Requests_Request.GetRelatedRequest.html +1 -0
  38. package/dist/docs/classes/Requests_Request.GetRequest.html +1 -0
  39. package/dist/docs/classes/Requests_Request.UpdateRequest.html +1 -0
  40. package/dist/docs/classes/Requests_Request.UploadRequest.html +1 -0
  41. package/dist/docs/classes/Requests_RequestBase.RequestBase.html +1 -0
  42. package/dist/docs/classes/Requests_RequestFactory.RequestFactory.html +1 -0
  43. package/dist/docs/classes/Sitefinity.Sitefinity-1.html +5 -0
  44. package/dist/docs/classes/WhereQuery.WhereQuery-1.html +31 -0
  45. package/dist/docs/classes/utils.utils-1.html +1 -0
  46. package/dist/docs/index.html +54 -242
  47. package/dist/docs/interfaces/Data.CreateRelatedRequestOptions.html +1 -0
  48. package/dist/docs/interfaces/Data.CreateRequestOptions.html +1 -0
  49. package/dist/docs/interfaces/Data.OperationsRequestOptions.html +1 -0
  50. package/dist/docs/interfaces/Data.PropertyRequestOptions.html +1 -0
  51. package/dist/docs/interfaces/Data.RequestOptionsBase.html +1 -0
  52. package/dist/docs/interfaces/Data.SingleRelatedItemRequestOptions.html +1 -0
  53. package/dist/docs/interfaces/Data.UpdateRequestOptions.html +1 -0
  54. package/dist/docs/interfaces/Data.UploadRequestOptions.html +1 -0
  55. package/dist/docs/interfaces/Requests_BatchRequest.BatchCreateRelatedRequestOptions.html +1 -0
  56. package/dist/docs/interfaces/Requests_BatchRequest.BatchCreateRequestOptions.html +1 -0
  57. package/dist/docs/interfaces/Requests_BatchRequest.BatchPropertyRequestOptions.html +1 -0
  58. package/dist/docs/interfaces/Requests_BatchRequest.BatchRequestOptionsBase.html +1 -0
  59. package/dist/docs/interfaces/Requests_BatchRequest.BatchRequestOptionsExtended.html +1 -0
  60. package/dist/docs/interfaces/Requests_BatchRequest.BatchSingleItemRequestOptions.html +1 -0
  61. package/dist/docs/interfaces/Requests_BatchRequest.BatchSingleRelatedItemRequestOptions.html +1 -0
  62. package/dist/docs/interfaces/Requests_BatchRequest.BatchUpdateRequestOptions.html +1 -0
  63. package/dist/docs/interfaces/Requests_ExecutableRequest.ResponseHandlers.html +5 -0
  64. package/dist/docs/interfaces/Requests_Request.PostRequestOptionsExtended.html +1 -0
  65. package/dist/docs/interfaces/Requests_Request.PutRequestOptionsExtended.html +1 -0
  66. package/dist/docs/interfaces/Requests_Request.RelatedByIdRequestOptionsExtended.html +1 -0
  67. package/dist/docs/interfaces/Requests_Request.RelatedRequestOptionsExtended.html +1 -0
  68. package/dist/docs/interfaces/Requests_Request.UploadRequestOptionsExtended.html +1 -0
  69. package/dist/docs/interfaces/Requests_RequestBase.RequestOptionsBaseExtended.html +1 -0
  70. package/dist/docs/interfaces/Sitefinity.SDKOptions.html +9 -0
  71. package/dist/docs/interfaces/Sitefinity.Token.html +1 -0
  72. package/dist/docs/interfaces/Sitefinity.TypeOptions.html +13 -0
  73. package/dist/docs/modules/BlobBuilder.html +1 -0
  74. package/dist/docs/modules/Data.html +1 -0
  75. package/dist/docs/modules/Expression.html +1 -0
  76. package/dist/docs/modules/OrderProperty.html +1 -0
  77. package/dist/docs/modules/Query.html +1 -0
  78. package/dist/docs/modules/QueryBase.html +1 -0
  79. package/dist/docs/modules/QueryBuilder.html +1 -0
  80. package/dist/docs/modules/Requests_BatchRequest.html +1 -0
  81. package/dist/docs/modules/Requests_ExecutableRequest.html +1 -0
  82. package/dist/docs/modules/Requests_Request.html +1 -0
  83. package/dist/docs/modules/Requests_RequestBase.html +1 -0
  84. package/dist/docs/modules/Requests_RequestFactory.html +1 -0
  85. package/dist/docs/modules/Sitefinity.html +1 -0
  86. package/dist/docs/modules/WhereQuery.html +1 -0
  87. package/dist/docs/modules/constants.html +1 -0
  88. package/dist/docs/modules/utils.html +1 -0
  89. package/dist/docs/modules.html +1 -0
  90. package/dist/samples.html +33 -81
  91. package/dist/sitefinity-webservices-sdk.d.ts +16 -0
  92. package/dist/sitefinity-webservices-sdk.js +1139 -1738
  93. package/dist/sitefinity-webservices-sdk.js.map +1 -1
  94. package/dist/sitefinity-webservices-sdk.min.js +2 -16
  95. package/dist/sitefinity-webservices-sdk.min.js.LICENSE.txt +14 -0
  96. package/dist/src/BlobBuilder.d.ts +14 -0
  97. package/dist/src/Data.d.ts +144 -0
  98. package/dist/src/Expression.d.ts +19 -0
  99. package/dist/src/OrderProperty.d.ts +8 -0
  100. package/dist/src/Query.d.ts +59 -0
  101. package/dist/src/QueryBase.d.ts +18 -0
  102. package/dist/src/QueryBuilder.d.ts +13 -0
  103. package/dist/src/Requests/BatchRequest.d.ts +146 -0
  104. package/dist/src/Requests/ExecutableRequest.d.ts +20 -0
  105. package/dist/src/Requests/Request.d.ts +88 -0
  106. package/dist/src/Requests/RequestBase.d.ts +28 -0
  107. package/dist/src/Requests/RequestFactory.d.ts +22 -0
  108. package/dist/src/Sitefinity.d.ts +66 -0
  109. package/dist/src/WhereQuery.d.ts +68 -0
  110. package/dist/src/constants.d.ts +55 -0
  111. package/dist/src/utils.d.ts +16 -0
  112. package/karma.conf.js +29 -0
  113. package/package-lock.json +16108 -6805
  114. package/package.json +28 -10
  115. package/sitefinity-webservices-sdk.ts +16 -0
  116. package/src/BlobBuilder.ts +7 -12
  117. package/src/Data.spec.ts +160 -0
  118. package/src/Data.ts +132 -207
  119. package/src/Expression.ts +0 -1
  120. package/src/OrderProperty.ts +4 -5
  121. package/src/Query.ts +52 -78
  122. package/src/QueryBase.ts +21 -47
  123. package/src/QueryBuilder.ts +64 -82
  124. package/src/Requests/BatchRequest.ts +312 -335
  125. package/src/Requests/ExecutableRequest.ts +46 -73
  126. package/src/Requests/Request.ts +134 -260
  127. package/src/Requests/RequestBase.ts +161 -0
  128. package/src/Requests/RequestFactory.ts +36 -54
  129. package/src/Requests/request.spec.ts +108 -0
  130. package/src/Sitefinity.spec.ts +451 -0
  131. package/src/Sitefinity.ts +77 -146
  132. package/src/WhereQuery.ts +52 -112
  133. package/src/constants.ts +58 -39
  134. package/src/utils.ts +16 -16
  135. package/template.html +33 -35
  136. package/tsconfig.json +8 -1
  137. package/version.txt +1 -1
  138. package/config/html.conf.json +0 -5
  139. package/dist/docs/assets/css/main.css +0 -865
  140. package/dist/docs/assets/css/main.css.map +0 -7
  141. package/dist/docs/assets/images/icons.png +0 -0
  142. package/dist/docs/assets/images/icons@2x.png +0 -0
  143. package/dist/docs/assets/js/main.js +0 -5
  144. package/dist/docs/assets/js/search.js +0 -3
  145. package/dist/docs/classes/_authentication_.authentication.html +0 -527
  146. package/dist/docs/classes/_blobbuilder_.blobbuilder.html +0 -351
  147. package/dist/docs/classes/_data_.data.html +0 -974
  148. package/dist/docs/classes/_expression_.binaryexpression.html +0 -450
  149. package/dist/docs/classes/_expression_.complexexpression.html +0 -374
  150. package/dist/docs/classes/_expression_.expressionbase.html +0 -336
  151. package/dist/docs/classes/_orderproperty_.orderproperty.html +0 -381
  152. package/dist/docs/classes/_query_.query.html +0 -896
  153. package/dist/docs/classes/_querybase_.querybase.html +0 -518
  154. package/dist/docs/classes/_querybuilder_.querybuilder.html +0 -496
  155. package/dist/docs/classes/_requests_batchrequest_.batchrequest.html +0 -1511
  156. package/dist/docs/classes/_requests_batchrequest_.transaction.html +0 -804
  157. package/dist/docs/classes/_requests_executablerequest_.executablerequest.html +0 -549
  158. package/dist/docs/classes/_requests_request_.createrelatedrequest.html +0 -689
  159. package/dist/docs/classes/_requests_request_.createrequest.html +0 -680
  160. package/dist/docs/classes/_requests_request_.deleterelatedbyidrequest.html +0 -687
  161. package/dist/docs/classes/_requests_request_.deleterelatedrequest.html +0 -673
  162. package/dist/docs/classes/_requests_request_.deleterequest.html +0 -666
  163. package/dist/docs/classes/_requests_request_.getbyidrequest.html +0 -666
  164. package/dist/docs/classes/_requests_request_.getrelatedbyidrequest.html +0 -687
  165. package/dist/docs/classes/_requests_request_.getrelatedrequest.html +0 -673
  166. package/dist/docs/classes/_requests_request_.getrequest.html +0 -658
  167. package/dist/docs/classes/_requests_request_.requestbase.html +0 -687
  168. package/dist/docs/classes/_requests_request_.updaterequest.html +0 -686
  169. package/dist/docs/classes/_requests_request_.uploadrequest.html +0 -715
  170. package/dist/docs/classes/_requests_requestfactory_.requestfactory.html +0 -724
  171. package/dist/docs/classes/_sitefinity_.sitefinity.html +0 -521
  172. package/dist/docs/classes/_utils_.utils.html +0 -597
  173. package/dist/docs/classes/_wherequery_.wherequery.html +0 -992
  174. package/dist/docs/globals.html +0 -238
  175. package/dist/docs/modules/_authentication_.html +0 -225
  176. package/dist/docs/modules/_blobbuilder_.html +0 -225
  177. package/dist/docs/modules/_constants_.html +0 -528
  178. package/dist/docs/modules/_contenttypes_.html +0 -248
  179. package/dist/docs/modules/_data_.html +0 -225
  180. package/dist/docs/modules/_expression_.html +0 -233
  181. package/dist/docs/modules/_headers_.html +0 -328
  182. package/dist/docs/modules/_httpmethods_.html +0 -288
  183. package/dist/docs/modules/_main_.html +0 -209
  184. package/dist/docs/modules/_orderproperty_.html +0 -225
  185. package/dist/docs/modules/_query_.html +0 -225
  186. package/dist/docs/modules/_querybase_.html +0 -225
  187. package/dist/docs/modules/_querybuilder_.html +0 -247
  188. package/dist/docs/modules/_requests_batchrequest_.html +0 -265
  189. package/dist/docs/modules/_requests_executablerequest_.html +0 -296
  190. package/dist/docs/modules/_requests_request_.html +0 -333
  191. package/dist/docs/modules/_requests_requestfactory_.html +0 -247
  192. package/dist/docs/modules/_sitefinity_.html +0 -225
  193. package/dist/docs/modules/_utils_.html +0 -225
  194. package/dist/docs/modules/_wherequery_.html +0 -247
  195. package/dist/index.html +0 -474
  196. package/src/Authentication.ts +0 -96
  197. package/src/ContentTypes.ts +0 -5
  198. package/src/Headers.ts +0 -12
  199. package/src/HttpMethods.ts +0 -9
  200. package/src/main.ts +0 -2
@@ -0,0 +1,451 @@
1
+ import { SF_PARAMS, HEADER_NAMES } from "./constants";
2
+ import { ResponseHandlers } from "./Requests/ExecutableRequest";
3
+ import { Sitefinity } from "./Sitefinity";
4
+
5
+ describe("Base SDK tests", () => {
6
+ const baseUrl = "http://www.mysite.com/api/default/";
7
+ const batchResponse = `--batchresponse_ab4d3fab-5bee-4ea0-ba40-723ea40d1c32\r
8
+ Content-Type: application/http\r
9
+ Content-Transfer-Encoding: binary\r
10
+ \r
11
+ HTTP/1.1 200 OK\r
12
+ Cache-Control: no-store, must-revalidate, no-cache\r
13
+ Access-Control-Allow-Origin: *\r
14
+ Content-Type: text/plain\r
15
+ OData-Version: 4.0\r
16
+ \r
17
+ 1\r
18
+ --batchresponse_ab4d3fab-5bee-4ea0-ba40-723ea40d1c32--\r
19
+ `;
20
+ let sitefinity: Sitefinity;
21
+
22
+ beforeEach(() => {
23
+ jasmine.Ajax.install();
24
+ });
25
+
26
+ afterEach(() => {
27
+ jasmine.Ajax.uninstall();
28
+ });
29
+
30
+ beforeAll(() => {
31
+ sitefinity = new Sitefinity({
32
+ baseUrl
33
+ });
34
+ });
35
+
36
+ describe("SDK options tests", () => {
37
+ it("Verify baseUrl from SDK options wiht slash", () => {
38
+ const url = "/";
39
+ const sdk = new Sitefinity({
40
+ baseUrl: url
41
+ });
42
+ sdk.data({}).get({});
43
+
44
+ const request = jasmine.Ajax.requests.mostRecent();
45
+ expect(request.url).toBe(url);
46
+ });
47
+
48
+ it("Verify baseUrl from SDK options with relative path", () => {
49
+ const url = "/sub";
50
+ const sdk = new Sitefinity({
51
+ baseUrl: url
52
+ });
53
+ sdk.data({}).get({});
54
+
55
+ const request = jasmine.Ajax.requests.mostRecent();
56
+ expect(request.url).toBe(url + "/");
57
+ });
58
+
59
+ it("Verify baseUrl from SDK options with relative path and slash", () => {
60
+ const url = "/sub/";
61
+ const sdk = new Sitefinity({
62
+ baseUrl: url
63
+ });
64
+ sdk.data({}).get({});
65
+
66
+ const request = jasmine.Ajax.requests.mostRecent();
67
+ expect(request.url).toBe(url);
68
+ });
69
+
70
+ it("Verify baseUrl from SDK options", () => {
71
+ const url = "http://www.mysite.com/api/default/v2/";
72
+ const sdk = new Sitefinity({
73
+ baseUrl: url
74
+ });
75
+ sdk.data({}).get({});
76
+
77
+ const request = jasmine.Ajax.requests.mostRecent();
78
+ expect(request.url).toBe(url);
79
+ });
80
+
81
+ it("Verify siteId from SDK options", () => {
82
+ const siteId = "mySiteId";
83
+ const sdk = new Sitefinity({
84
+ baseUrl: "http://www.mysite.com/api/default/v2/",
85
+ siteId: siteId
86
+ });
87
+ sdk.data({}).get({});
88
+
89
+ const request = jasmine.Ajax.requests.mostRecent();
90
+ expect(request.url).toContain(`${SF_PARAMS.siteId}=${siteId}`);
91
+ });
92
+
93
+ it("Verify enableUnlimitedChoices from SDK options", () => {
94
+ let sdk = new Sitefinity({
95
+ baseUrl: "http://www.mysite.com/api/default/v2/",
96
+ enableUnlimitedChoices: true
97
+ });
98
+ sdk.data({}).get({});
99
+
100
+ let request = jasmine.Ajax.requests.mostRecent();
101
+ expect(request.requestHeaders[HEADER_NAMES.choicesBinaryRepresentation]).toBe("true");
102
+
103
+ sdk = new Sitefinity({
104
+ baseUrl: "http://www.mysite.com/api/default/v2/",
105
+ enableUnlimitedChoices: false
106
+ })
107
+ sdk.data({}).get({});
108
+
109
+ request = jasmine.Ajax.requests.mostRecent();
110
+ expect(request.requestHeaders[HEADER_NAMES.choicesBinaryRepresentation]).toBeUndefined();
111
+ });
112
+
113
+ it("Verify integrationMode from SDK options", () => {
114
+ let sdk = new Sitefinity({
115
+ baseUrl: "http://www.mysite.com/api/default/v2/",
116
+ integrationMode: true
117
+ });
118
+ sdk.data({}).get({});
119
+
120
+ let request = jasmine.Ajax.requests.mostRecent();
121
+ expect(request.requestHeaders[HEADER_NAMES.integrationMode]).toBe("true");
122
+
123
+ sdk = new Sitefinity({
124
+ baseUrl: "http://www.mysite.com/api/default/v2/",
125
+ integrationMode: false
126
+ })
127
+ sdk.data({}).get({});
128
+
129
+ request = jasmine.Ajax.requests.mostRecent();
130
+ expect(request.requestHeaders[HEADER_NAMES.integrationMode]).toBeUndefined();
131
+ });
132
+
133
+ it("Verify global success handler from SDK options", () => {
134
+ const handlers: ResponseHandlers = {
135
+ successCb: () => {},
136
+ failureCb: () => {}
137
+ };
138
+ const successSpy = spyOn<ResponseHandlers, any>(handlers, "successCb");
139
+ const failureSpy = spyOn<ResponseHandlers, any>(handlers, "failureCb");
140
+
141
+ const sdk = new Sitefinity({
142
+ baseUrl: "http://www.mysite.com/api/default/v2/",
143
+ handlers
144
+ });
145
+ sdk.data({}).get({});
146
+
147
+ const request = jasmine.Ajax.requests.mostRecent();
148
+ request.respondWith({
149
+ status: 200,
150
+ responseText: '{"message":"test"}'
151
+ });
152
+
153
+ expect(successSpy).toHaveBeenCalledOnceWith({ message: "test" });
154
+ expect(failureSpy).not.toHaveBeenCalled();
155
+ });
156
+
157
+ it("Verify global failure handler from SDK options", () => {
158
+ const handlers: ResponseHandlers = {
159
+ successCb: () => {},
160
+ failureCb: () => {}
161
+ };
162
+ const successSpy = spyOn<ResponseHandlers, any>(handlers, "successCb");
163
+ const failureSpy = spyOn<ResponseHandlers, any>(handlers, "failureCb");
164
+
165
+ const sdk = new Sitefinity({
166
+ baseUrl: "http://www.mysite.com/api/default/v2/",
167
+ handlers
168
+ });
169
+ sdk.data({}).get({});
170
+
171
+ const request = jasmine.Ajax.requests.mostRecent();
172
+ request.respondWith({
173
+ status: 400,
174
+ responseText: '{"message":"test"}'
175
+ });
176
+
177
+ expect(failureSpy).toHaveBeenCalledOnceWith({ message: "test", status: 400 });
178
+ expect(successSpy).not.toHaveBeenCalled();
179
+ });
180
+
181
+ it("Verify token", () => {
182
+ const sdk = new Sitefinity({
183
+ baseUrl: "http://www.mysite.com/api/default/v2/"
184
+ });
185
+ sdk.data({}).get({});
186
+
187
+ let request = jasmine.Ajax.requests.mostRecent();
188
+ expect(request.requestHeaders[HEADER_NAMES.authorization]).toBeUndefined();
189
+
190
+ sdk.setToken({
191
+ type: "Bearer",
192
+ value: "123"
193
+ });
194
+ sdk.data({}).get({});
195
+
196
+ request = jasmine.Ajax.requests.mostRecent();
197
+ expect(request.requestHeaders[HEADER_NAMES.authorization]).toBe("Bearer 123");
198
+ });
199
+ });
200
+
201
+ describe("Type options tests", () => {
202
+ describe("for data()", () => {
203
+ it("Verify baseUrl is appended trailing slash", () => {
204
+ const url = "http://www.mysite.com/api/default/v2";
205
+ sitefinity.data({
206
+ baseUrl: url
207
+ }).get({});
208
+
209
+ let request = jasmine.Ajax.requests.mostRecent();
210
+ expect(request.url).toBe(`${url}/`);
211
+
212
+ const sdk = new Sitefinity({
213
+ baseUrl: url
214
+ });
215
+ sdk.data({}).get({});
216
+
217
+ request = jasmine.Ajax.requests.mostRecent();
218
+ expect(request.url).toBe(`${url}/`);
219
+ });
220
+
221
+ it("Verify baseUrl from type options overrides baseUrl from SDK options", () => {
222
+ const url = "http://www.mysite.com/api/default/v2/";
223
+ sitefinity.data({
224
+ baseUrl: url
225
+ }).get({});
226
+
227
+ const request = jasmine.Ajax.requests.mostRecent();
228
+ expect(request.url).toBe(url);
229
+ });
230
+
231
+ it("Verify siteId from type options overrides siteId from SDK options", () => {
232
+ const siteId = "mySiteId";
233
+ const sdk = new Sitefinity({
234
+ baseUrl: "http://www.mysite.com/api/default/v2/",
235
+ siteId: "test"
236
+ });
237
+ sdk.data({
238
+ siteId
239
+ }).get({});
240
+
241
+ const request = jasmine.Ajax.requests.mostRecent();
242
+ expect(request.url).toContain(`${SF_PARAMS.siteId}=${siteId}`);
243
+ });
244
+
245
+ it("Verify entitySet from type options", () => {
246
+ const entitySet = "newsitems";
247
+
248
+ sitefinity.data({
249
+ entitySet
250
+ }).get({});
251
+
252
+ const request = jasmine.Ajax.requests.mostRecent();
253
+ expect(request.url).toBe(`${baseUrl}${entitySet}`);
254
+ });
255
+
256
+ it("Verify provider from type options", () => {
257
+ const provider = "myProvider";
258
+
259
+ sitefinity.data({
260
+ provider
261
+ }).get({});
262
+
263
+ const request = jasmine.Ajax.requests.mostRecent();
264
+ expect(request.url).toContain(`${SF_PARAMS.provider}=${provider}`);
265
+ });
266
+
267
+ it("Verify culture from type options", () => {
268
+ const culture = "en";
269
+
270
+ sitefinity.data({
271
+ culture
272
+ }).get({});
273
+
274
+ const request = jasmine.Ajax.requests.mostRecent();
275
+ expect(request.url).toContain(`${SF_PARAMS.culture}=${culture}`);
276
+ });
277
+
278
+ it("Verify additional query params from type options", () => {
279
+ const additionalQueryParams = {
280
+ "p1": "test1",
281
+ "p2": "123",
282
+ };
283
+
284
+ sitefinity.data({
285
+ additionalQueryParams
286
+ }).get({});
287
+
288
+ const request = jasmine.Ajax.requests.mostRecent();
289
+ expect(request.url).toContain(`p1=test1&p2=123`);
290
+ });
291
+ });
292
+
293
+ describe("for batch", () => {
294
+ it("Verify baseUrl is appended trailing slash", () => {
295
+ const url = "http://www.mysite.com/api/default/v2";
296
+ sitefinity.batch(undefined, undefined, undefined, {
297
+ baseUrl: url
298
+ }).execute();
299
+
300
+ let request = jasmine.Ajax.requests.mostRecent();
301
+ expect(request.url).toBe(`${url}/$batch`);
302
+
303
+ const sdk = new Sitefinity({
304
+ baseUrl: url
305
+ });
306
+ sdk.batch().execute();
307
+
308
+ request = jasmine.Ajax.requests.mostRecent();
309
+ expect(request.url).toBe(`${url}/$batch`);
310
+ });
311
+
312
+ it("Verify baseUrl from type options overrides baseUrl from SDK options", () => {
313
+ const url = "http://www.mysite.com/api/default/v2/";
314
+ sitefinity.batch(undefined, undefined, undefined, {
315
+ baseUrl: url
316
+ }).execute();
317
+
318
+ const request = jasmine.Ajax.requests.mostRecent();
319
+ expect(request.url).toBe(`${url}$batch`);
320
+ });
321
+
322
+ it("Verify siteId from type options overrides siteId from SDK options", () => {
323
+ const siteId = "mySiteId";
324
+ const sdk = new Sitefinity({
325
+ baseUrl: "http://www.mysite.com/api/default/v2/",
326
+ siteId: "test"
327
+ });
328
+ sdk.batch(undefined, undefined, undefined, {
329
+ siteId
330
+ }).execute();
331
+
332
+ const request = jasmine.Ajax.requests.mostRecent();
333
+ expect(request.url).toContain(`${SF_PARAMS.siteId}=${siteId}`);
334
+ });
335
+
336
+ it("Verify provider from type options", () => {
337
+ const provider = "myProvider";
338
+
339
+ sitefinity.batch(undefined, undefined, undefined, {
340
+ provider
341
+ }).execute();
342
+
343
+ const request = jasmine.Ajax.requests.mostRecent();
344
+ expect(request.url).toContain(`${SF_PARAMS.provider}=${provider}`);
345
+ });
346
+
347
+ it("Verify culture from type options", () => {
348
+ const culture = "en";
349
+
350
+ sitefinity.batch(undefined, undefined, undefined, {
351
+ culture
352
+ }).execute();
353
+
354
+ const request = jasmine.Ajax.requests.mostRecent();
355
+ expect(request.url).toContain(`${SF_PARAMS.culture}=${culture}`);
356
+ });
357
+
358
+ it("Verify additional query params from type options", () => {
359
+ const additionalQueryParams = {
360
+ "p1": "test1",
361
+ "p2": "123",
362
+ };
363
+
364
+ sitefinity.batch(undefined, undefined, undefined, {
365
+ additionalQueryParams
366
+ }).execute();
367
+
368
+ const request = jasmine.Ajax.requests.mostRecent();
369
+ expect(request.url).toContain(`p1=test1&p2=123`);
370
+ });
371
+
372
+ it("Verify successCb overrides global success handler from SDK options", () => {
373
+ const globalHandlers: ResponseHandlers = {
374
+ successCb: () => {},
375
+ failureCb: () => {}
376
+ };
377
+ const successSpyGlobal = spyOn<ResponseHandlers, any>(globalHandlers, "successCb");
378
+ const failureSpyGlobal = spyOn<ResponseHandlers, any>(globalHandlers, "failureCb");
379
+
380
+ const localHandlers = {
381
+ successCb: () => {},
382
+ failureCb: () => {}
383
+ };
384
+ const successSpyLocal = spyOn<ResponseHandlers, any>(localHandlers, "successCb");
385
+ const failureSpyLocal = spyOn<ResponseHandlers, any>(localHandlers, "failureCb");
386
+
387
+ const sdk = new Sitefinity({
388
+ baseUrl: "http://www.mysite.com/api/default/v2/",
389
+ handlers: globalHandlers
390
+ });
391
+ sdk.batch(localHandlers.successCb, localHandlers.failureCb).execute();
392
+
393
+ const request = jasmine.Ajax.requests.mostRecent();
394
+ request.respondWith({
395
+ status: 200,
396
+ responseText: batchResponse,
397
+ responseHeaders: {
398
+ "Access-Control-Allow-Origin": "*",
399
+ "Cache-Control:": "no-cache",
400
+ "Content-Length": "334",
401
+ "Content-type": "multipart/mixed; boundary=batchresponse_ab4d3fab-5bee-4ea0-ba40-723ea40d1c32"
402
+ }
403
+ });
404
+
405
+ expect(successSpyLocal).toHaveBeenCalledTimes(1);
406
+ expect(failureSpyLocal).not.toHaveBeenCalled();
407
+ expect(successSpyGlobal).not.toHaveBeenCalled();
408
+ expect(failureSpyGlobal).not.toHaveBeenCalled();
409
+ });
410
+
411
+ it("Verify failureCb overrides global failure handler from SDK options", () => {
412
+ const globalHandlers: ResponseHandlers = {
413
+ successCb: () => {},
414
+ failureCb: () => {}
415
+ };
416
+ const successSpyGlobal = spyOn<ResponseHandlers, any>(globalHandlers, "successCb");
417
+ const failureSpyGlobal = spyOn<ResponseHandlers, any>(globalHandlers, "failureCb");
418
+
419
+ const localHandlers = {
420
+ successCb: () => {},
421
+ failureCb: () => {}
422
+ };
423
+ const successSpyLocal = spyOn<ResponseHandlers, any>(localHandlers, "successCb");
424
+ const failureSpyLocal = spyOn<ResponseHandlers, any>(localHandlers, "failureCb");
425
+
426
+ const sdk = new Sitefinity({
427
+ baseUrl: "http://www.mysite.com/api/default/v2/",
428
+ handlers: globalHandlers
429
+ });
430
+ sdk.batch(localHandlers.successCb, localHandlers.failureCb).execute();
431
+
432
+ const request = jasmine.Ajax.requests.mostRecent();
433
+ request.respondWith({
434
+ status: 400,
435
+ responseText: batchResponse,
436
+ responseHeaders: {
437
+ "Access-Control-Allow-Origin": "*",
438
+ "Cache-Control:": "no-cache",
439
+ "Content-Length": "334",
440
+ "Content-type": "multipart/mixed; boundary=batchresponse_ab4d3fab-5bee-4ea0-ba40-723ea40d1c32"
441
+ }
442
+ });
443
+
444
+ expect(failureSpyLocal).toHaveBeenCalledTimes(1);
445
+ expect(successSpyLocal).not.toHaveBeenCalled();
446
+ expect(successSpyGlobal).not.toHaveBeenCalled();
447
+ expect(failureSpyGlobal).not.toHaveBeenCalled();
448
+ });
449
+ });
450
+ });
451
+ });