collection_json_serializer 0.0.1 → 0.2.0

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: f682b562eebc07619c02953ffa74bc78cbe6bd20
4
- data.tar.gz: 9a23b69d8605c95f7faec47e86d2e14752dcb26d
3
+ metadata.gz: 2ec98d08e1b7a1d83f75d774fdee42b77895dfdd
4
+ data.tar.gz: 3e79907d1643600fe2ba316efdb65ab532bee250
5
5
  SHA512:
6
- metadata.gz: f48bbd38d5c5b65b6cf3592d583379a3e8b67414468fa13ca1c5369179a225f6ecb9267556feded7fa9dc8fad4f50259457f683f44ebbd4be0f9982be9ce75f2
7
- data.tar.gz: 4b2fe8dbb795bf652085a3d6f5c82bb76fdf839c97c8bd5580e42ee0b7f26b60d23bfc8f59b23745959623a1c4de20b86199ce938b5cec15c32ac855f92275de
6
+ metadata.gz: 7ed704824347ead480a3081c0be6ed6045880f348dc25dd19517aa4fc72ed86c9b58c12153363b49e5797bd9391ecb2f7d148167b6bc89114f325d507bf54968
7
+ data.tar.gz: d065ea2525e44d26844b4d864cd381a345904077e0e2562904a98b1bfba363f873798af779e23ff5d06137f52e5248daf14f38a24b0a782e887875fe3ed041d1
data/.gitignore CHANGED
@@ -12,3 +12,7 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
+
16
+ Gemfile.lock
17
+ .ruby-version
18
+ .ruby-gemset
data/.travis.yml CHANGED
@@ -1,7 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.5
4
- - 2.1.3
5
- - 2.1.0
3
+ - 2
6
4
  before_install:
7
5
  - gem install bundler
