@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
package/package.json CHANGED
@@ -1,21 +1,39 @@
1
1
  {
2
2
  "name": "@progress/sitefinity-webservices-sdk",
3
- "version": "0.3.1",
3
+ "version": "1.0.3",
4
4
  "scripts": {
5
5
  "start": "webpack-dev-server --config config/webpack.dev.js",
6
6
  "build:dev": "webpack --config config/webpack.dev.js --progress --profile",
7
7
  "build:prod": "webpack --config config/webpack.prod.js --progress --profile",
8
- "build:release": "npm run build:prod & npm run build:dev"
8
+ "build:release": "npm run build:prod & npm run build:dev & npm run docs",
9
+ "test": "karma start --single_run",
10
+ "test:debug": "karma start",
11
+ "docs": "typedoc",
12
+ "lint": "eslint . --ext .ts"
9
13
  },
10
14
  "devDependencies": {
15
+ "@types/jasmine": "3.10.3",
16
+ "@types/jasmine-ajax": "3.3.3",
17
+ "@types/node": "17.0.21",
18
+ "@typescript-eslint/eslint-plugin": "5.13.0",
19
+ "@typescript-eslint/parser": "5.13.0",
11
20
  "awesome-typescript-loader": "5.2.1",
12
- "html-webpack-plugin": "3.2.0",
13
- "typedoc": "0.11.1",
14
- "typedoc-webpack-plugin": "1.1.4",
15
- "typescript": "2.9.1",
16
- "webpack": "4.46.0",
17
- "webpack-cli": "3.3.11",
18
- "webpack-dev-server": "3.11.0",
19
- "webpack-merge": "4.1.2"
21
+ "eslint": "8.10.0",
22
+ "html-webpack-plugin": "5.5.0",
23
+ "jasmine": "4.0.2",
24
+ "jasmine-ajax": "4.0.0",
25
+ "jasmine-spec-reporter": "7.0.0",
26
+ "karma": "6.3.17",
27
+ "karma-chrome-launcher": "3.1.0",
28
+ "karma-jasmine": "4.0.1",
29
+ "karma-jasmine-ajax": "0.1.13",
30
+ "karma-spec-reporter": "0.0.33",
31
+ "karma-typescript": "5.5.3",
32
+ "typedoc": "0.22.12",
33
+ "typescript": "4.6.2",
34
+ "webpack": "5.69.1",
35
+ "webpack-cli": "4.9.2",
36
+ "webpack-dev-server": "4.7.4",
37
+ "webpack-merge": "5.8.0"
20
38
  }
21
39
  }
@@ -0,0 +1,16 @@
1
+ export * from "./src/BlobBuilder";
2
+ export * from "./src/constants";
3
+ export * from "./src/utils";
4
+ export * from "./src/WhereQuery";
5
+ export * from "./src/Sitefinity";
6
+ export * from "./src/QueryBuilder";
7
+ export * from "./src/QueryBase";
8
+ export * from "./src/Query";
9
+ export * from "./src/OrderProperty";
10
+ export * from "./src/Expression";
11
+ export * from "./src/Data";
12
+ export * from "./src/Requests/BatchRequest";
13
+ export * from "./src/Requests/ExecutableRequest";
14
+ export * from "./src/Requests/Request";
15
+ export * from "./src/Requests/RequestBase";
16
+ export * from "./src/Requests/RequestFactory";
@@ -1,25 +1,20 @@
1
1
  /**
2
- * @classdesc The BlobBuilder class is used to generate blob objects.
3
- * @class BlobBuilder
2
+ * The BlobBuilder class is used to generate blob objects.
4
3
  */
