kartograph 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kartograph/artist.rb +1 -1
- data/lib/kartograph/property.rb +5 -1
- data/lib/kartograph/version.rb +1 -1
- data/spec/lib/kartograph/artist_spec.rb +12 -0
- data/spec/lib/kartograph/property_spec.rb +11 -0
- data/spec/lib/kartograph/sculptor_spec.rb +3 -1
- data/spec/support/dummy_user.rb +1 -2
- 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: ca1d38c7c5914edc0a9b78ffed7701e8b3cefff7
|
4
|
+
data.tar.gz: 386c0e6f38402b271d00907596052e34327c1ca4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 254b47f2276dea83ef2e3de5ec260cc1ab3d6ed57a557382d725c1ee2d566f3e5f505ad4daacba0015e4112d63cee3b713e362a56115fb759f3b192516305eaa
|
7
|
+
data.tar.gz: 4a307fb10db634870adaa9f3d9c291803ace606f299e27a46cb91d45466203d17a33bd6b7d614541e517059af624b1db210e3ad3e92230f6702fe11d7d62a7b5
|
data/lib/kartograph/artist.rb
CHANGED
@@ -15,7 +15,7 @@ module Kartograph
|
|
15
15
|
scoped_properties = scope ? properties.filter_by_scope(scope) : properties
|
16
16
|
scoped_properties.each_with_object({}) do |property, mapped|
|
17
17
|
raise ArgumentError, "#{object} does not respond to #{property.name}, so we can't map it" unless object.respond_to?(property.name)
|
18
|
-
mapped[property.
|
18
|
+
mapped[property.key] = property.value_for(object, scope)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
data/lib/kartograph/property.rb
CHANGED
@@ -19,6 +19,10 @@ module Kartograph
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
def key
|
23
|
+
options[:key] || name
|
24
|
+
end
|
25
|
+
|
22
26
|
def value_for(object, scope = nil)
|
23
27
|
value = object.send(name)
|
24
28
|
map ? artist_value(value, scope) : value
|
@@ -26,7 +30,7 @@ module Kartograph
|
|
26
30
|
|
27
31
|
def value_from(object, scope = nil)
|
28
32
|
return if object.nil?
|
29
|
-
value = object.has_key?(
|
33
|
+
value = object.has_key?(key) ? object[key] : object[key.to_s]
|
30
34
|
map ? sculpt_value(value, scope) : value
|
31
35
|
end
|
32
36
|
|
data/lib/kartograph/version.rb
CHANGED
@@ -35,6 +35,18 @@ describe Kartograph::Artist do
|
|
35
35
|
expect { artist.draw }.to raise_error(ArgumentError).with_message("#{object} does not respond to bunk, so we can't map it")
|
36
36
|
end
|
37
37
|
|
38
|
+
context 'for a property with a key set on it' do
|
39
|
+
it 'returns the hash with the key set correctly' do
|
40
|
+
object = double('object', hello: 'world')
|
41
|
+
properties << Kartograph::Property.new(:hello, key: :hola)
|
42
|
+
|
43
|
+
artist = Kartograph::Artist.new(object, map)
|
44
|
+
masterpiece = artist.draw
|
45
|
+
|
46
|
+
expect(masterpiece).to include(hola: 'world')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
38
50
|
context 'for filtered drawing' do
|
39
51
|
it 'only returns the scoped properties' do
|
40
52
|
object = double('object', hello: 'world', foo: 'bar')
|
@@ -9,6 +9,17 @@ describe Kartograph::Property do
|
|
9
9
|
property = Kartograph::Property.new(name, options)
|
10
10
|
expect(property.name).to eq(name)
|
11
11
|
expect(property.options).to eq(options)
|
12
|
+
expect(property.key).to eq(:hey)
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'with a key' do
|
16
|
+
it 'sets the key' do
|
17
|
+
name = :hey
|
18
|
+
options = { key: 'Hey' }
|
19
|
+
property = Kartograph::Property.new(name, options)
|
20
|
+
|
21
|
+
expect(property.key).to eq('Hey')
|
22
|
+
end
|
12
23
|
end
|
13
24
|
|
14
25
|
context 'with a block' do
|
@@ -15,13 +15,14 @@ describe Kartograph::Sculptor do
|
|
15
15
|
|
16
16
|
describe '#sculpt' do
|
17
17
|
let(:map) { Kartograph::Map.new }
|
18
|
-
let(:object) { { 'id' => 343, 'name' => 'Guilty Spark' } }
|
18
|
+
let(:object) { { 'id' => 343, 'name' => 'Guilty Spark', 'email_address' => 'guilty@bungie.net' } }
|
19
19
|
|
20
20
|
context 'without a scope' do
|
21
21
|
before do
|
22
22
|
map.mapping DummyUser
|
23
23
|
map.property :id, scopes: [:read]
|
24
24
|
map.property :name, scopes: [:read, :create]
|
25
|
+
map.property :email, scopes: [:read, :create], key: 'email_address'
|
25
26
|
end
|
26
27
|
|
27
28
|
it 'returns a coerced user' do
|
@@ -31,6 +32,7 @@ describe Kartograph::Sculptor do
|
|
31
32
|
expect(sculpted).to be_kind_of(DummyUser)
|
32
33
|
expect(sculpted.id).to eq(object['id'])
|
33
34
|
expect(sculpted.name).to eq(object['name'])
|
35
|
+
expect(sculpted.email).to eq(object['email_address'])
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
data/spec/support/dummy_user.rb
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
end
|
1
|
+
DummyUser = Struct.new(:id, :name, :comment, :email)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kartograph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Ross
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|