halogen 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/halogen/embeds.rb +4 -1
- data/lib/halogen/version.rb +1 -1
- data/spec/halogen/embeds_spec.rb +16 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ecf269aadcd3040623710454934d01055e58f022
|
4
|
+
data.tar.gz: c389775b46ff5daabf1bb4ccaae8b4967f4eaf89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9ae4d73ca13c7ad45c68c718a527111b522adcc9b02772d641403edb9e642c564afd0a5172b2cb6908c034a35059a03f143555af0a812ad2a97e488529d67c9
|
7
|
+
data.tar.gz: a36c479ad935f1f2d74df13f14afb7652630dc6a9ca37b652cbf64499f2198b3afc839889f4c7328f0eb154b3265180b26799f065c60827ac4a447a4e767f256
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Halogen
|
2
2
|
|
3
|
-
[![
|
3
|
+
[![Code Climate](https://codeclimate.com/repos/552430af695680100500b659/badges/cdae8d5a10147d135be9/gpa.svg)](https://codeclimate.com/repos/552430af695680100500b659/feed)
|
4
4
|
|
5
5
|
This library provides a framework-agnostic interface for generating
|
6
6
|
[HAL+JSON](http://stateless.co/hal_specification.html)
|
@@ -192,7 +192,7 @@ link(:find, :templated) { '/goats/{?id}' }
|
|
192
192
|
# => { _links: { find: { href: '/goats/{?id}', templated: true } } ... }
|
193
193
|
```
|
194
194
|
|
195
|
-
|
195
|
+
#### Embedded resources
|
196
196
|
|
197
197
|
Embedded resources are not rendered by default. They will be included if both
|
198
198
|
of the following conditions are met:
|
data/lib/halogen/embeds.rb
CHANGED
@@ -76,7 +76,10 @@ module Halogen
|
|
76
76
|
def render_child(repr, opts)
|
77
77
|
return unless repr.class.included_modules.include?(Halogen)
|
78
78
|
|
79
|
-
repr.options
|
79
|
+
repr.options[:embed] ||= {}
|
80
|
+
repr.options[:embed].merge!(opts)
|
81
|
+
|
82
|
+
repr.options[:parent] = self
|
80
83
|
|
81
84
|
repr.render
|
82
85
|
end
|
data/lib/halogen/version.rb
CHANGED
data/spec/halogen/embeds_spec.rb
CHANGED
@@ -147,29 +147,35 @@ describe Halogen::Embeds do
|
|
147
147
|
|
148
148
|
describe '#render_child' do
|
149
149
|
let :representer do
|
150
|
-
|
150
|
+
Class.new do
|
151
|
+
include Halogen
|
152
|
+
|
153
|
+
property(:verify_parent) { parent.object_id }
|
154
|
+
property(:verify_opts) { options[:embed] }
|
155
|
+
end.new
|
151
156
|
end
|
152
157
|
|
153
158
|
it 'returns nil if child is not a representer' do
|
154
159
|
[nil, 1, ''].each do |child|
|
155
|
-
expect(
|
160
|
+
expect(klass.new.render_child(child, {})).to be_nil
|
156
161
|
end
|
157
162
|
end
|
158
163
|
|
159
164
|
it 'renders child representer with correct parent and options' do
|
160
|
-
|
161
|
-
include Halogen
|
162
|
-
|
163
|
-
property(:verify_parent) { parent.object_id }
|
164
|
-
property(:verify_opts) { options[:embed] }
|
165
|
-
end.new
|
166
|
-
|
167
|
-
result = representer.render_child(child, foo: 'bar')
|
165
|
+
result = representer.render_child(representer, foo: 'bar')
|
168
166
|
|
169
167
|
expect(result).to eq(
|
170
168
|
verify_parent: representer.object_id,
|
171
169
|
verify_opts: { foo: 'bar' })
|
172
170
|
end
|
171
|
+
|
172
|
+
it 'merges child options if already present' do
|
173
|
+
representer.options[:embed] = { bar: 'bar' }
|
174
|
+
|
175
|
+
result = representer.render_child(representer, foo: 'foo')
|
176
|
+
|
177
|
+
expect(result[:verify_opts]).to eq(foo: 'foo', bar: 'bar')
|
178
|
+
end
|
173
179
|
end
|
174
180
|
|
175
181
|
describe '#embed_options' do
|