5
4
  export class BlobBuilder {
6
- private _blob = new Blob();
5
+ private blob = new Blob();
7
6
 
8
7
  /**
9
- * Append new value to blob.
10
- * @memberOf BlobBuilder
11
- * @instance
12
- * @param {object} value - The value to be appended.
8
+ * Appends new value to blob.
13
9
  */
14
10
  append(value: any) {
15
- this._blob = new Blob([this._blob, value]);
11
+ this.blob = new Blob([this.blob, value]);
16
12
  }
17
13
 
18
14
  /**
19
- * Get generated blob.
20
- * @memberOf BlobBuilder
15
+ * Gets generated blob.
21
16
  */
22
- build() {
23
- return this._blob;
17
+ build(): Blob {
18
+ return this.blob;
24
19
  }
25
20
  }
@@ -0,0 +1,160 @@
1
+ import { ODATA_PARAMS, SF_PARAMS } from "./constants";
2
+ import { Data } from "./Data";
3
+ import { Sitefinity } from "./Sitefinity";
4
+
5
+ describe("Data class tests", () => {
6
+ const baseUrl = "http://www.mysite.com/api/default/";
7
+ const query = new Sitefinity.Query().where().eq("Title", "test").done();
8
+ const queryResult = query.build().$filter;
9
+ const action = "Publish";
10
+ const fallbackProperties = ["Title", "UrlName"];
11
+ const key = "1234";
12
+ const callbacks = {
13
+ successCb: () => {},
14
+ failureCb: () => {},
15
+ };
16
+
17
+ let successCbSpy;
18
+ let failureCbSpy;
19
+ let data: Data;
20
+
21
+ beforeEach(() => {
22
+ jasmine.Ajax.install();
23
+ successCbSpy = spyOn(callbacks, "successCb");
24
+ failureCbSpy = spyOn(callbacks, "failureCb");
25
+ });
26
+
27
+ afterEach(() => {
28
+ jasmine.Ajax.uninstall();
29
+ });
30
+
31
+ beforeAll(() => {
32
+ data = new Sitefinity({}).data({ baseUrl });
33
+ });
34
+
35
+ it("Verify get success", () => {
36
+ data.get({
37
+ query,
38
+ action,
39
+ successCb: callbacks.successCb,
40
+ failureCb: callbacks.failureCb,
41
+ fallbackProperties
42
+ });
43
+
44
+ const request = jasmine.Ajax.requests.mostRecent();
45
+ expect(request.url).toContain(`${ODATA_PARAMS.$filter}=${queryResult}`);
46
+ expect(request.url).toContain(`${baseUrl}${action}`);
47
+ expect(request.url).toContain(`${SF_PARAMS.fallbackParams}=${fallbackProperties.join(',')}`);
48
+
49
+ request.respondWith({
50
+ status: 200,
51
+ responseText: '{"message":"test"}'
52
+ });
53
+
54
+ expect(successCbSpy).toHaveBeenCalledOnceWith({ message: "test" });
55
+ expect(failureCbSpy).not.toHaveBeenCalled();
56
+ });
57
+
58
+ it("Verify get failure", () => {
59
+ data.get({
60
+ successCb: callbacks.successCb,
61
+ failureCb: callbacks.failureCb
62
+ });
63
+
64
+ const request = jasmine.Ajax.requests.mostRecent();
65
+ request.respondWith({
66
+ status: 400,
67
+ responseText: '{"message":"test"}'
68
+ });
69
+
70
+ expect(failureCbSpy).toHaveBeenCalledOnceWith({ message: "test", status: 400 })
71
+ expect(successCbSpy).not.toHaveBeenCalled();
72
+ });
73
+
74
+ it("Verify getOperations success", () => {
75
+ const parentId = "567";
76
+ data.getOperations({
77
+ parentId,
78
+ successCb: callbacks.successCb,
79
+ failureCb: callbacks.failureCb
80
+ });
81
+
82
+ let request = jasmine.Ajax.requests.mostRecent();
83
+ expect(request.url).toContain(`${baseUrl}operations`);
84
+ expect(request.url).toContain(`${SF_PARAMS.parentId}=${parentId}`);
85
+
86
+ request.respondWith({
87
+ status: 200,
88
+ responseText: '{"message":"test"}'
89
+ });
90
+
91
+ expect(successCbSpy).toHaveBeenCalledOnceWith({ message: "test" });
92
+ expect(failureCbSpy).not.toHaveBeenCalled();
93
+
94
+ data.getOperations({
95
+ key,
96
+ parentId
97
+ });
98
+
99
+ request = jasmine.Ajax.requests.mostRecent();
100
+ expect(request.url).toContain(`${baseUrl}(${key})/operations`);
101
+ expect(request.url).not.toContain(`${SF_PARAMS.parentId}=${parentId}`);
102
+ });
103
+
104
+ it("Verify getOperations failure", () => {
105
+ data.getOperations({
106
+ successCb: callbacks.successCb,
107
+ failureCb: callbacks.failureCb
108
+ });
109
+
110
+ const request = jasmine.Ajax.requests.mostRecent();
111
+ request.respondWith({
112
+ status: 400,
113
+ responseText: '{"message":"test"}'
114
+ });
115
+
116
+ expect(failureCbSpy).toHaveBeenCalledOnceWith({ message: "test", status: 400 })
117
+ expect(successCbSpy).not.toHaveBeenCalled();
118
+ });
119
+
120
+ it("Verify getSingle success", () => {
121
+ data.getSingle({
122
+ key,
123
+ query,
124
+ action,
125
+ successCb: callbacks.successCb,
126
+ failureCb: callbacks.failureCb,
127
+ fallbackProperties
128
+ });
129
+
130
+ const request = jasmine.Ajax.requests.mostRecent();
131
+ expect(request.url).toContain(`${ODATA_PARAMS.$filter}=${queryResult}`);
132
+ expect(request.url).toContain(`${baseUrl}(${key})/${action}`);
133
+ expect(request.url).toContain(`${SF_PARAMS.fallbackParams}=${fallbackProperties.join(',')}`);
134
+
135
+ request.respondWith({
136
+ status: 200,
137
+ responseText: '{"message":"test"}'
138
+ });
139
+
140
+ expect(successCbSpy).toHaveBeenCalledOnceWith({ message: "test" });
141
+ expect(failureCbSpy).not.toHaveBeenCalled();
142
+ });
143
+
144
+ it("Verify getSingle failure", () => {
145
+ data.getSingle({
146
+ key,
147
+ successCb: callbacks.successCb,
148
+ failureCb: callbacks.failureCb
149
+ });
150
+
151
+ const request = jasmine.Ajax.requests.mostRecent();
152
+ request.respondWith({
153
+ status: 400,
154
+ responseText: '{"message":"test"}'
155
+ });
156
+
157
+ expect(failureCbSpy).toHaveBeenCalledOnceWith({ message: "test", status: 400 })
158
+ expect(successCbSpy).not.toHaveBeenCalled();
159
+ });
160
+ });