data/README.md CHANGED
@@ -2,12 +2,14 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/carlesjove/collection_json_serializer.svg?branch=master)](https://travis-ci.org/carlesjove/collection_json_serializer)
4
4
 
5
- | :warning: ** This is _not finished_ yet, so you better do not use it ** |
6
- ---------------------------------------------------------------------------
5
+ | :warning: This is _not finished_ yet, so use it at your own risk. |
6
+ --------------------------------------------------------------------
7
7
 
8
8
  A Ruby gem to respond with Collection+JSON.
9
9
 
10
- CollectionJson::Serializer formats JSON responses following the Collection+JSON media type by Mike Amudsen. It also handles input data templates.
10
+ CollectionJson::Serializer formats JSON responses following the Collection+JSON media type by Mike Amudsen.
11
+
12
+ Please note that CollectionJson::Serializer only serializes data. You still need to set the proper Headers or media-types in your app.
11
13
 
12
14
  ## Installation
13
15
 
@@ -40,28 +42,39 @@ class UserSerializer < CollectionJson::Serializer
40
42
 
41
43
  # Please note that links can only be passed as hashes
42
44
  links dashboard: { href: "http://example.com/my-dashboard" }
45
+
46
+ queries search: {
47
+ href: "http://example.com/search",
48
+ name: false # Don't automatically include the name attribute
49
+ }, pagination: {
50
+ rel: "page",
51
+ href: "http://example.com/page",
52
+ prompt: "Select a page number",
53
+ data: [
54
+ { name: "page" }
55
+ ]
56
+ }
43
57
  end
44
58
  ```
45
59
 
46
60
  Then, you pass your objects to the serializer:
47
61
 
48
62
  ```ruby
49
- # Create your object as you wish
50
63
  @user = User.new(name: "Carles Jove", email: "hola@carlus.cat")
51
64
 
65
+ # Pass it to the serializer
66
+ user_serializer = UserSerializer.new(@user)
67
+
52
68
  # You can also pass an array of objects
53
69
  # user_serializer = UserSerializer.new([@user1, @user2, etc])
54
70
 
55
- # Pass it to the serializer
56
- user_serializer = UserSerializer.new(@user)
71
+ # Pass the serializer to the builder
72
+ collection = CollectionJson::Serializer::Builder.new(user_serializer)
73
+ collection.to_json
57
74
 
58
- # Pass the serializer to the builder, and pack it as a hash
59
- builder = Builder.new(user_serializer)
60
- builder.pack
75
+ # You can get the collection as a hash, too
76
+ collection.pack
61
77
  # => { collection: { version: "1.0" } }
62
-
63
- # Get it as JSON
64
- builder.to_json
65
78
  ```
66
79
 
67
80
  This will generate this Collection+JSON response:
@@ -87,7 +100,19 @@ This will generate this Collection+JSON response:
87
100
  { "name": "name", "value": "" },
88
101
  { "name": "email", "value": "", "prompt": "My email" }
89
102
  ]
90
- }
103
+ },
104
+ "queries": [{
105
+ "rel": "search",
106
+ "href": "http://example.com/search"
107
+ },{
108
+ "rel": "page",
109
+ "href": "http://example.com/page",
110
+ "name": "pagination",
111
+ "prompt": "Select a page number",
112
+ "data": [
113
+ { "name": "page", "value": "" }
114
+ ]
115
+ }]
91
116
  }
92
117
  }
93
118
  ```
@@ -14,5 +14,5 @@ require "collection_json_serializer/validator/url"
14
14
  require "collection_json_serializer/validator/value"
15
15
 
16
16
  require "collection_json_serializer/objects/item"
17
-
18
17
  require "collection_json_serializer/objects/template"
18
+ require "collection_json_serializer/objects/query"
@@ -28,6 +28,7 @@ module CollectionJson
28
28
  add_href if @serializer.href.respond_to? :key
29
29
  add_items if @serializer.attributes.present?
30
30
  add_template if @serializer.template.present?
31
+ add_queries if @serializer.queries.present?
31
32
  end
32
33
 
33
34
  def add_href
@@ -51,6 +52,15 @@ module CollectionJson
51
52
  new(@serializer)
52
53
  @collection[:template].store :data, template.create
53
54
  end
55
+
56
+ def add_queries
57
+ @collection.store :queries, Array.new
58
+ @serializer.queries.each_index do |i|
59
+ query = CollectionJson::Serializer::Objects::Query.
60
+ new(@serializer, item: i)
61
+ @collection[:queries] << query.create
62
+ end
63
+ end
54
64
  end
55
65
  end
56
66
  end
@@ -50,8 +50,9 @@ module CollectionJson
50
50
 
51
51
  start_object :links, Array.new
52
52
  @item[:links] << {
53
- name: params[:name].to_s,
54
- href: params[:properties][:href]
53
+ rel: set_rel(params),
54
+ href: params[:properties][:href],
55
+ name: params[:name].to_s
55
56
  }.merge!(params[:properties])
56
57
  end if @serializer.links.present?
57
58
  end
@@ -64,6 +65,14 @@ module CollectionJson
64
65
  url = @serializer.href[:self] || @serializer.href
65
66
  parse_url(url, @resource)
66
67
  end
68
+
69
+ def set_rel(params)
70
+ if params[:properties].key? :rel
71
+ params[:properties][:rel].to_s
72
+ else
73
+ params[:name].to_s
74
+ end
75
+ end
67
76
  end
68
77
  end
69
78
  end
@@ -0,0 +1,43 @@
1
+ module CollectionJson
2
+ class Serializer
3
+ class Objects
4
+ class Query
5
+ def initialize(serializer, item: 0)
6
+ @serializer = serializer
7
+ @index = item >= 0 ? item : 0
8
+ @key = @serializer.queries.first.keys[@index]
9
+ @resource = @serializer.queries.first[@key]
10
+ @query = Hash.new
11
+ end
12
+
13
+ def create
14
+ @query[:rel] = @resource[:rel] || @key
15
+ @query[:href] = @resource[:href]
16
+
17
+ # Optional fields
18
+ @query[:name] = extract_name if name?
19
+ @query[:prompt] = @resource[:prompt] if @resource[:prompt]
20
+ @query[:data] = add_data if @resource[:data]
21
+
22
+ @query
23
+ end
24
+
25
+ private
26
+
27
+ def extract_name
28
+ @resource[:name].present? ? @resource[:name] : @key
29
+ end
30
+
31
+ def add_data
32
+ @resource[:data].each_with_object([]) do |attr, data|
33
+ data << { name: attr[:name], value: nil.to_s }
34
+ end
35
+ end
36
+
37
+ def name?
38
+ @resource[:name] != false
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -5,6 +5,7 @@ module CollectionJson
5
5
  attr_accessor :attributes
6
6
  attr_accessor :template
7
7
  attr_accessor :links
8
+ attr_accessor :queries
8
9
  end
9
10
 
10
11
  def self.inherited(base)
@@ -12,6 +13,7 @@ module CollectionJson
12
13
  base.attributes = []
13
14
  base.template = []
14
15
  base.links = []
16
+ base.queries = []
15
17
  end
16
18
 
17
19
  def self.href(*attrs)
@@ -30,6 +32,10 @@ module CollectionJson
30
32
  @links.concat attrs
31
33
  end
32
34
 
35
+ def self.queries(*attrs)
36
+ @queries.concat attrs
37
+ end
38
+
33
39
  attr_accessor :resources
34
40
 
35
41
  def initialize(resource)
@@ -56,6 +62,10 @@ module CollectionJson
56
62
  self.class.links
57
63
  end
58
64
 
65
+ def queries
66
+ self.class.queries
67
+ end
68
+
59
69
  def invalid?
60
70
  Validator.new(self).invalid?
61
71
  end
@@ -26,7 +26,8 @@ module CollectionJson
26
26
  :attributes,
27
27
  :href,
28
28
  :links,
29
- :template
29
+ :template,
30
+ :queries
30
31
  ].each { |m| send("validate_#{m}") }
