angularjs-rails-resource 1.2.1 → 1.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 45894ff519ef50bed5feda97630ad148e15bfe3a
4
- data.tar.gz: 9b757277985bf87c0b5d67ad8daade45965ed9a8
3
+ metadata.gz: 64bc74995e3dbdc9aad130c99d334d924338a198
4
+ data.tar.gz: 12b2abe8d96b3332d843bb6eaa07b2d917ec955e
5
5
  SHA512:
6
- metadata.gz: 3807f841e481d2125c3a7dbaa7202604ec2691d8c7244d127311bcf2fa8b40c498d46bd74fea8a63a5f4c42865eb22ad83f717afe2c66b4ba51a81b34e0794f4
7
- data.tar.gz: db60cbf3f22a5552a5e60b4f7c769cfb6094e05fd646ccfb27c6a10456a0043e7b99b1a35029d64e3b4905cd6abf0ab82dc2f5ae42dbcdfdc800309404f54b30
6
+ metadata.gz: 74b693dacca56b514586bf3e6492917fad7b50fedbf791246ca1f0a82951f068e405b11c04c621ff672defdc8bcdceaa44bd69f0e56c81c1a3929dbb35d2561c
7
+ data.tar.gz: 959b6166d3056f4c851f9fde9d1116d744550988627ea3c9eb144d25cdc76e8f9bda4521e07f4dc4bd06977cfc24dcc8a25487fca931d9f28c267ba20b95179a
data/CHANGELOG.md CHANGED
@@ -1,7 +1,13 @@
1
+ <a name="1.2.1"></a>
2
+ # 1.2.2
3
+ ## Bug Fixes
4
+ - Add support for adding custom attributes when serializing arrays - #143 (@shuhei)
5
+ - Force constructor to unwrap as an object - #134 (@tuvistavie)
6
+
1
7
  <a name="1.2.1"></a>
2
8
  # 1.2.1
3
9
  ## Bug Fixes
4
- - Call beforeResponse interceptor only once - #139 (@shuhei)
10
+ - Call beforeResponse interceptor only once - #139 (@shuhei)
5
11
 
6
12
  <a name="1.2.0"></a>
7
13
  # 1.2.0
@@ -9,7 +15,7 @@
9
15
 
10
16
  ## Features
11
17
  - Added <code>unsnappedChanges()</code> function to snapshots mixin to check whether or not there have been any changes since the last snapshot was taken. - #125 (@StevenClontz)
12
- - Added <code>skipRequestProcessing</code> override configuration option to $http, $post, $put, $patch to bypass request processing (root wrapping, serialization) and request interceptor chains - #123 (@mayhewluke)
18
+ - Added <code>skipRequestProcessing</code> override configuration option to $http, $post, $put, $patch to bypass request processing (root wrapping, serialization) and request interceptor chains - #123 (@mayhewluke)
13
19
 
14
20
  <a name="1.1.0"></a>
15
21
  # 1.1.0
@@ -18,12 +24,12 @@
18
24
  ## Features
19
25
  - Added <code>idAttribute</code> configuration option to allow customizing the unique id field on resources. - #114 (@inlineblock)
20
26
  - Added <code>get</code> instance method to refresh resources from the server. - #115 (@wwilkins)
21
-
27
+
22
28
  <a name="1.0.1"></a>
23
29
  # 1.0.1
24
30
  ## Bug Fixes
25
31
  - <code>response.originalData</code> was not being saved off before the root unwrapping so it didn't match the original response data as intended. @Ditchou
26
-
32
+
27
33
 
28
34
  <a name="1.0.0"></a>
29
35
  # 1.0.0
data/bower.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angularjs-rails-resource",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "main": "angularjs-rails-resource.js",
5
5
  "description": "A resource factory inspired by $resource from AngularJS",
