looksist 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/features/models/employee.rb +1 -1
- data/lib/looksist/core.rb +19 -8
- data/lib/looksist/version.rb +1 -1
- data/looksist.gemspec +0 -1
- data/spec/looksist/looksist_spec.rb +61 -10
- 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: b167f1cd856e78371a8a08eb7a16c9b2b05146fa
|
4
|
+
data.tar.gz: b77389994a04d4527386ed0a9d30594a6e721599
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 388347f3c8a1d053f9c0a82a19d5561dcb604088198637792e264719a86aed7aa6839245827fcf8d4e9ffee2f91f216cb43919c08da1a60837f7afe3b9b07a40
|
7
|
+
data.tar.gz: 04893bbe31f866211bde64c6b84d1f394285aeccdec1ee6b39cdfa051a8b2b296def0aceed9dffaae4e6d671f50e2baa9bde9e7a57b1958f1691bcf113a6affc
|
data/features/models/employee.rb
CHANGED
data/lib/looksist/core.rb
CHANGED
@@ -4,28 +4,39 @@ module Looksist
|
|
4
4
|
include Looksist::Common
|
5
5
|
|
6
6
|
module ClassMethods
|
7
|
-
def lookup(what,
|
7
|
+
def lookup(what, opts)
|
8
|
+
unless opts.keys.all? { |k| [:using, :bucket_name, :as].include? k }
|
9
|
+
raise 'Incorrect usage: Invalid parameter specified'
|
10
|
+
end
|
11
|
+
using, bucket_name, as = opts[:using], opts[:bucket_name] || opts[:using], opts[:as]
|
8
12
|
if what.is_a? Array
|
9
|
-
setup_composite_lookup(
|
13
|
+
setup_composite_lookup(bucket_name, using, what, as)
|
10
14
|
else
|
11
|
-
|
12
|
-
|
13
|
-
|
15
|
+
alias_what = find_alias(as, what)
|
16
|
+
self.lookup_attributes << alias_what
|
17
|
+
define_method(alias_what) do
|
18
|
+
Looksist.redis_service.send("#{__entity__(bucket_name)}_for", self.send(using).try(:to_s))
|
14
19
|
end
|
15
20
|
end
|
16
21
|
end
|
17
22
|
|
18
23
|
private
|
19
|
-
def setup_composite_lookup(bucket, using, what)
|
24
|
+
def setup_composite_lookup(bucket, using, what, as)
|
20
25
|
what.each do |method_name|
|
21
|
-
|
26
|
+
alias_method_name = find_alias(as, method_name)
|
27
|
+
define_method(alias_method_name) do
|
22
28
|
JSON.parse(Looksist.redis_service.send("#{__entity__(bucket)}_for", self.send(using).try(:to_s)) || '{}')[method_name.to_s]
|
23
29
|
end
|
24
|
-
self.lookup_attributes <<
|
30
|
+
self.lookup_attributes << alias_method_name
|
25
31
|
end
|
26
32
|
end
|
33
|
+
|
34
|
+
def find_alias(as_map, what)
|
35
|
+
(as_map and as_map.has_key?(what)) ? as_map[what].to_sym : what
|
36
|
+
end
|
27
37
|
end
|
28
38
|
|
39
|
+
|
29
40
|
def as_json(opts)
|
30
41
|
Looksist.driver.json_opts(self, opts)
|
31
42
|
end
|
data/lib/looksist/version.rb
CHANGED
data/looksist.gemspec
CHANGED
@@ -18,7 +18,7 @@ describe Looksist do
|
|
18
18
|
use_api TEST_API
|
19
19
|
include Looksist
|
20
20
|
|
21
|
-
lookup :name, using
|
21
|
+
lookup :name, using: :employee_id
|
22
22
|
|
23
23
|
def as_json(opts)
|
24
24
|
super(opts).merge(another_attr: 'Hello World')
|
@@ -38,7 +38,7 @@ describe Looksist do
|
|
38
38
|
class Employee
|
39
39
|
include Looksist
|
40
40
|
attr_accessor :id
|
41
|
-
lookup :name, using
|
41
|
+
lookup :name, using: :id, bucket_name: 'employees'
|
42
42
|
|
43
43
|
def initialize(id)
|
44
44
|
@id = id
|
@@ -51,6 +51,57 @@ describe Looksist do
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
+
context 'Alias support for lookup' do
|
55
|
+
it 'should fetch attributes and use the alias specified in the api' do
|
56
|
+
module AliasLookup
|
57
|
+
class Employee
|
58
|
+
include Her::Model
|
59
|
+
use_api TEST_API
|
60
|
+
include Looksist
|
61
|
+
attr_accessor :id
|
62
|
+
lookup :name, using: :id, bucket_name: 'employees', as: {name: 'nome'}
|
63
|
+
|
64
|
+
def initialize(id)
|
65
|
+
@id = id
|
66
|
+
end
|
67
|
+
|
68
|
+
def as_json(opts)
|
69
|
+
super(opts).merge(id: @id)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
expect(@mock).to receive(:get).once.with('employees/1').and_return('Rajini')
|
74
|
+
e = AliasLookup::Employee.new(1)
|
75
|
+
expect(e.nome).to eq('Rajini')
|
76
|
+
expect(e.to_json).to eq("{\"nome\":\"Rajini\",\"id\":1}")
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should fetch attributes and use the alias for specific attributes in the api' do
|
80
|
+
module AliasSpecificLookup
|
81
|
+
class Employee
|
82
|
+
include Her::Model
|
83
|
+
use_api TEST_API
|
84
|
+
include Looksist
|
85
|
+
attr_accessor :id
|
86
|
+
lookup [:name, :age], using: :id, as: {name: 'nome'}
|
87
|
+
|
88
|
+
def initialize(id)
|
89
|
+
@id = id
|
90
|
+
end
|
91
|
+
|
92
|
+
def as_json(opts)
|
93
|
+
super(opts).merge(id: @id)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
expect(@mock).to receive(:get).once.with('ids/1').and_return({name: 'Rajini', age: 16}.to_json)
|
98
|
+
e = AliasSpecificLookup::Employee.new(1)
|
99
|
+
expect(e.nome).to eq('Rajini')
|
100
|
+
expect(e.age).to eq(16)
|
101
|
+
expect(e.to_json).to eq("{\"nome\":\"Rajini\",\"age\":16,\"id\":1}")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
54
105
|
context 'Lazy Evaluation' do
|
55
106
|
module LazyEval
|
56
107
|
class HerEmployee
|
@@ -58,7 +109,7 @@ describe Looksist do
|
|
58
109
|
use_api TEST_API
|
59
110
|
include Looksist
|
60
111
|
|
61
|
-
lookup :name, using
|
112
|
+
lookup :name, using: :employee_id
|
62
113
|
|
63
114
|
def as_json(opts)
|
64
115
|
super(opts).merge(another_attr: 'Hello World')
|
@@ -67,7 +118,7 @@ describe Looksist do
|
|
67
118
|
class Employee
|
68
119
|
include Looksist
|
69
120
|
attr_accessor :id
|
70
|
-
lookup :name, using
|
121
|
+
lookup :name, using: :id, bucket_name: 'employees'
|
71
122
|
|
72
123
|
def initialize(id)
|
73
124
|
@id = id
|
@@ -87,8 +138,8 @@ describe Looksist do
|
|
87
138
|
class Employee
|
88
139
|
include Looksist
|
89
140
|
attr_accessor :id, :employee_id
|
90
|
-
lookup :name, using
|
91
|
-
lookup :unavailable, using
|
141
|
+
lookup :name, using: :id
|
142
|
+
lookup :unavailable, using: :employee_id
|
92
143
|
|
93
144
|
def initialize(id)
|
94
145
|
@id = @employee_id = id
|
@@ -109,9 +160,9 @@ describe Looksist do
|
|
109
160
|
include Looksist
|
110
161
|
attr_accessor :id, :employee_id, :contact_id
|
111
162
|
|
112
|
-
lookup [:name, :location], using
|
113
|
-
lookup [:age, :sex], using
|
114
|
-
lookup [:pager, :cell], using
|
163
|
+
lookup [:name, :location], using: :id
|
164
|
+
lookup [:age, :sex], using: :employee_id
|
165
|
+
lookup [:pager, :cell], using: :contact_id
|
115
166
|
|
116
167
|
def initialize(id)
|
117
168
|
@contact_id = @id = @employee_id = id
|
@@ -140,7 +191,7 @@ describe Looksist do
|
|
140
191
|
include Looksist
|
141
192
|
attr_accessor :id
|
142
193
|
|
143
|
-
lookup [:name, :location], using
|
194
|
+
lookup [:name, :location], using: :id
|
144
195
|
|
145
196
|
def initialize(id)
|
146
197
|
@id = id
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: looksist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RC
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-10-
|
12
|
+
date: 2014-10-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|