31
32
  end
32
33
 
@@ -98,6 +99,42 @@ module CollectionJson
98
99
  end if @serializer.template.any?
99
100
  end
100
101
 
102
+ def validate_queries
103
+ @serializer.queries.each do |query|
104
+ params = query.extract_params
105
+
106
+ unless params[:properties].key? :href
107
+ error_for :missing_attribute,
108
+ root: :queries,
109
+ path: [params[:name], "href"]
110
+
111
+ next
112
+ end
113
+
114
+ if url_is_invalid? params[:properties][:href]
115
+ error_for :url, root: :queries, path: [params[:name], "href"]
116
+ end
117
+
118
+ params[:properties].each do |key, value|
119
+ next if key == :data || key == :href
120
+
121
+ if value_is_invalid?(value)
122
+ error_for :value, root: :queries, path: [params[:name], key]
123
+ end
124
+ end
125
+
126
+ if params[:properties].key?(:data)
127
+ params[:properties][:data].each do |hash|
128
+ if value_is_invalid?(hash[:name])
129
+ error_for :value,
130
+ root: :queries,
131
+ path: [params[:name], "data", "name"]
132
+ end
133
+ end
134
+ end
135
+ end if @serializer.queries.present?
136
+ end
137
+
101
138
  def value_is_invalid?(value)
102
139
  v = CollectionJson::Serializer::Validator::Value.new(value)
103
140
  v.invalid?
@@ -108,7 +145,7 @@ module CollectionJson
108
145
  v.invalid?
109
146
  end
110
147
 
111
- def error_for(kind, root:, path: [])
148
+ def error_for(kind, root: root, path: [])
112
149
  case kind.to_sym
113
150
  when :url
114
151
  ending = " is an invalid URL"
@@ -1,5 +1,5 @@
1
1
  module CollectionJson
2
2
  class Serializer
3
- VERSION = "0.0.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -33,8 +33,9 @@ module CollectionJson
33
33
  ],
34
34
  links: [
35
35
  {
36
- name: "dashboard",
37
- href: "http://example.com/my-dashboard"
36
+ rel: "dashboard",
37
+ href: "http://example.com/my-dashboard",
38
+ name: "dashboard"
38
39
  }
39
40
  ]
40
41
  }
@@ -51,7 +52,13 @@ module CollectionJson
51
52
  prompt: "My email"
52
53
  }
53
54
  ]
54
- }
55
+ },
56
+ queries: [
57
+ {
58
+ rel: "search",
59
+ href: "http://example.com/search"
60
+ }
61
+ ]
55
62
  }
56
63
  }
57
64
 
@@ -80,8 +87,9 @@ module CollectionJson
80
87
  ],
81
88
  links: [
82
89
  {
83
- name: "dashboard",
84
- href: "http://example.com/my-dashboard"
90
+ rel: "dashboard",
91
+ href: "http://example.com/my-dashboard",
92
+ name: "dashboard"
85
93
  }
86
94
  ]
87
95
  },
@@ -99,8 +107,9 @@ module CollectionJson
99
107
  ],
100
108
  links: [
101
109
  {
102
- name: "dashboard",
103
- href: "http://example.com/my-dashboard"
110
+ rel: "dashboard",
111
+ href: "http://example.com/my-dashboard",
112
+ name: "dashboard"
104
113
  }
105
114
  ]
106
115
  }
@@ -117,7 +126,13 @@ module CollectionJson
117
126
  prompt: "My email"
118
127
  }
119
128
  ]