6
6
  "repository": {
@@ -1,7 +1,7 @@
1
1
  module Angularjs
2
2
  module Rails
3
3
  module Resource
4
- VERSION = '1.2.1'
4
+ VERSION = '1.2.2'
5
5
  end
6
6
  end
7
7
  end
data/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "angularjs-rails-resource",
3
3
  "description" : "A resource factory inspired by $resource from AngularJS",
4
- "version": "1.2.1",
4
+ "version": "1.2.2",
5
5
  "main" : "dist/angularjs-rails-resource.min.js",
6
6
  "homepage" : "https://github.com/FineLinePrototyping/angularjs-rails-resource.git",
7
7
  "author" : "",
@@ -24,6 +24,11 @@ describe('root wrapping', function () {
24
24
  testTransform({test: {abc: 'xyz', def: 'abc'}}, {abc: 'xyz', def: 'abc'});
25
25
  });
26
26
 
27
+ it('should not unwrap pluralName when object is expected', function() {
28
+ var data = {tests: [1, 2, 3], id: 4};
29
+ expect(railsRootWrapper.unwrap({data: data}, Resource, true)).toEqualData({data: data});
30
+ });
31
+
27
32
  function testTransform(wrappedData, unwrappedData) {
28
33
  expect(railsRootWrapper.wrap(unwrappedData, Resource)).toEqualData(wrappedData);
29
34
  expect(railsRootWrapper.unwrap({data: wrappedData}, Resource)).toEqualData({data: unwrappedData});
@@ -343,6 +343,52 @@ describe('railsSerializer', function () {
343
343
  expect(result['num_books']).toBe(2);
344
344
  });
345
345
 
346
+ it('should add custom attribute to collection from function', function() {
347
+ var result, authorWithPublisher, serializedBooks,
348
+ serializer = createSerializer(function () {
349
+ this.serializeWith('books', factory(function() {
350
+ this.add('publisherId', function(book) {
351
+ return book.publisher.id;
352
+ });
353
+ }));
354
+ });
355
+ authorWithPublisher = {
356
+ books: [
357
+ {id: 1, publisher: {id: 3}},
358
+ {id: 2, publisher: {id: 4}}
359
+ ]
360
+ };
361
+ serializedBooks = [
362
+ {id: 1, publisher_id: 3, publisher: {id:3}},
363
+ {id: 2, publisher_id: 4, publisher: {id:4}}
364
+ ];
365
+
366
+ result = serializer.serialize(authorWithPublisher);
367
+ expect(result['books']).toEqual(serializedBooks);
368
+ });
369
+
370
+ it('should add custom attribute to collection from constant value', function() {
371
+ var result, authorWithPublisher, serializedBooks,
372
+ serializer = createSerializer(function () {
373
+ this.serializeWith('books', factory(function() {
374
+ this.add('publisherId', 3);
375
+ }));
376
+ });
377
+ authorWithPublisher = {
378
+ books: [
379
+ {id: 1, publisher: {id: 3}},
380
+ {id: 2, publisher: {id: 4}}
381
+ ]
382
+ };
383
+ serializedBooks = [
384
+ {id: 1, publisher_id: 3, publisher: {id:3}},
385
+ {id: 2, publisher_id: 3, publisher: {id:4}}
386
+ ];
387
+
388
+ result = serializer.serialize(authorWithPublisher);
389
+ expect(result['books']).toEqual(serializedBooks);
390
+ });
391
+
346
392
  it('should use custom serializer for books', function () {
347
393
  var result, serializedBooks, underscored,
348
394
  serializer = createSerializer(function () {
@@ -6,10 +6,10 @@
6
6
  result[angular.isArray(data) ? resource.config.pluralName : resource.config.name] = data;
7
7
  return result;
8
8
  },
9
- unwrap: function (response, resource) {
9
+ unwrap: function (response, resource, isObject) {
10
10
  if (response.data && response.data.hasOwnProperty(resource.config.name)) {
11
11
  response.data = response.data[resource.config.name];
12
- } else if (response.data && response.data.hasOwnProperty(resource.config.pluralName)) {
12
+ } else if (response.data && response.data.hasOwnProperty(resource.config.pluralName) && !isObject) {
13
13
  response.data = response.data[resource.config.pluralName];
14
14
  }
15
15
 
@@ -114,7 +114,7 @@
114
114
  if (value) {
115
115
  var response = this.constructor.deserialize({data: value});
116
116
  if (this.constructor.config.rootWrapping) {
117
- response = railsRootWrapper.unwrap(response, this.constructor);
117
+ response = railsRootWrapper.unwrap(response, this.constructor, true);
118
118
  }
119
119
  angular.extend(this, response.data);
120
120
  }
@@ -582,7 +582,7 @@
582
582
 
583
583
  if (config.rootWrapping) {
584
584
  promise = promise.then(function (response) {
585
- return railsRootWrapper.unwrap(response, config.resourceConstructor);
585
+ return railsRootWrapper.unwrap(response, config.resourceConstructor, false);
586
586
  });
587
587
  }
588
588
 
@@ -416,11 +416,22 @@
416
416
 
417
417
  if (angular.isObject(result)) {
418
418
  angular.forEach(this.customSerializedAttributes, function (value, key) {
419
- if (angular.isFunction(value)) {
420
- value = value.call(data, data);
421
- }
419
+ if (angular.isArray(result)) {
420
+ angular.forEach(result, function (item, index) {
421
+ var itemValue = value;
422
+ if (angular.isFunction(value)) {
423
+ itemValue = itemValue.call(item, item);
424
+ }
425
+
426
+ self.serializeAttribute(item, key, itemValue);
427
+ });
428
+ } else {
429
+ if (angular.isFunction(value)) {
430
+ value = value.call(data, data);
431
+ }
422
432
 
423
- self.serializeAttribute(result, key, value);
433
+ self.serializeAttribute(result, key, value);
434
+ }
424
435
  });
425
436
  }
426
437
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angularjs-rails-resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tommy Odom
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-28 00:00:00.000000000 Z
12
+ date: 2015-02-07 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A small AngularJS add-on for integrating with Rails via JSON more easily.
15
15
  email: