conglomerate 0.11.0 → 0.11.1
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/README.md +19 -16
- data/lib/conglomerate/serializer.rb +2 -6
- data/lib/conglomerate/version.rb +1 -1
- data/spec/particle_builder_spec.rb +85 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62beba0ffa576fd7850b3956e291803ab65df121
|
4
|
+
data.tar.gz: e23e631bacf3d357ad45e3e883a9418560a273ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbd8143ba303ec112d94cdd5a108f9a066b6d869677e1516bea0ba308a43f82c6b68398252163c61bc34091a25526974f1b0dec833e38067872cbb67a32059e4
|
7
|
+
data.tar.gz: 0fe8a51f3556c1c865825c3f575a2a0506e991b66d6fd3de889b60181469a08c5775a0472471e971a8a9cda9e4a2f42a9ae88702ab874e80e106a89f9f028018
|
data/README.md
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# Conglomerate
|
2
2
|
|
3
|
-
[](http://badge.fury.io/rb/conglomerate)
|
4
3
|
[ ](https://www.codeship.io/projects/24758)
|
4
|
+
|
5
|
+
[](http://badge.fury.io/rb/conglomerate)
|
5
6
|
[](https://codeclimate.com/github/teamsnap/conglomerate)
|
6
7
|
[](https://coveralls.io/r/teamsnap/conglomerate?branch=master)
|
7
8
|
[](https://gemnasium.com/teamsnap/conglomerate)
|
@@ -35,28 +36,30 @@ Or install it yourself as:
|
|
35
36
|
```ruby
|
36
37
|
# Step 1: Create a serializer
|
37
38
|
class TeamSerializer
|
38
|
-
include Conglomerate::RootBuilder
|
39
|
+
include Conglomerate::RootBuilder.serializer
|
39
40
|
|
40
|
-
|
41
|
+
collection do
|
42
|
+
href { teams_url }
|
41
43
|
|
42
|
-
|
43
|
-
|
44
|
+
item "Team" do |item|
|
45
|
+
href { team_url(item.id) }
|
44
46
|
|
45
|
-
|
46
|
-
|
47
|
-
|
47
|
+
datum :id
|
48
|
+
datum :name
|
49
|
+
datum :event_ids
|
48
50
|
|
49
|
-
|
50
|
-
|
51
|
+
link :events, :href => Proc.new { event_url(item.event_ids.join(",")) }
|
52
|
+
end
|
51
53
|
|
52
|
-
|
54
|
+
link :root, :href => Proc.new { root_url }
|
53
55
|
|
54
|
-
|
55
|
-
|
56
|
-
|
56
|
+
query :search, :href => Proc.new { search_items_url } do
|
57
|
+
datum :id
|
58
|
+
end
|
57
59
|
|
58
|
-
|
59
|
-
|
60
|
+
template do
|
61
|
+
datum :name
|
62
|
+
end
|
60
63
|
end
|
61
64
|
end
|
62
65
|
|
@@ -193,17 +193,13 @@ module Conglomerate
|
|
193
193
|
end
|
194
194
|
|
195
195
|
def sanitize_value(object, name:, type: :value, default_value: nil)
|
196
|
-
if
|
196
|
+
if object.nil? || object.send(name).nil?
|
197
197
|
if type == :array
|
198
198
|
[]
|
199
199
|
elsif type == :object
|
200
200
|
{}
|
201
201
|
else
|
202
|
-
|
203
|
-
false
|
204
|
-
else
|
205
|
-
default_value
|
206
|
-
end
|
202
|
+
default_value
|
207
203
|
end
|
208
204
|
else
|
209
205
|
object.send(name)
|
data/lib/conglomerate/version.rb
CHANGED
@@ -58,7 +58,7 @@ class ConglomerateNullParticleSerializer
|
|
58
58
|
end
|
59
59
|
|
60
60
|
describe Conglomerate do
|
61
|
-
let(:
|
61
|
+
let(:object1) do
|
62
62
|
double(
|
63
63
|
"Object",
|
64
64
|
:id => 1,
|
@@ -74,6 +74,22 @@ describe Conglomerate do
|
|
74
74
|
)
|
75
75
|
end
|
76
76
|
|
77
|
+
let(:object2) do
|
78
|
+
double(
|
79
|
+
"Object",
|
80
|
+
:id => 2,
|
81
|
+
:description => "Tasty Pizza",
|
82
|
+
:event_date_time => DateTime.parse("1982-01-22T10:00:00+00:00"),
|
83
|
+
:event_date => Date.parse("1981-01-22"),
|
84
|
+
:event_time => Time.parse("1981-01-22T10:00:00+00:00"),
|
85
|
+
:event_id => 3,
|
86
|
+
:roster_id => nil,
|
87
|
+
:team_ids => [3,4],
|
88
|
+
:user_ids => [],
|
89
|
+
:is_available => true
|
90
|
+
)
|
91
|
+
end
|
92
|
+
|
77
93
|
let(:context) do
|
78
94
|
request = double("Request", :original_url => "https://example.com/items")
|
79
95
|
double(
|
@@ -85,32 +101,48 @@ describe Conglomerate do
|
|
85
101
|
allow(context).to receive(:item_url).with(1) {
|
86
102
|
"https://example.com/items/1"
|
87
103
|
}
|
104
|
+
allow(context).to receive(:item_url).with(2) {
|
105
|
+
"https://example.com/items/2"
|
106
|
+
}
|
88
107
|
allow(context).to receive(:event_url).with(2) {
|
89
108
|
"https://example.com/events/2"
|
90
109
|
}
|
110
|
+
allow(context).to receive(:event_url).with(3) {
|
111
|
+
"https://example.com/events/3"
|
112
|
+
}
|
91
113
|
allow(context).to receive(:events_url) {
|
92
114
|
"https://example.com/events"
|
93
115
|
}
|
94
116
|
allow(context).to receive(:team_url).with("1,2") {
|
95
117
|
"https://example.com/teams/1,2"
|
96
118
|
}
|
119
|
+
allow(context).to receive(:team_url).with("3,4") {
|
120
|
+
"https://example.com/teams/3,4"
|
121
|
+
}
|
97
122
|
allow(context).to receive(:test_url) { "abc" }
|
98
123
|
allow(context).to receive(:users_search_url).with(:object_id => 1) {
|
99
124
|
"def"
|
100
125
|
}
|
126
|
+
allow(context).to receive(:users_search_url).with(:object_id => 2) {
|
127
|
+
"ghi"
|
128
|
+
}
|
101
129
|
end
|
102
130
|
end
|
103
131
|
|
104
132
|
let(:test_serializer) do
|
105
|
-
ConglomerateTestParticleSerializer.new(
|
133
|
+
ConglomerateTestParticleSerializer.new(object1, :context => context).serialize
|
106
134
|
end
|
107
135
|
|
108
136
|
let(:extra_test_serializer) do
|
109
|
-
ConglomerateExtraTestParticleSerializer.new(
|
137
|
+
ConglomerateExtraTestParticleSerializer.new(object1, :context => context).serialize
|
110
138
|
end
|
111
139
|
|
112
140
|
let(:null_serializer) do
|
113
|
-
ConglomerateNullParticleSerializer.new(
|
141
|
+
ConglomerateNullParticleSerializer.new(object1, :context => context).serialize
|
142
|
+
end
|
143
|
+
|
144
|
+
let(:multi_test_serializer) do
|
145
|
+
ConglomerateTestParticleSerializer.new([object1, object2], :context => context).serialize
|
114
146
|
end
|
115
147
|
|
116
148
|
let(:test_collection) { test_serializer["collection"] }
|
@@ -119,6 +151,8 @@ describe Conglomerate do
|
|
119
151
|
|
120
152
|
let(:null_collection) { null_serializer["collection"] }
|
121
153
|
|
154
|
+
let(:multi_test_collection) { multi_test_serializer["collection"] }
|
155
|
+
|
122
156
|
describe "#version" do
|
123
157
|
it "sets version to 1.0" do
|
124
158
|
expect(null_collection["version"]).to eq("1.0")
|
@@ -164,8 +198,8 @@ describe Conglomerate do
|
|
164
198
|
|
165
199
|
it "doesn't have an items array if items is empty" do
|
166
200
|
test_serializer = ConglomerateTestParticleSerializer
|
167
|
-
|
168
|
-
|
201
|
+
.new(nil, :context => context)
|
202
|
+
.serialize
|
169
203
|
test_collection = test_serializer["collection"]
|
170
204
|
expect(test_collection.keys).to_not include("items")
|
171
205
|
end
|
@@ -207,6 +241,51 @@ describe Conglomerate do
|
|
207
241
|
]
|
208
242
|
)
|
209
243
|
end
|
244
|
+
|
245
|
+
it "correctly handles multiple items" do
|
246
|
+
expect(multi_test_collection["items"]).to eq(
|
247
|
+
[
|
248
|
+
{
|
249
|
+
"href" => "https://example.com/items/1",
|
250
|
+
"data" => [
|
251
|
+
{"name" => "description", "value" => "Tasty Burgers", "prompt" => "awesome"},
|
252
|
+
{"name" => "id", "value" => 1},
|
253
|
+
{"name" => "event_id", "value" => 2},
|
254
|
+
{"name" => "roster_id", "value" => nil},
|
255
|
+
{"name" => "team_ids", "value" => [1,2]},
|
256
|
+
{"name" => "event_date_time", "value" => "1981-11-28T10:00:00Z"},
|
257
|
+
{"name" => "event_date", "value" => "1981-11-28"},
|
258
|
+
{"name" => "event_time", "value" => "1981-11-28T10:00:00Z"},
|
259
|
+
{"name" => "is_available", "value" => false}
|
260
|
+
],
|
261
|
+
"links" => [
|
262
|
+
{"href" => "https://example.com/events/2", "rel" => "event"},
|
263
|
+
{"href" => "https://example.com/teams/1,2", "rel" => "teams"},
|
264
|
+
{"href" => "def", "rel" => "users"}
|
265
|
+
]
|
266
|
+
},
|
267
|
+
{
|
268
|
+
"href" => "https://example.com/items/2",
|
269
|
+
"data" => [
|
270
|
+
{"name" => "description", "value" => "Tasty Pizza", "prompt" => "awesome"},
|
271
|
+
{"name" => "id", "value" => 2},
|
272
|
+
{"name" => "event_id", "value" => 3},
|
273
|
+
{"name" => "roster_id", "value" => nil},
|
274
|
+
{"name" => "team_ids", "value" => [3,4]},
|
275
|
+
{"name" => "event_date_time", "value" => "1981-01-22T10:00:00Z"},
|
276
|
+
{"name" => "event_date", "value" => "1981-01-22"},
|
277
|
+
{"name" => "event_time", "value" => "1981-01-22T10:00:00Z"},
|
278
|
+
{"name" => "is_available", "value" => true}
|
279
|
+
],
|
280
|
+
"links" => [
|
281
|
+
{"href" => "https://example.com/events/3", "rel" => "event"},
|
282
|
+
{"href" => "https://example.com/teams/3,4", "rel" => "teams"},
|
283
|
+
{"href" => "ghi", "rel" => "users"}
|
284
|
+
]
|
285
|
+
}
|
286
|
+
]
|
287
|
+
)
|
288
|
+
end
|
210
289
|
end
|
211
290
|
|
212
291
|
context "template" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: conglomerate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shane Emmons
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-07-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|