embark-journey 0.0.13 → 0.0.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/journey/resource/enum_sets.rb +14 -0
- data/lib/journey/version.rb +1 -1
- data/spec/models/journey/resource_spec.rb +21 -1
- 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: b4e7a47883c9d0a23ab06dd8690f8a2ad9cf9811
|
4
|
+
data.tar.gz: 550ccd3b424608792f87daa3b7277a828a443005
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40df328dcace9a9d751fd69e01062cc295586be55a1c1efd2a6d30f4c4d27cfa3c4cec44820cb89b685ab7051c1a62e0354e53324de9930462e1fb146e93ad33
|
7
|
+
data.tar.gz: 4abe2a0b4861a465a841309eba0c073886a8b38af9b3fcccf28befb845bc009848d98a325c9e8cbe8efb6c8b2675b3ef54cd8c25f3deaa3d51b87722f5d0fc6a
|
data/CHANGELOG.md
CHANGED
@@ -10,6 +10,20 @@ module Journey::Resource::EnumSets
|
|
10
10
|
define_method "#{attr}_values" do
|
11
11
|
self.class.const_get(collection_const_name)
|
12
12
|
end
|
13
|
+
|
14
|
+
define_method attr do
|
15
|
+
value = attributes[attr.to_s].presence
|
16
|
+
value.presence || []
|
17
|
+
end
|
18
|
+
|
19
|
+
define_method "add_#{attr}" do |value|
|
20
|
+
new_value = value.presence
|
21
|
+
if send("#{attr}_values").include? new_value
|
22
|
+
(attributes[attr.to_s] ||= []) << new_value
|
23
|
+
else
|
24
|
+
raise "Invalid enum '#{new_value}' for '#{attr}'"
|
25
|
+
end
|
26
|
+
end
|
13
27
|
end
|
14
28
|
|
15
29
|
end
|
data/lib/journey/version.rb
CHANGED
@@ -86,11 +86,31 @@ describe Journey::Resource do
|
|
86
86
|
|
87
87
|
it 'remembers enum values' do
|
88
88
|
r = klass.create(name: 'X', asset_type: ['ATM', 'ABM'])
|
89
|
-
expect(r).to be_persisted
|
90
89
|
r = klass.find(r.id)
|
91
90
|
expect(r.asset_type).to eq ['ATM', 'ABM']
|
92
91
|
end
|
93
92
|
|
93
|
+
it 'defaults to empty array' do
|
94
|
+
r = klass.create(name: 'X', asset_type: nil)
|
95
|
+
r = klass.find(r.id)
|
96
|
+
expect(r.asset_type).to eq []
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'safely adds members' do
|
100
|
+
r = klass.create(name: 'X', asset_type: nil)
|
101
|
+
r = klass.find(r.id)
|
102
|
+
r.add_asset_type 'ATM'
|
103
|
+
expect(r.asset_type).to eq ['ATM']
|
104
|
+
r.add_asset_type 'ABM'
|
105
|
+
expect(r.asset_type).to eq ['ATM', 'ABM']
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'raises an error when trying to add unrecognized values' do
|
109
|
+
r = klass.create(name: 'X', asset_type: nil)
|
110
|
+
r = klass.find(r.id)
|
111
|
+
expect{ r.add_asset_type 'AXM' }.to raise_error
|
112
|
+
end
|
113
|
+
|
94
114
|
end
|
95
115
|
end
|
96
116
|
|