data_maps 0.3.3 → 0.3.4
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/Gemfile.lock +1 -1
- data/lib/data_maps/statement.rb +6 -2
- data/lib/data_maps/version.rb +1 -1
- data/spec/data_maps/statement_spec.rb +21 -0
- 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: af2821ba45839fc317a21346c3cfad439ad99757
|
4
|
+
data.tar.gz: 606ba1f46ff79b1328ddd8d398b037f8ff9b2fee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3161cccfdd881fbd6cd6ada8cfe52c692d4df938aa7d6f771afc7fe913950b41145c314e8036a2bfbedd34dc01ec4cf642849440b4edeb83fd7ced331e43c74f
|
7
|
+
data.tar.gz: 3127ac3add6f6dc61b91276bddc8f20fb084d414a4a03920f37be42d0b98923b1d50c1931bc64c6bf6e26ee48bdcda5255270662e6c93ec64637fa0c219e0c78
|
data/Gemfile.lock
CHANGED
data/lib/data_maps/statement.rb
CHANGED
@@ -47,7 +47,7 @@ module DataMaps
|
|
47
47
|
data = _fetch_from_data(data)
|
48
48
|
|
49
49
|
data = execute_conditions(data)
|
50
|
-
data = execute_converter(data)
|
50
|
+
data = execute_converter(data) unless data.is_a? DataMaps::FilteredValue
|
51
51
|
|
52
52
|
[to, data]
|
53
53
|
end
|
@@ -58,7 +58,11 @@ module DataMaps
|
|
58
58
|
# @return [mixed] mutated data
|
59
59
|
def execute_conditions(data)
|
60
60
|
conditions.reduce(data) do |data, condition|
|
61
|
-
|
61
|
+
if data.is_a? DataMaps::FilteredValue
|
62
|
+
data
|
63
|
+
else
|
64
|
+
condition.execute(data)
|
65
|
+
end
|
62
66
|
end
|
63
67
|
end
|
64
68
|
|
data/lib/data_maps/version.rb
CHANGED
@@ -82,6 +82,17 @@ describe DataMaps::Statement do
|
|
82
82
|
|
83
83
|
expect(statement.execute(data)).to eq ['to', 'some double mutated value']
|
84
84
|
end
|
85
|
+
|
86
|
+
it 'doesn\'t call execute_converter if condition returns a FilteredValue' do
|
87
|
+
statement = DataMaps::Statement.new('from', 'to', [], [])
|
88
|
+
data = { 'from' => 'some value' }
|
89
|
+
filtered_value = DataMaps::FilteredValue.new('some value')
|
90
|
+
|
91
|
+
expect(statement).to receive(:execute_conditions).with('some value').and_return(filtered_value)
|
92
|
+
expect(statement).not_to receive(:execute_converter)
|
93
|
+
|
94
|
+
expect(statement.execute(data)).to eq ['to', filtered_value]
|
95
|
+
end
|
85
96
|
end
|
86
97
|
|
87
98
|
describe '#execute_conditions' do
|
@@ -93,6 +104,16 @@ describe DataMaps::Statement do
|
|
93
104
|
|
94
105
|
expect(statement.execute_conditions('some value')).to eq 'some mutated value'
|
95
106
|
end
|
107
|
+
|
108
|
+
it 'doesn\'t execute the next converter if the first one returns a filtered value' do
|
109
|
+
statement = DataMaps::Statement.new('from', 'to', [DataMaps::Condition.new([], []), DataMaps::Condition.new([], [])], [])
|
110
|
+
filtered_value = DataMaps::FilteredValue.new('some value')
|
111
|
+
|
112
|
+
expect(statement.conditions[0]).to receive(:execute).with('some value').and_return(filtered_value)
|
113
|
+
expect(statement.conditions[1]).not_to receive(:execute)
|
114
|
+
|
115
|
+
expect(statement.execute_conditions('some value')).to eq filtered_value
|
116
|
+
end
|
96
117
|
end
|
97
118
|
|
98
119
|
describe '#execute_converter' do
|