120
- }
129
+ },
130
+ queries: [
131
+ {
132
+ rel: "search",
133
+ href: "http://example.com/search"
134
+ }
135
+ ]
121
136
  }
122
137
  }
123
138
 
@@ -4,4 +4,15 @@ class UserSerializer < CollectionJson::Serializer
4
4
  attributes :name, :email
5
5
  template :name, email: { prompt: "My email" }
6
6
  links dashboard: { href: "http://example.com/my-dashboard" }
7
+ queries search: {
8
+ href: "http://example.com/search",
9
+ name: false
10
+ }, pagination: {
11
+ rel: "page",
12
+ href: "http://example.com/page",
13
+ prompt: "Select a page number",
14
+ data: [
15
+ { name: "page" }
16
+ ]
17
+ }
7
18
  end
@@ -9,3 +9,16 @@ Dir.glob(File.dirname(__FILE__) + "/fixtures/serializers/**/*.rb") { |file| requ
9
9
 
10
10
  require "active_support/json"
11
11
  require "active_support/inflector"
12
+
13
+ module TestHelper
14
+ def empty_serializer_for(object)
15
+ serializer = CollectionJson::Serializer.new(object)
16
+ serializer.class.attributes = []
17
+ serializer.class.href = []
18
+ serializer.class.links = []
19
+ serializer.class.template = []
20
+ serializer.class.queries = []
21
+
22
+ serializer
23
+ end
24
+ end
@@ -5,6 +5,8 @@ module CollectionJson
5
5
  class Objects
6
6
  class Item
7
7
  class TestItem < Minitest::Test
8
+ include TestHelper
9
+
8
10
  def setup
9
11
  @user1 = User.new(name: "Carles Jove", email: "hola@carlus.cat")
10
12
  @user2 = User.new(name: "Aina Jove", email: "hola@example.com")
@@ -12,6 +14,17 @@ module CollectionJson
12
14
  @item = Item.new(@user_serializer)
13
15
  end
14
16
 
17
+ def test_that_rel_will_beadded_from_the_name_when_missing
18
+ serializer = empty_serializer_for(@user1)
19
+ serializer.class.attributes = [:name]
20
+ serializer.class.links = [dashboard: { href: "http://example.com" }]
21
+ item = Item.new(serializer)
22
+ actual = item.create[:links].first
23
+
24
+ assert actual.include? :rel
25
+ assert_equal "dashboard", actual[:rel]
26
+ end
27
+
15
28
  def test_that_an_item_can_be_build
16
29
  expected = {
17
30
  href: "http://example.com/users/#{@user1.id}",
@@ -20,7 +33,11 @@ module CollectionJson
20
33
  { name: "email", value: "hola@carlus.cat" }
21
34
  ],
22
35
  links: [
23
- { name: "dashboard", href: "http://example.com/my-dashboard" }
36
+ {
37
+ rel: "dashboard",
38
+ href: "http://example.com/my-dashboard",
39
+ name: "dashboard"
40
+ }
24
41
  ]
25
42
  }
26
43
 
@@ -38,7 +55,11 @@ module CollectionJson
38
55
  { name: "email", value: "hola@example.com" }
39
56
  ],
40
57
  links: [
41
- { name: "dashboard", href: "http://example.com/my-dashboard" }
58
+ {
59
+ rel: "dashboard",
60
+ href: "http://example.com/my-dashboard",
61
+ name: "dashboard"
62
+ }
42
63
  ]
43
64
  }
44
65
 
@@ -50,9 +71,12 @@ module CollectionJson
50
71
  item = Item.new(custom_serializer)
51
72
 
52
73
  expected = {
53
- data: [
54
- { name: "name", value: "Carles Jove", anything: "at all", whatever: "really" },
55
- ]
74
+ data: [{
75
+ name: "name",
76
+ value: "Carles Jove",
77
+ anything: "at all",
78
+ whatever: "really"
79
+ }]
56
80
  }
57
81
  assert_equal expected.to_json, item.create.to_json
58
82
  end
@@ -62,9 +86,13 @@ module CollectionJson
62
86
  item = Item.new(custom_serializer)
63
87
 
64
88
  expected = {
65
- links: [
66
- { name: "dashboard", href: "/my-dashboard", anything: "at all", whatever: "really" }
67
- ]
89
+ links: [{
90
+ rel: "dashboard",
91
+ name: "dashboard",
92
+ href: "/my-dashboard",
93
+ anything: "at all",
94
+ whatever: "really"
95
+ }]
68
96
  }
