kartograph 0.0.6 → 0.0.7
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/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
|