angularjs-rails-resource 1.0.0.pre.2 → 1.0.0.pre.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +57 -1
- data/Gruntfile.js +51 -36
- data/README.md +203 -68
- data/bower.json +2 -2
- data/changelog.js +206 -0
- data/karma.conf.js +2 -1
- data/lib/angularjs-rails-resource/version.rb +1 -1
- data/package.json +9 -3
- data/test/unit/angularjs/rails/extensions/snapshotsSpec.js +428 -0
- data/test/unit/angularjs/rails/resourceProviderSpec.js +20 -0
- data/test/unit/angularjs/rails/resourceSpec.js +173 -50
- data/vendor/assets/javascripts/angularjs/rails/resource/extensions/snapshots.js +117 -0
- data/vendor/assets/javascripts/angularjs/rails/resource/resource.js +239 -52
- data/vendor/assets/javascripts/angularjs/rails/resource/serialization.js +4 -4
- data/vendor/assets/javascripts/angularjs/rails/resource/utils/inflector.js +1 -1
- data/vendor/assets/javascripts/angularjs/rails/resource/utils/injector.js +21 -4
- data/vendor/assets/javascripts/angularjs/rails/resource/utils/url_builder.js +1 -2
- metadata +7 -6
- data/angularjs-rails-resource.js +0 -1117
- data/angularjs-rails-resource.min.js +0 -7
- data/angularjs-rails-resource.zip +0 -0
@@ -40,4 +40,24 @@ describe('resource provider factory config', function () {
|
|
40
40
|
expect(railsResourceFactory({name: 'test', url: '/test'}).config.defaultParams).toEqualData({'test': '1'});
|
41
41
|
});
|
42
42
|
});
|
43
|
+
|
44
|
+
it('should allow setting default extensions globally', function () {
|
45
|
+
module('rails', function (RailsResourceProvider) {
|
46
|
+
expect(RailsResourceProvider.extensions('snapshots')).toBe(RailsResourceProvider);
|
47
|
+
});
|
48
|
+
|
49
|
+
inject(function (railsResourceFactory) {
|
50
|
+
expect(railsResourceFactory({name: 'test', url: '/test'}).prototype.snapshot).toBeDefined();
|
51
|
+
});
|
52
|
+
});
|
53
|
+
|
54
|
+
it('should allow setting default extensions using an array', function () {
|
55
|
+
module('rails', function (RailsResourceProvider) {
|
56
|
+
expect(RailsResourceProvider.extensions(['snapshots'])).toBe(RailsResourceProvider);
|
57
|
+
});
|
58
|
+
|
59
|
+
inject(function (railsResourceFactory) {
|
60
|
+
expect(railsResourceFactory({name: 'test', url: '/test'}).prototype.snapshot).toBeDefined();
|
61
|
+
});
|
62
|
+
});
|
43
63
|
});
|
@@ -34,7 +34,7 @@ describe('railsResourceFactory', function () {
|
|
34
34
|
$httpBackend.verifyNoOutstandingRequest();
|
35
35
|
});
|
36
36
|
|
37
|
-
it('query should return resource object when response is single object',
|
37
|
+
it('query should return resource object when response is single object', function () {
|
38
38
|
var promise, result;
|
39
39
|
|
40
40
|
$httpBackend.expectGET('/test').respond(200, {test: {abc: 'xyz'}});
|
@@ -49,9 +49,9 @@ describe('railsResourceFactory', function () {
|
|
49
49
|
|
50
50
|
expect(result).toBeInstanceOf(Test);
|
51
51
|
expect(result).toEqualData({abc: 'xyz'});
|
52
|
-
})
|
52
|
+
});
|
53
53
|
|
54
|
-
it('query should return no data on 204',
|
54
|
+
it('query should return no data on 204', function () {
|
55
55
|
var promise, result;
|
56
56
|
|
57
57
|
$httpBackend.expectGET('/test').respond(204);
|
@@ -64,27 +64,56 @@ describe('railsResourceFactory', function () {
|
|
64
64
|
$httpBackend.flush();
|
65
65
|
|
66
66
|
expect(result).toBeUndefined();
|
67
|
-
})
|
67
|
+
});
|
68
68
|
|
69
|
-
it('query should add parameter abc=1',
|
69
|
+
it('query should add parameter abc=1', function () {
|
70
70
|
var promise;
|
71
71
|
|
72
72
|
$httpBackend.expectGET('/test?abc=1').respond(200, {test: {abc: 'xyz'}});
|
73
73
|
|
74
74
|
expect(promise = Test.query({abc: '1'})).toBeDefined();
|
75
75
|
$httpBackend.flush();
|
76
|
-
})
|
76
|
+
});
|
77
77
|
|
78
|
-
it('query should add parameters abc=1 & xyz=2',
|
78
|
+
it('query should add parameters abc=1 & xyz=2', function () {
|
79
79
|
var promise;
|
80
80
|
|
81
81
|
$httpBackend.expectGET('/test?abc=1&xyz=2').respond(200, {test: {abc: 'xyz'}});
|
82
82
|
|
83
83
|
expect(promise = Test.query({abc: '1', xyz: 2})).toBeDefined();
|
84
84
|
$httpBackend.flush();
|
85
|
-
})
|
85
|
+
});
|
86
|
+
|
87
|
+
it('query should underscore parameters abc_xyz=1 & test=2', function () {
|
88
|
+
var promise;
|
89
|
+
|
90
|
+
$httpBackend.expectGET('/test?abc_xyz=1&test=2').respond(200, {test: {abc: 'xyz'}});
|
91
|
+
|
92
|
+
expect(promise = Test.query({abcXyz: '1', test: 2})).toBeDefined();
|
93
|
+
$httpBackend.flush();
|
94
|
+
});
|
95
|
+
|
96
|
+
it('query should not underscore parameters abcXyz=1 & test=2', function () {
|
97
|
+
var promise;
|
86
98
|
|
87
|
-
|
99
|
+
$httpBackend.expectGET('/test?abcXyz=1&test=2').respond(200, {test: {abc: 'xyz'}});
|
100
|
+
Test = factory(angular.extend({underscoreParams: false}, config));
|
101
|
+
expect(promise = Test.query({abcXyz: '1', test: 2})).toBeDefined();
|
102
|
+
$httpBackend.flush();
|
103
|
+
});
|
104
|
+
|
105
|
+
it('Parameter underscoring should not modify the defaultParams.', function () {
|
106
|
+
var promise;
|
107
|
+
|
108
|
+
$httpBackend.expectGET('/test?abc_xyz=1').respond(200, {test: {abc: 'xyz'}});
|
109
|
+
Test = factory(angular.extend({defaultParams: {abcXyz: 1}}, config));
|
110
|
+
expect(promise = Test.query()).toBeDefined();
|
111
|
+
$httpBackend.flush();
|
112
|
+
expect(Test.config.defaultParams.abcXyz).toBeDefined();
|
113
|
+
expect(Test.config.defaultParams.abc_xyz).not.toBeDefined();
|
114
|
+
});
|
115
|
+
|
116
|
+
it('query with default params should add parameter abc=1', function () {
|
88
117
|
var promise, resource, defaultParamsConfig = {};
|
89
118
|
|
90
119
|
$httpBackend.expectGET('/test?abc=1').respond(200, {test: {abc: 'xyz'}});
|
@@ -96,9 +125,24 @@ describe('railsResourceFactory', function () {
|
|
96
125
|
expect(promise = resource.query()).toBeDefined();
|
97
126
|
|
98
127
|
$httpBackend.flush();
|
99
|
-
})
|
128
|
+
});
|
129
|
+
|
130
|
+
it('query with default params and additional parameters should not modify default params', function () {
|
131
|
+
var promise, resource, defaultParamsConfig = {};
|
132
|
+
|
133
|
+
$httpBackend.expectGET('/test?abc=1&xyz=2').respond(200, {test: {abc: 'xyz'}});
|
134
|
+
|
135
|
+
angular.copy(config, defaultParamsConfig);
|
136
|
+
defaultParamsConfig.defaultParams = {abc: '1'};
|
137
|
+
|
138
|
+
resource = factory(defaultParamsConfig);
|
139
|
+
expect(promise = resource.query({xyz: '2'})).toBeDefined();
|
140
|
+
|
141
|
+
$httpBackend.flush();
|
142
|
+
expect(resource.config.defaultParams).toEqualData({abc: '1'});
|
143
|
+
});
|
100
144
|
|
101
|
-
it('get should return resource object when response is 200',
|
145
|
+
it('get should return resource object when response is 200', function () {
|
102
146
|
var promise, result;
|
103
147
|
|
104
148
|
$httpBackend.expectGET('/test/123').respond(200, {test: {id: 123, abc: 'xyz'}});
|
@@ -113,9 +157,9 @@ describe('railsResourceFactory', function () {
|
|
113
157
|
|
114
158
|
expect(result).toBeInstanceOf(Test);
|
115
159
|
expect(result).toEqualData({id: 123, abc: 'xyz'});
|
116
|
-
})
|
160
|
+
});
|
117
161
|
|
118
|
-
it('get should work with id as string as well',
|
162
|
+
it('get should work with id as string as well', function () {
|
119
163
|
var promise, result;
|
120
164
|
|
121
165
|
$httpBackend.expectGET('/test/123').respond(200, {test: {id: 123, abc: 'xyz'}});
|
@@ -130,9 +174,9 @@ describe('railsResourceFactory', function () {
|
|
130
174
|
|
131
175
|
expect(result).toBeInstanceOf(Test);
|
132
176
|
expect(result).toEqualData({id: 123, abc: 'xyz'});
|
133
|
-
})
|
177
|
+
});
|
134
178
|
|
135
|
-
it('get should call failure callback when 404',
|
179
|
+
it('get should call failure callback when 404', function () {
|
136
180
|
var promise, success = false, failure = false;
|
137
181
|
|
138
182
|
$httpBackend.expectGET('/test/123').respond(404);
|
@@ -149,9 +193,9 @@ describe('railsResourceFactory', function () {
|
|
149
193
|
|
150
194
|
expect(success).toBe(false);
|
151
195
|
expect(failure).toBe(true);
|
152
|
-
})
|
196
|
+
});
|
153
197
|
|
154
|
-
it('get with default params should add parameter abc=1',
|
198
|
+
it('get with default params should add parameter abc=1', function () {
|
155
199
|
var promise, resource, defaultParamsConfig = {};
|
156
200
|
|
157
201
|
$httpBackend.expectGET('/test/123?abc=1').respond(200, {test: {abc: 'xyz'}});
|
@@ -163,9 +207,9 @@ describe('railsResourceFactory', function () {
|
|
163
207
|
expect(promise = resource.get(123)).toBeDefined();
|
164
208
|
|
165
209
|
$httpBackend.flush();
|
166
|
-
})
|
210
|
+
});
|
167
211
|
|
168
|
-
it('should be able to create new instance and save it',
|
212
|
+
it('should be able to create new instance and save it', function () {
|
169
213
|
var data = new Test({abcDef: 'xyz'});
|
170
214
|
|
171
215
|
$httpBackend.expectPOST('/test', {test: {abc_def: 'xyz'}}).respond(200, {test: {id: 123, abc_def: 'xyz'}});
|
@@ -173,18 +217,18 @@ describe('railsResourceFactory', function () {
|
|
173
217
|
$httpBackend.flush();
|
174
218
|
|
175
219
|
expect(data).toEqualData({id: 123, abcDef: 'xyz'});
|
176
|
-
})
|
220
|
+
});
|
177
221
|
|
178
|
-
it("should return a promise when calling save",
|
222
|
+
it("should return a promise when calling save", function () {
|
179
223
|
var promise, data;
|
180
224
|
|
181
225
|
data = new Test({abc_def: 'xyz'});
|
182
226
|
$httpBackend.expectPOST('/test', {test: {abc_def: 'xyz'}}).respond(200, {test: {id: 123, abc_def: 'xyz'}});
|
183
227
|
expect(promise = data.save()).toBeDefined();
|
184
228
|
$httpBackend.flush()
|
185
|
-
})
|
229
|
+
});
|
186
230
|
|
187
|
-
it('should be able to create new instance and save it using save',
|
231
|
+
it('should be able to create new instance and save it using save', function () {
|
188
232
|
var data = new Test({abcDef: 'xyz'});
|
189
233
|
|
190
234
|
$httpBackend.expectPOST('/test', {test: {abc_def: 'xyz'}}).respond(200, {test: {id: 123, abc_def: 'xyz'}});
|
@@ -192,9 +236,9 @@ describe('railsResourceFactory', function () {
|
|
192
236
|
$httpBackend.flush();
|
193
237
|
|
194
238
|
expect(data).toEqualData({id: 123, abcDef: 'xyz'});
|
195
|
-
})
|
239
|
+
});
|
196
240
|
|
197
|
-
it('should be able to create new instance and update it',
|
241
|
+
it('should be able to create new instance and update it', function () {
|
198
242
|
var data = new Test({abcDef: 'xyz'});
|
199
243
|
|
200
244
|
$httpBackend.expectPOST('/test', {test: {abc_def: 'xyz'}}).respond(200, {test: {id: 123, abc_def: 'xyz'}});
|
@@ -209,9 +253,9 @@ describe('railsResourceFactory', function () {
|
|
209
253
|
$httpBackend.flush();
|
210
254
|
|
211
255
|
expect(data).toEqualData({id: 123, abcDef: 'xyz', xyz: 'abc', extra: 'test'});
|
212
|
-
})
|
256
|
+
});
|
213
257
|
|
214
|
-
it('should be able to create new instance and update it using save',
|
258
|
+
it('should be able to create new instance and update it using save', function () {
|
215
259
|
var data = new Test({abcDef: 'xyz'});
|
216
260
|
|
217
261
|
$httpBackend.expectPOST('/test', {test: {abc_def: 'xyz'}}).respond(200, {test: {id: 123, abc_def: 'xyz'}});
|
@@ -226,9 +270,9 @@ describe('railsResourceFactory', function () {
|
|
226
270
|
$httpBackend.flush();
|
227
271
|
|
228
272
|
expect(data).toEqualData({id: 123, abcDef: 'xyz', xyz: 'abc', extra: 'test'});
|
229
|
-
})
|
273
|
+
});
|
230
274
|
|
231
|
-
it('should be able to create new instance and update it using PATCH',
|
275
|
+
it('should be able to create new instance and update it using PATCH', function () {
|
232
276
|
var promise, Resource, data, defaultParamsConfig = {};
|
233
277
|
|
234
278
|
angular.copy(config, defaultParamsConfig);
|
@@ -249,9 +293,9 @@ describe('railsResourceFactory', function () {
|
|
249
293
|
$httpBackend.flush();
|
250
294
|
|
251
295
|
expect(data).toEqualData({id: 123, abcDef: 'xyz', xyz: 'abc', extra: 'test'});
|
252
|
-
})
|
296
|
+
});
|
253
297
|
|
254
|
-
it('should be able to create new instance and update it using save using PATCH',
|
298
|
+
it('should be able to create new instance and update it using save using PATCH', function () {
|
255
299
|
var promise, Resource, data, defaultParamsConfig = {};
|
256
300
|
|
257
301
|
angular.copy(config, defaultParamsConfig);
|
@@ -272,10 +316,10 @@ describe('railsResourceFactory', function () {
|
|
272
316
|
$httpBackend.flush();
|
273
317
|
|
274
318
|
expect(data).toEqualData({id: 123, abcDef: 'xyz', xyz: 'abc', extra: 'test'});
|
275
|
-
})
|
319
|
+
});
|
276
320
|
|
277
321
|
|
278
|
-
it('create with default params should add parameter abc=1',
|
322
|
+
it('create with default params should add parameter abc=1', function () {
|
279
323
|
var promise, Resource, data, defaultParamsConfig = {};
|
280
324
|
|
281
325
|
$httpBackend.expectPOST('/test?abc=1', {test: {}}).respond(200, {test: {abc: 'xyz'}});
|
@@ -288,9 +332,9 @@ describe('railsResourceFactory', function () {
|
|
288
332
|
data.create();
|
289
333
|
|
290
334
|
$httpBackend.flush();
|
291
|
-
})
|
335
|
+
});
|
292
336
|
|
293
|
-
it('should be able to get resource and update it',
|
337
|
+
it('should be able to get resource and update it', function () {
|
294
338
|
var promise, result;
|
295
339
|
|
296
340
|
$httpBackend.expectGET('/test/123').respond(200, {test: {id: 123, abc: 'xyz', xyz: 'abcd'}});
|
@@ -313,9 +357,9 @@ describe('railsResourceFactory', function () {
|
|
313
357
|
|
314
358
|
// abc was originally set on the object so it should still be there after the update
|
315
359
|
expect(result).toEqualData({id: 123, abc: 'xyz', xyz: 'abc', extra: 'test'});
|
316
|
-
})
|
360
|
+
});
|
317
361
|
|
318
|
-
it('update should handle 204 response',
|
362
|
+
it('update should handle 204 response', function () {
|
319
363
|
var promise, result;
|
320
364
|
|
321
365
|
$httpBackend.expectGET('/test/123').respond(200, {test: {id: 123, abc: 'xyz'}});
|
@@ -337,9 +381,9 @@ describe('railsResourceFactory', function () {
|
|
337
381
|
$httpBackend.flush();
|
338
382
|
|
339
383
|
expect(result).toEqualData({id: 123, abc: 'xyz', xyz: 'abc'});
|
340
|
-
})
|
384
|
+
});
|
341
385
|
|
342
|
-
it('should be able to delete instance returned from get',
|
386
|
+
it('should be able to delete instance returned from get', function () {
|
343
387
|
var promise, result;
|
344
388
|
|
345
389
|
$httpBackend.expectGET('/test/123').respond(200, {test: {id: 123, abc: 'xyz'}});
|
@@ -358,9 +402,9 @@ describe('railsResourceFactory', function () {
|
|
358
402
|
$httpBackend.expectDELETE('/test/123').respond(204);
|
359
403
|
result.remove();
|
360
404
|
$httpBackend.flush();
|
361
|
-
})
|
405
|
+
});
|
362
406
|
|
363
|
-
it('delete with default params should add parameter abc=1',
|
407
|
+
it('delete with default params should add parameter abc=1', function () {
|
364
408
|
var promise, Resource, data, defaultParamsConfig = {};
|
365
409
|
|
366
410
|
$httpBackend.expectDELETE('/test/123?abc=1').respond(204);
|
@@ -374,7 +418,7 @@ describe('railsResourceFactory', function () {
|
|
374
418
|
data.remove();
|
375
419
|
|
376
420
|
$httpBackend.flush();
|
377
|
-
})
|
421
|
+
});
|
378
422
|
|
379
423
|
it('should transform attributes on build', function() {
|
380
424
|
var test = new Test({id: 123, abc_def: "T"});
|
@@ -400,7 +444,7 @@ describe('railsResourceFactory', function () {
|
|
400
444
|
});
|
401
445
|
|
402
446
|
angular.forEach(['post', 'put', 'patch'], function (method) {
|
403
|
-
it('should be able to ' + method + ' to arbitrary url',
|
447
|
+
it('should be able to ' + method + ' to arbitrary url', function () {
|
404
448
|
var promise, result = {};
|
405
449
|
|
406
450
|
promise = Test['$' + method]('/xyz', {id: 123, abc: 'xyz', xyz: 'abc'});
|
@@ -414,9 +458,9 @@ describe('railsResourceFactory', function () {
|
|
414
458
|
|
415
459
|
// abc was originally set on the object so it should still be there after the update
|
416
460
|
expect(result).toEqualData({id: 123, abc: 'xyz', xyz: 'abc', extra: 'test'});
|
417
|
-
})
|
461
|
+
});
|
418
462
|
|
419
|
-
it('should be able to ' + method + ' instance to arbitrary url',
|
463
|
+
it('should be able to ' + method + ' instance to arbitrary url', function () {
|
420
464
|
var test = new Test({id: 123, abc: 'xyz', xyz: 'abc'});
|
421
465
|
$httpBackend['expect' + angular.uppercase(method)]('/xyz', {test: {id: 123, abc: 'xyz', xyz: 'abc'}}).respond(200, {test: {id: 123, abc: 'xyz', xyz: 'abc', extra: 'test'}});
|
422
466
|
test['$' + method]('/xyz');
|
@@ -424,7 +468,7 @@ describe('railsResourceFactory', function () {
|
|
424
468
|
|
425
469
|
// abc was originally set on the object so it should still be there after the update
|
426
470
|
expect(test).toEqualData({id: 123, abc: 'xyz', xyz: 'abc', extra: 'test'});
|
427
|
-
})
|
471
|
+
});
|
428
472
|
});
|
429
473
|
|
430
474
|
it('should be able to $post an array of resources', function () {
|
@@ -456,7 +500,7 @@ describe('railsResourceFactory', function () {
|
|
456
500
|
$httpBackend.verifyNoOutstandingRequest();
|
457
501
|
});
|
458
502
|
|
459
|
-
it('query should return array of resource objects when result is an array',
|
503
|
+
it('query should return array of resource objects when result is an array', function () {
|
460
504
|
var promise, result;
|
461
505
|
|
462
506
|
$httpBackend.expectGET('/pluralTest').respond(200, {plural: [{abc: 'xyz'}, {xyz: 'abc'}]});
|
@@ -476,9 +520,9 @@ describe('railsResourceFactory', function () {
|
|
476
520
|
expect(result[0]).toEqualData({abc: 'xyz'});
|
477
521
|
expect(result[1]).toEqualData({xyz: 'abc'});
|
478
522
|
|
479
|
-
})
|
523
|
+
});
|
480
524
|
|
481
|
-
it('query should return empty array when result is empty array',
|
525
|
+
it('query should return empty array when result is empty array', function () {
|
482
526
|
var promise, result;
|
483
527
|
|
484
528
|
$httpBackend.expectGET('/pluralTest').respond(200, {plural: []});
|
@@ -493,7 +537,7 @@ describe('railsResourceFactory', function () {
|
|
493
537
|
|
494
538
|
expect(angular.isArray(result)).toBe(true);
|
495
539
|
expect(result.length).toBe(0);
|
496
|
-
})
|
540
|
+
});
|
497
541
|
});
|
498
542
|
|
499
543
|
describe('subclassing', function() {
|
@@ -513,6 +557,8 @@ describe('railsResourceFactory', function () {
|
|
513
557
|
|
514
558
|
// @configure url: '/books', name: 'book'
|
515
559
|
Book.configure({ url: '/books', name: 'book' });
|
560
|
+
Book.extend('RailsResourceSnapshotsMixin');
|
561
|
+
Book.extend({ bookProperty: 1});
|
516
562
|
|
517
563
|
function Book() {
|
518
564
|
Book.__super__.constructor.apply(this, arguments);
|
@@ -582,5 +628,82 @@ describe('railsResourceFactory', function () {
|
|
582
628
|
expect(carManual.id).toBe(1);
|
583
629
|
expect(carManual.name).toBe('Honda CR-V');
|
584
630
|
});
|
631
|
+
|
632
|
+
it('should have included properties on subclass', function () {
|
633
|
+
expect(CarManual.bookProperty).toBe(1);
|
634
|
+
expect(CarManual.prototype.snapshot).toBeDefined();
|
635
|
+
});
|
636
|
+
});
|
637
|
+
|
638
|
+
describe('mixins', function () {
|
639
|
+
var railsResourceFactory;
|
640
|
+
|
641
|
+
beforeEach(inject(function (_railsResourceFactory_) {
|
642
|
+
railsResourceFactory = _railsResourceFactory_;
|
643
|
+
}));
|
644
|
+
|
645
|
+
it('should include extensions as part of initial configure', function () {
|
646
|
+
var Resource = railsResourceFactory({name: 'test', url: '/test', extensions: ['snapshots']});
|
647
|
+
expect(Resource.prototype.snapshot).toBeDefined();
|
648
|
+
});
|
649
|
+
|
650
|
+
it('should only include extensions once', function () {
|
651
|
+
var Resource = railsResourceFactory({name: 'test', url: '/test', extensions: ['snapshots', 'snapshots']});
|
652
|
+
expect(Resource.$mixins.length).toBe(2); // Snapshots extension includes additional mixin
|
653
|
+
expect(Resource.prototype.snapshot).toBeDefined();
|
654
|
+
});
|
655
|
+
|
656
|
+
it('should only include module once', function () {
|
657
|
+
var mixin = {test: 1}, Resource = railsResourceFactory({name: 'test', url: '/test'});
|
658
|
+
Resource.include(mixin);
|
659
|
+
Resource.include(mixin);
|
660
|
+
expect(Resource.$mixins.length).toBe(1);
|
661
|
+
});
|
662
|
+
|
663
|
+
it('should include extensions as part of second configure call', function () {
|
664
|
+
var Resource = railsResourceFactory({name: 'test', url: '/test'});
|
665
|
+
Resource.configure({extensions: ['snapshots']});
|
666
|
+
expect(Resource.prototype.snapshot).toBeDefined();
|
667
|
+
});
|
668
|
+
|
669
|
+
it('should throw an error if extension is not valid', function () {
|
670
|
+
var Resource = railsResourceFactory({name: 'test', url: '/test'});
|
671
|
+
expect(function () {
|
672
|
+
Resource.configure({extensions: ['invalid']});
|
673
|
+
}).toThrow();
|
674
|
+
});
|
675
|
+
|
676
|
+
it('should include object properties as class properties', function () {
|
677
|
+
var Resource = railsResourceFactory({name: 'test', url: '/test'});
|
678
|
+
Resource.extend({
|
679
|
+
classMethod: function () {},
|
680
|
+
classProperty: 1
|
681
|
+
});
|
682
|
+
expect(Resource.classMethod).toBeDefined();
|
683
|
+
expect(Resource.classProperty).toBe(1);
|
684
|
+
});
|
685
|
+
|
686
|
+
it('should include class properties', function () {
|
687
|
+
function Mixin() {}
|
688
|
+
Mixin.classMethod = function () {};
|
689
|
+
Mixin.classProperty = 1;
|
690
|
+
|
691
|
+
var Resource = railsResourceFactory({name: 'test', url: '/test'});
|
692
|
+
Resource.extend(Mixin);
|
693
|
+
expect(Resource.classMethod).toBe(Mixin.classMethod);
|
694
|
+
expect(Resource.classProperty).toBe(Mixin.classProperty);
|
695
|
+
});
|
696
|
+
|
697
|
+
it('should include instance properties', function () {
|
698
|
+
function Mixin() {}
|
699
|
+
Mixin.instanceMethod = function () {};
|
700
|
+
Mixin.instanceProperty = 1;
|
701
|
+
|
702
|
+
var Resource = railsResourceFactory({name: 'test', url: '/test'});
|
703
|
+
Resource.include(Mixin);
|
704
|
+
expect(Resource.prototype.instanceMethod).toBe(Mixin.instanceMethod);
|
705
|
+
expect(Resource.prototype.instanceProperty).toBe(Mixin.instanceProperty);
|
706
|
+
});
|
707
|
+
|
585
708
|
});
|
586
709
|
});
|