69
97
 
70
98
  assert_equal expected[:links], item.create[:links]
@@ -0,0 +1,41 @@
1
+ require "minitest_helper"
2
+
3
+ module CollectionJson
4
+ class Serializer
5
+ class Objects
6
+ class Query
7
+ class TestQuery < Minitest::Test
8
+ def setup
9
+ @user = User.new(name: "Carles Jove", email: "hola@carlus.cat")
10
+ @user_serializer = UserSerializer.new(@user)
11
+ end
12
+
13
+ def test_that_a_query_can_be_build
14
+ query = Query.new(@user_serializer, item: 0)
15
+ expected = {
16
+ rel: "search",
17
+ href: "http://example.com/search"
18
+ }
19
+
20
+ assert_equal expected.to_json, query.create.to_json
21
+ end
22
+
23
+ def test_that_a_query_can_include_optional_fields
24
+ query = Query.new(@user_serializer, item: 1)
25
+ expected = {
26
+ rel: "page",
27
+ href: "http://example.com/page",
28
+ name: "pagination",
29
+ prompt: "Select a page number",
30
+ data: [
31
+ { name: "page", value: "" }
32
+ ]
33
+ }
34
+
35
+ assert_equal expected.to_json, query.create.to_json
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -3,6 +3,8 @@ require "minitest_helper"
3
3
  module CollectionJson
4
4
  class Serializer
5
5
  class TestHref < Minitest::Test
6
+ include TestHelper
7
+
6
8
  def setup
7
9
  @user = User.new(name: "Carles Jove", email: "hola@carlus.cat")
8
10
  @user_serializer = UserSerializer.new(@user)
@@ -23,10 +25,8 @@ module CollectionJson
23
25
  end
24
26
 
25
27
  def test_that_a_placeholder_can_be_used_for_urls
26
- user_serializer = CollectionJson::Serializer.new(@user)
28
+ user_serializer = empty_serializer_for(@user)
27
29
  user_serializer.class.attributes = [:name]
28
- user_serializer.class.links = []
29
- user_serializer.class.template = []
30
30
  user_serializer.class.href = [self: "http://example.com/users/{id}"]
31
31
  builder = Builder.new(user_serializer)
32
32
 
@@ -0,0 +1,31 @@
1
+ require "minitest_helper"
2
+
3
+ module CollectionJson
4
+ class Serializer
5
+ class TestQueries < Minitest::Test
6
+ def setup
7
+ @user = User.new(name: "Carles Jove", email: "hola@carlus.cat")
8
+ @user_serializer = UserSerializer.new(@user)
9
+ end
10
+
11
+ def test_template_attributes
12
+ expected = [
13
+ search: {
14
+ href: "http://example.com/search",
15
+ name: false
16
+ },
17
+ pagination: {
18
+ rel: "page",
19
+ href: "http://example.com/page",
20
+ prompt: "Select a page number",
21
+ data: [
22
+ { name: "page" }
23
+ ]
24
+ }
25
+ ]
26
+
27
+ assert_equal expected, @user_serializer.class.queries
28
+ end
29
+ end
30
+ end
31
+ end
@@ -4,6 +4,8 @@ module CollectionJson
4
4
  class Serializer
5
5
  class Validator
6
6
  class TestInvalid < Minitest::Test
7
+ include TestHelper
8
+
7
9
  def setup
8
10
  @user = User.new(
9
11
  name: "Carles Jove",
@@ -23,14 +25,10 @@ module CollectionJson
23
25
  []
24
26
  ]
25
27
 
26
- @invalid = CollectionJson::Serializer.new(@user)
27
- @invalid.class.attributes = []
28
- @invalid.class.href = []
29
- @invalid.class.links = []
30
- @invalid.class.template = []
28
+ @invalid = empty_serializer_for(@user)
31
29
  end
32
30
 
33
- # href
31
+ # Href
34
32
  def test_that_href_generates_errors
35
33
  @invalid.class.href = [self: "/users/1", collection: "www.users.com"]
36
34
 
@@ -49,7 +47,7 @@ module CollectionJson
49
47
  include? "href is an invalid URL"
50
48
  end
51
49
 
52
- # links
50
+ # Links
53
51
  def test_that_links_generates_errors
54
52
  @invalid.class.links = [dashboard: { href: "/my-dashboard" }]
55
53
  assert @invalid.invalid?
@@ -77,7 +75,7 @@ module CollectionJson
77
75
  include? "links:dashboard:href is missing"
