HornsAndHooves-flat_map 0.2.1 → 0.5.0
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 +5 -5
- data/.ruby-version +1 -1
- data/Gemfile +11 -14
- data/HornsAndHooves-flat_map.gemspec +6 -6
- data/lib/flat_map/model_mapper/persistence.rb +0 -7
- data/lib/flat_map/open_mapper/persistence.rb +1 -1
- data/lib/flat_map/version.rb +1 -1
- data/spec/flat_map/errors_spec.rb +3 -3
- data/spec/flat_map/mapper/attribute_methods_spec.rb +11 -11
- data/spec/flat_map/mapper/callbacks_spec.rb +7 -7
- data/spec/flat_map/mapper/factory_spec.rb +72 -70
- data/spec/flat_map/mapper/mapping_spec.rb +17 -17
- data/spec/flat_map/mapper/mounting_spec.rb +24 -24
- data/spec/flat_map/mapper/persistence_spec.rb +34 -31
- data/spec/flat_map/mapper/skipping_spec.rb +17 -16
- data/spec/flat_map/mapper/targeting_spec.rb +32 -33
- data/spec/flat_map/mapper/traits_spec.rb +22 -22
- data/spec/flat_map/mapper/validations_spec.rb +7 -7
- data/spec/flat_map/mapping/factory_spec.rb +1 -1
- data/spec/flat_map/mapping/reader/basic_spec.rb +7 -7
- data/spec/flat_map/mapping/reader/formatted_spec.rb +9 -9
- data/spec/flat_map/mapping/reader/method_spec.rb +5 -5
- data/spec/flat_map/mapping/reader/proc_spec.rb +5 -5
- data/spec/flat_map/mapping/writer/basic_spec.rb +6 -6
- data/spec/flat_map/mapping/writer/method_spec.rb +4 -4
- data/spec/flat_map/mapping/writer/proc_spec.rb +4 -4
- data/spec/flat_map/mapping_spec.rb +24 -24
- data/spec/spec_helper.rb +6 -0
- metadata +30 -18
@@ -1,15 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe FlatMap::Mapping::Reader::Basic do
|
4
|
-
let(:target){ double('target') }
|
5
|
-
let(:mapping){ double('mapping') }
|
6
|
-
let(:reader){ described_class.new(mapping) }
|
4
|
+
let(:target) { double('target') }
|
5
|
+
let(:mapping) { double('mapping') }
|
6
|
+
let(:reader) { described_class.new(mapping) }
|
7
7
|
|
8
8
|
specify("#read should fetch value from mapping's target_attribute") do
|
9
|
-
mapping.
|
10
|
-
mapping.
|
11
|
-
target.
|
9
|
+
expect(mapping).to receive(:target ).and_return(target)
|
10
|
+
expect(mapping).to receive(:target_attribute).and_return(:foo)
|
11
|
+
expect(target ).to receive(:foo ).and_return(:bar)
|
12
12
|
|
13
|
-
reader.read.
|
13
|
+
expect(reader.read).to eq :bar
|
14
14
|
end
|
15
15
|
end
|
@@ -20,9 +20,9 @@ describe FlatMap::Mapping::Reader::Formatted do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
specify "#read should use formatting method for fetching a value" do
|
23
|
-
reader.read.
|
24
|
-
reader.read(:downcase).
|
25
|
-
reader.read(:unknown).
|
23
|
+
expect(reader.read ).to eq 'FOOBAR'
|
24
|
+
expect(reader.read(:downcase)).to eq 'foobar'
|
25
|
+
expect(reader.read(:unknown )).to eq 'fOoBaR'
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -32,9 +32,9 @@ describe FlatMap::Mapping::Reader::Formatted do
|
|
32
32
|
|
33
33
|
it "should use I18n_l to format value" do
|
34
34
|
formatted_value = "le FooBar"
|
35
|
-
I18n.
|
35
|
+
expect(I18n).to receive(:l).with(value).and_return(formatted_value)
|
36
36
|
|
37
|
-
reader.read.
|
37
|
+
expect(reader.read).to eq formatted_value
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -49,13 +49,13 @@ describe FlatMap::Mapping::Reader::Formatted do
|
|
49
49
|
let(:reader){ described_class.new(mapping, :enum) }
|
50
50
|
|
51
51
|
it "should use the name property of the target object for value" do
|
52
|
-
enum.
|
53
|
-
reader.read.
|
52
|
+
expect(enum).to receive(:name).and_return(value)
|
53
|
+
expect(reader.read).to eq value
|
54
54
|
end
|
55
55
|
|
56
56
|
it "should be able to use the desired method to get enum's property" do
|
57
|
-
enum.
|
58
|
-
reader.read(:description).
|
57
|
+
expect(enum).to receive(:description).and_return(value)
|
58
|
+
expect(reader.read(:description)).to eq value
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe FlatMap::Mapping::Reader::Method do
|
4
|
-
let(:mapper){ double('mapper') }
|
5
|
-
let(:mapping){ double('mapping', :mapper => mapper) }
|
6
|
-
let(:reader){ described_class.new(mapping, :read_with_method) }
|
4
|
+
let(:mapper) { double('mapper') }
|
5
|
+
let(:mapping) { double('mapping', :mapper => mapper) }
|
6
|
+
let(:reader) { described_class.new(mapping, :read_with_method) }
|
7
7
|
|
8
8
|
specify("#read delegates to mapper-defined method and passes mapping to it") do
|
9
|
-
mapper.
|
9
|
+
expect(mapper).to receive(:read_with_method).with(mapping).and_return(:bar)
|
10
10
|
|
11
|
-
reader.read.
|
11
|
+
expect(reader.read).to eq :bar
|
12
12
|
end
|
13
13
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe FlatMap::Mapping::Reader::Proc do
|
4
|
-
let(:target){ double('target') }
|
5
|
-
let(:mapping){ double('mapping', :target => target) }
|
6
|
-
let(:reader){ described_class.new(mapping, lambda{ |t| t.foo }) }
|
4
|
+
let(:target) { double('target') }
|
5
|
+
let(:mapping) { double('mapping', :target => target) }
|
6
|
+
let(:reader) { described_class.new(mapping, lambda{ |t| t.foo }) }
|
7
7
|
|
8
8
|
specify("#read should pass target to Proc object to fetch value") do
|
9
|
-
target.
|
9
|
+
expect(target).to receive(:foo).and_return(:bar)
|
10
10
|
|
11
|
-
reader.read.
|
11
|
+
expect(reader.read).to eq :bar
|
12
12
|
end
|
13
13
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe FlatMap::Mapping::Writer::Basic do
|
4
|
-
let(:target){ double('target') }
|
5
|
-
let(:mapping){ double('mapping') }
|
6
|
-
let(:writer){ described_class.new(mapping) }
|
4
|
+
let(:target) { double('target') }
|
5
|
+
let(:mapping) { double('mapping') }
|
6
|
+
let(:writer) { described_class.new(mapping) }
|
7
7
|
|
8
8
|
specify("#write use target_attribute as writer to assign value to target") do
|
9
|
-
mapping.
|
10
|
-
mapping.
|
11
|
-
target.
|
9
|
+
expect(mapping).to receive(:target ).and_return(target)
|
10
|
+
expect(mapping).to receive(:target_attribute).and_return(:foo)
|
11
|
+
expect(target ).to receive(:foo=).with(:bar)
|
12
12
|
|
13
13
|
writer.write(:bar)
|
14
14
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe FlatMap::Mapping::Writer::Method do
|
4
|
-
let(:mapper){ double('mapper') }
|
5
|
-
let(:mapping){ double('mapping', :mapper => mapper) }
|
6
|
-
let(:writer){ described_class.new(mapping, :write_with_method) }
|
4
|
+
let(:mapper) { double('mapper') }
|
5
|
+
let(:mapping) { double('mapping', :mapper => mapper) }
|
6
|
+
let(:writer) { described_class.new(mapping, :write_with_method) }
|
7
7
|
|
8
8
|
specify("#write delegates to mapper-defined method and passes mapping and value to it") do
|
9
|
-
mapper.
|
9
|
+
expect(mapper).to receive(:write_with_method).with(mapping, :foo)
|
10
10
|
|
11
11
|
writer.write(:foo)
|
12
12
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe FlatMap::Mapping::Writer::Proc do
|
4
|
-
let(:target){ double('target') }
|
5
|
-
let(:mapping){ double('mapping', :target => target) }
|
6
|
-
let(:writer){ described_class.new(mapping, lambda{ |t, v| t.foo(v) }) }
|
4
|
+
let(:target) { double('target') }
|
5
|
+
let(:mapping) { double('mapping', :target => target) }
|
6
|
+
let(:writer) { described_class.new(mapping, lambda{ |t, v| t.foo(v) }) }
|
7
7
|
|
8
8
|
specify("#write should pass target and value to Proc object for assignment") do
|
9
|
-
target.
|
9
|
+
expect(target).to receive(:foo).with(:bar)
|
10
10
|
|
11
11
|
writer.write(:bar)
|
12
12
|
end
|
@@ -2,8 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module FlatMap
|
4
4
|
describe Mapping do
|
5
|
-
let(:mapper){ double('mapper', :suffixed? => false) }
|
6
|
-
let(:mapping){ Mapping.new(mapper, :name, :attr) }
|
5
|
+
let(:mapper) { double('mapper', :suffixed? => false) }
|
6
|
+
let(:mapping) { Mapping.new(mapper, :name, :attr) }
|
7
7
|
|
8
8
|
describe "initialization" do
|
9
9
|
it "should be initializable" do
|
@@ -11,12 +11,12 @@ module FlatMap
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'should delegate #read to reader' do
|
14
|
-
mapping.reader.
|
14
|
+
expect(mapping.reader).to receive(:read)
|
15
15
|
mapping.read
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should delegate #write to writer' do
|
19
|
-
mapping.writer.
|
19
|
+
expect(mapping.writer).to receive(:write).with(:foo)
|
20
20
|
mapping.write(:foo)
|
21
21
|
end
|
22
22
|
|
@@ -25,43 +25,43 @@ module FlatMap
|
|
25
25
|
|
26
26
|
subject{ Mapping.new(mapper, :name, :attr, :multiparam => Date) }
|
27
27
|
|
28
|
-
its(:mapper){
|
29
|
-
its(:name){
|
30
|
-
its(:target_attribute){
|
31
|
-
its(:full_name){
|
32
|
-
its(:multiparam){
|
33
|
-
its(:multiparam?){
|
28
|
+
its(:mapper) { is_expected.to eq mapper }
|
29
|
+
its(:name) { is_expected.to eq :name }
|
30
|
+
its(:target_attribute) { is_expected.to eq :attr }
|
31
|
+
its(:full_name) { is_expected.to eq :name_foo }
|
32
|
+
its(:multiparam) { is_expected.to eq Date }
|
33
|
+
its(:multiparam?) { is_expected.to be true }
|
34
34
|
end
|
35
35
|
|
36
36
|
describe "#fetch_reader" do
|
37
37
|
context 'default' do
|
38
38
|
subject{ Mapping.new(mapper, :name, :attr) }
|
39
39
|
|
40
|
-
its(:reader){
|
40
|
+
its(:reader) { is_expected.to be_a(Mapping::Reader::Basic) }
|
41
41
|
end
|
42
42
|
|
43
43
|
context 'method' do
|
44
44
|
subject{ Mapping.new(mapper, :name, :attr, :reader => :method_name) }
|
45
45
|
|
46
|
-
its(:reader){
|
46
|
+
its(:reader) { is_expected.to be_a(Mapping::Reader::Method) }
|
47
47
|
end
|
48
48
|
|
49
49
|
context 'proc' do
|
50
50
|
subject{ Mapping.new(mapper, :name, :attr, :reader => lambda{ |t| t.foo }) }
|
51
51
|
|
52
|
-
its(:reader){
|
52
|
+
its(:reader) { is_expected.to be_a(Mapping::Reader::Proc) }
|
53
53
|
end
|
54
54
|
|
55
55
|
context 'formatted' do
|
56
56
|
subject{ Mapping.new(mapper, :name, :attr, :format => :i18n_l) }
|
57
57
|
|
58
|
-
its(:reader){
|
58
|
+
its(:reader) { is_expected.to be_a(Mapping::Reader::Formatted) }
|
59
59
|
end
|
60
60
|
|
61
61
|
context 'blank' do
|
62
62
|
subject{ Mapping.new(mapper, :name, :attr, :reader => false) }
|
63
63
|
|
64
|
-
its(:reader){
|
64
|
+
its(:reader) { is_expected.to be_nil }
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -70,32 +70,32 @@ module FlatMap
|
|
70
70
|
context 'default' do
|
71
71
|
subject{ Mapping.new(mapper, :name, :attr) }
|
72
72
|
|
73
|
-
its(:writer){
|
73
|
+
its(:writer) { is_expected.to be_a(Mapping::Writer::Basic) }
|
74
74
|
end
|
75
75
|
|
76
76
|
context 'method' do
|
77
77
|
subject{ Mapping.new(mapper, :name, :attr, :writer => :method_name) }
|
78
78
|
|
79
|
-
its(:writer){
|
79
|
+
its(:writer) { is_expected.to be_a(Mapping::Writer::Method) }
|
80
80
|
end
|
81
81
|
|
82
82
|
context 'proc' do
|
83
83
|
subject{ Mapping.new(mapper, :name, :attr, :writer => lambda{ |t| t.foo }) }
|
84
84
|
|
85
|
-
its(:writer){
|
85
|
+
its(:writer) { is_expected.to be_a(Mapping::Writer::Proc) }
|
86
86
|
end
|
87
87
|
|
88
88
|
context 'blank' do
|
89
89
|
subject{ Mapping.new(mapper, :name, :attr, :writer => false) }
|
90
90
|
|
91
|
-
its(:writer){
|
91
|
+
its(:writer) { is_expected.to be_nil }
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
95
|
describe "read_as_params" do
|
96
96
|
it "should return mapping as key value pair" do
|
97
97
|
stub_target
|
98
|
-
mapping.read_as_params.
|
98
|
+
expect(mapping.read_as_params).to eq({:name => "target_foo"})
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
@@ -107,16 +107,16 @@ module FlatMap
|
|
107
107
|
|
108
108
|
it "should set no value on the target from params" do
|
109
109
|
target = stub_target
|
110
|
-
target.
|
110
|
+
expect(target).not_to receive(:attr=)
|
111
111
|
mapping.write_from_params(:not_mapping_name => "value")
|
112
|
-
target.attr.
|
112
|
+
expect(target.attr).to eq 'target_foo'
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
116
116
|
def stub_target(assignment = nil)
|
117
117
|
target = double('target', :attr => 'target_foo')
|
118
|
-
mapper.
|
119
|
-
target.
|
118
|
+
allow(mapper).to receive(:target).and_return(target)
|
119
|
+
expect(target).to receive(:attr=).with(assignment) if assignment.present?
|
120
120
|
target
|
121
121
|
end
|
122
122
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
|
1
3
|
require 'flat_map'
|
2
4
|
require 'ostruct'
|
3
5
|
require 'pry'
|
@@ -7,3 +9,7 @@ require 'simplecov'
|
|
7
9
|
SimpleCov.start do
|
8
10
|
add_filter '/spec/'
|
9
11
|
end
|
12
|
+
|
13
|
+
RSpec.configure do |config|
|
14
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
15
|
+
end
|
metadata
CHANGED
@@ -1,46 +1,59 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: HornsAndHooves-flat_map
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- HornsAndHooves
|
8
8
|
- Artem Kuzko
|
9
9
|
- Zachary Belzer
|
10
10
|
- Sergey Potapov
|
11
|
-
|
11
|
+
- Bruce Burdick
|
12
|
+
autorequire:
|
12
13
|
bindir: bin
|
13
14
|
cert_chain: []
|
14
|
-
date:
|
15
|
+
date: 2021-10-04 00:00:00.000000000 Z
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: activesupport
|
18
19
|
requirement: !ruby/object:Gem::Requirement
|
19
20
|
requirements:
|
20
|
-
- - "
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '5'
|
24
|
+
- - "<"
|
21
25
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
26
|
+
version: 7.0.0
|
23
27
|
type: :runtime
|
24
28
|
prerelease: false
|
25
29
|
version_requirements: !ruby/object:Gem::Requirement
|
26
30
|
requirements:
|
27
|
-
- - "
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5'
|
34
|
+
- - "<"
|
28
35
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
36
|
+
version: 7.0.0
|
30
37
|
- !ruby/object:Gem::Dependency
|
31
38
|
name: activerecord
|
32
39
|
requirement: !ruby/object:Gem::Requirement
|
33
40
|
requirements:
|
34
|
-
- - "
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '5'
|
44
|
+
- - "<"
|
35
45
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
46
|
+
version: 7.0.0
|
37
47
|
type: :runtime
|
38
48
|
prerelease: false
|
39
49
|
version_requirements: !ruby/object:Gem::Requirement
|
40
50
|
requirements:
|
41
|
-
- - "
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '5'
|
54
|
+
- - "<"
|
42
55
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
56
|
+
version: 7.0.0
|
44
57
|
- !ruby/object:Gem::Dependency
|
45
58
|
name: yard
|
46
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -61,14 +74,14 @@ dependencies:
|
|
61
74
|
requirements:
|
62
75
|
- - "~>"
|
63
76
|
- !ruby/object:Gem::Version
|
64
|
-
version: '3.
|
77
|
+
version: '3.5'
|
65
78
|
type: :development
|
66
79
|
prerelease: false
|
67
80
|
version_requirements: !ruby/object:Gem::Requirement
|
68
81
|
requirements:
|
69
82
|
- - "~>"
|
70
83
|
- !ruby/object:Gem::Version
|
71
|
-
version: '3.
|
84
|
+
version: '3.5'
|
72
85
|
- !ruby/object:Gem::Dependency
|
73
86
|
name: rspec-its
|
74
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,6 +117,7 @@ email:
|
|
104
117
|
- a.kuzko@gmail.com
|
105
118
|
- zbelzer@gmail.com
|
106
119
|
- blake131313@gmail.com
|
120
|
+
- rubygems.org@bruceburdick.com
|
107
121
|
executables: []
|
108
122
|
extensions: []
|
109
123
|
extra_rdoc_files: []
|
@@ -175,7 +189,7 @@ homepage: https://github.com/HornsAndHooves/flat_map
|
|
175
189
|
licenses:
|
176
190
|
- LICENSE
|
177
191
|
metadata: {}
|
178
|
-
post_install_message:
|
192
|
+
post_install_message:
|
179
193
|
rdoc_options: []
|
180
194
|
require_paths:
|
181
195
|
- lib
|
@@ -190,9 +204,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
204
|
- !ruby/object:Gem::Version
|
191
205
|
version: '0'
|
192
206
|
requirements: []
|
193
|
-
|
194
|
-
|
195
|
-
signing_key:
|
207
|
+
rubygems_version: 3.0.9
|
208
|
+
signing_key:
|
196
209
|
specification_version: 4
|
197
210
|
summary: Deep object graph to a plain properties mapper
|
198
211
|
test_files:
|
@@ -219,4 +232,3 @@ test_files:
|
|
219
232
|
- spec/flat_map/mapping_spec.rb
|
220
233
|
- spec/flat_map/open_mapper_spec.rb
|
221
234
|
- spec/spec_helper.rb
|
222
|
-
has_rdoc:
|