looksist 0.2.1 → 0.2.2
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/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
|