78
76
  end
79
77
 
80
- # attributes
78
+ # Attributes
81
79
  def test_that_invalid_attributes_return_values_generate_errors
82
80
  @invalid.class.attributes = [:name]
83
81
 
@@ -112,7 +110,7 @@ module CollectionJson
112
110
  end
113
111
  end
114
112
 
115
- # template
113
+ # Template
116
114
  def test_that_template_values_validate
117
115
  @invalid_value_types.each do |invalidate|
118
116
  @invalid.class.template = [
@@ -132,6 +130,62 @@ module CollectionJson
132
130
  include? "template:name:name is an invalid value"
133
131
  end
134
132
  end
133
+
134
+ # Queries
135
+ def test_that_queries_validate_href_format
136
+ @invalid.class.queries = [
137
+ search: {
138
+ href: "not-valid"
139
+ }
140
+ ]
141
+
142
+ assert @invalid.invalid?,
143
+ "not-valid should be invalid"
144
+ assert @invalid.errors.include?(:queries),
145
+ "not-valid should be invalid"
146
+ assert @invalid.errors[:queries][0].
147
+ include? "queries:search:href is an invalid URL"
148
+ end
149
+
150
+ def test_that_queries_href_is_required
151
+ @invalid.class.queries = [
152
+ search: {
153
+ name: "missing href"
154
+ }
155
+ ]
156
+
157
+ assert @invalid.invalid?
158
+ assert @invalid.errors.include?(:queries),
159
+ "should include queries errors"
160
+ assert @invalid.errors[:queries][0].
161
+ include? "queries:search:href is missing"
162
+ end
163
+
164
+ def test_that_queries_values_are_validated
165
+ @invalid_value_types.each do |invalidate|
166
+ @invalid.class.queries = [
167
+ search: {
168
+ href: "http://example.com/",
169
+ name: invalidate,
170
+ rel: invalidate,
171
+ data: [
172
+ name: invalidate
173
+ ]
174
+ }
175
+ ]
176
+
177
+ assert @invalid.invalid?,
178
+ "#{invalidate} should be invalid"
179
+ assert @invalid.errors.include?(:queries),
180
+ "should include errors for queries"
181
+ assert @invalid.errors[:queries][0].
182
+ include? "queries:search:name is an invalid value"
183
+ assert @invalid.errors[:queries][1].
184
+ include? "queries:search:rel is an invalid value"
185
+ assert @invalid.errors[:queries][2].
186
+ include? "queries:search:data:name is an invalid value"
187
+ end
188
+ end
135
189
  end
136
190
  end
137
191
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collection_json_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carles Jove i Buxeda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-16 00:00:00.000000000 Z
11
+ date: 2014-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -86,6 +86,7 @@ files:
86
86
  - lib/collection_json_serializer/core_ext/hash.rb
87
87
  - lib/collection_json_serializer/core_ext/symbol.rb
88
88
  - lib/collection_json_serializer/objects/item.rb
89
+ - lib/collection_json_serializer/objects/query.rb
89
90
  - lib/collection_json_serializer/objects/template.rb
90
91
  - lib/collection_json_serializer/serializer.rb
91
92
  - lib/collection_json_serializer/support.rb
@@ -106,10 +107,12 @@ files:
106
107
  - test/fixtures/serializers/valid_serializer.rb
107
108
  - test/minitest_helper.rb
108
109
  - test/objects/item_test.rb
110
+ - test/objects/queries_test.rb
109
111
  - test/objects/template_test.rb
110
112
  - test/serializer/data_test.rb
111
113
  - test/serializer/href_test.rb
112
114
  - test/serializer/links_test.rb
115
+ - test/serializer/queries_test.rb
113
116
  - test/serializer/template_test.rb
114
117
  - test/support/ext_test.rb
115
118
  - test/support/support_test.rb
@@ -155,10 +158,12 @@ test_files:
155
158
  - test/fixtures/serializers/valid_serializer.rb
156
159
  - test/minitest_helper.rb
157
160
  - test/objects/item_test.rb
161
+ - test/objects/queries_test.rb
158
162
  - test/objects/template_test.rb
159
163
  - test/serializer/data_test.rb
160
164
  - test/serializer/href_test.rb
161
165
  - test/serializer/links_test.rb
166
+ - test/serializer/queries_test.rb
162
167
  - test/serializer/template_test.rb
163
168
  - test/support/ext_test.rb
164
169
  - test/support/support_test.rb