cascade-rb 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.hound.yml +1 -1
  3. data/.rubocop.yml +11 -0
  4. data/.travis.yml +11 -0
  5. data/Gemfile +3 -1
  6. data/README.md +2 -25
  7. data/Rakefile +7 -4
  8. data/cascade.gemspec +22 -21
  9. data/lib/cascade.rb +6 -7
  10. data/lib/cascade/columns_matching.rb +14 -13
  11. data/lib/cascade/complex_fields.rb +5 -3
  12. data/lib/cascade/complex_fields/array_processor.rb +2 -0
  13. data/lib/cascade/complex_fields/boolean.rb +3 -1
  14. data/lib/cascade/complex_fields/currency.rb +8 -4
  15. data/lib/cascade/concerns/statistics_collectible.rb +3 -1
  16. data/lib/cascade/data_parser.rb +4 -2
  17. data/lib/cascade/error_handler.rb +4 -7
  18. data/lib/cascade/exceptions.rb +5 -3
  19. data/lib/cascade/exceptions/unknown_presenter_type.rb +2 -0
  20. data/lib/cascade/exceptions/unsupported_component.rb +3 -1
  21. data/lib/cascade/exceptions/wrong_mapping_format.rb +2 -0
  22. data/lib/cascade/helpers/hash.rb +2 -0
  23. data/lib/cascade/registry.rb +6 -3
  24. data/lib/cascade/row_processor.rb +23 -22
  25. data/lib/cascade/statistics.rb +4 -2
  26. data/lib/cascade/statistics_stores.rb +5 -3
  27. data/lib/cascade/statistics_stores/abstract_store.rb +2 -0
  28. data/lib/cascade/statistics_stores/array_store.rb +2 -0
  29. data/lib/cascade/statistics_stores/counter_store.rb +2 -0
  30. data/lib/cascade/version.rb +3 -1
  31. data/spec/integration_spec.rb +70 -0
  32. data/spec/lib/columns_matching_spec.rb +18 -26
  33. data/spec/lib/complex_fields/array_processor_spec.rb +6 -4
  34. data/spec/lib/complex_fields/boolean_spec.rb +8 -6
  35. data/spec/lib/complex_fields/currency_spec.rb +11 -9
  36. data/spec/lib/concerns/statistics_collectible_spec.rb +6 -4
  37. data/spec/lib/data_parser_spec.rb +14 -11
  38. data/spec/lib/error_handler_spec.rb +21 -15
  39. data/spec/lib/exceptions/unknown_presenter_type_spec.rb +5 -3
  40. data/spec/lib/exceptions/unsupported_component_spec.rb +10 -8
  41. data/spec/lib/exceptions/wrong_mapping_format_spec.rb +5 -3
  42. data/spec/lib/helpers/hash_spec.rb +7 -5
  43. data/spec/lib/registry_spec.rb +9 -8
  44. data/spec/lib/row_processor_spec.rb +33 -33
  45. data/spec/lib/statistics_spec.rb +14 -12
  46. data/spec/lib/statistics_stores/abstract_store_spec.rb +7 -5
  47. data/spec/lib/statistics_stores/array_store_spec.rb +8 -6
  48. data/spec/lib/statistics_stores/counter_store_spec.rb +8 -6
  49. data/spec/spec_helper.rb +16 -15
  50. metadata +28 -28
  51. data/.ruby-style.yml +0 -1063
  52. data/lib/cascade/helpers/configuration.rb +0 -32
  53. data/spec/lib/helpers/configuration_spec.rb +0 -36
@@ -1,9 +1,11 @@
1
- require "spec_helper"
2
- require "cascade/exceptions/wrong_mapping_format"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'cascade/exceptions/wrong_mapping_format'
3
5
 
4
6
  describe Cascade::WrongMappingFormat do
5
7
  subject { Cascade::WrongMappingFormat.new }
6
- it "exception raisable" do
8
+ it 'exception raisable' do
7
9
  assert_respond_to subject, :exception
8
10
  end
9
11
  end
@@ -1,16 +1,18 @@
1
- require "spec_helper"
2
- require "cascade/helpers/hash"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'cascade/helpers/hash'
3
5
 
4
6
  describe Hash do
5
- describe "#reverse_merge" do
7
+ describe '#reverse_merge' do
6
8
  using HashRefinements
7
9
 
8
10
  let(:another_hash) { { a: 1, b: 2 } }
9
11
  let(:example_hash) { { a: 4, c: 3 } }
10
12
 
11
- it "merge self into anothe hash" do
13
+ it 'merge self into anothe hash' do
12
14
  assert_equal example_hash.reverse_merge(another_hash),
13
- a: 4, b: 2, c: 3
15
+ a: 4, b: 2, c: 3
14
16
  end
15
17
  end
16
18
  end
@@ -1,26 +1,27 @@
1
- require "spec_helper"
2
- require "cascade/registry"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'cascade/registry'
3
5
 
4
6
  describe Cascade::Registry do
5
7
  def described_class
6
8
  Cascade::Registry
7
9
  end
8
10
 
9
- it "creates new instance of default row processor" do
10
- mock(Cascade::RowProcessor).new
11
- described_class.row_processor
11
+ it 'return default callable row processor' do
12
+ assert_respond_to described_class.row_processor, :call
12
13
  end
13
14
 
14
- it "creates new instance of default error handler" do
15
+ it 'creates new instance of default error handler' do
15
16
  mock(Cascade::ErrorHandler).new
16
17
  described_class.error_handler
17
18
  end
18
19
 
19
- it "return default callable data saver" do
20
+ it 'return default callable data saver' do
20
21
  assert_respond_to described_class.data_saver, :call
21
22
  end
22
23
 
23
- it "return default data provider" do
24
+ it 'return default data provider' do
24
25
  assert_raises(Cascade::UnsupportedComponent) do
25
26
  described_class.data_provider
26
27
  end
@@ -1,69 +1,69 @@
1
- require "spec_helper"
2
- require "cascade/row_processor"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'cascade/row_processor'
3
5
 
4
6
  describe Cascade::RowProcessor do
5
7
  def described_class
6
8
  Cascade::RowProcessor
7
9
  end
8
10
 
9
- it "allows to set settings" do
10
- assert_respond_to described_class, :use_default_presenter=
11
- assert_respond_to described_class, :deafult_presenter=
12
- end
13
-
14
- context "when parsing row" do
15
- let(:row) { [:a_value, :b_value, :c_value] }
16
- let(:keys) { [:a, :b, :c] }
11
+ context 'when parsing row' do
12
+ let(:row) { %i[a_value b_value c_value] }
13
+ let(:keys) { %i[a b c] }
17
14
  let(:columns_matching) { OpenStruct.new(supported_keys: keys) }
18
15
 
19
16
  before do
20
- keys.each_with_index do |key, index|
17
+ keys.each_with_index do |key, index|
21
18
  stub(columns_matching).index(key) { index }
22
19
  stub(columns_matching).column_type(key) { :string }
23
20
  end
24
21
  end
25
22
 
26
- it "collect row values with corresponding keys" do
23
+ it 'collect row values with corresponding keys' do
27
24
  processed_row = described_class.new(columns_matching:
28
25
  columns_matching).call(row)
29
- assert_equal(processed_row, a: "a_value", b: "b_value", c: "c_value")
26
+ assert_equal(processed_row, a: 'a_value', b: 'b_value', c: 'c_value')
30
27
  end
31
28
  end
32
29
 
33
- context "when presenting row values" do
34
- let(:row) { ["raw_value"] }
30
+ context 'when presenting row values' do
31
+ let(:row) { ['raw_value'] }
35
32
  let(:columns_matching) { OpenStruct.new(supported_keys: [:a]) }
36
- let(:value_presenter) { ->(_raw_value) { "parsed_value" } }
33
+ let(:value_presenter) { ->(_raw_value) { 'parsed_value' } }
37
34
 
38
35
  before do
39
36
  stub(columns_matching).index(:a) { 0 }
40
37
  stub(columns_matching).column_type(:a) { :presenter }
41
38
  end
42
39
 
43
- context "when curresponding presenter passed" do
44
- it "process field with specified presenter" do
45
- parsed_value = described_class.new(columns_matching: columns_matching,
46
- presenter: value_presenter).call(row)[:a]
47
- assert_equal "parsed_value", parsed_value
40
+ context 'when curresponding presenter passed' do
41
+ it 'process field with specified presenter' do
42
+ parsed_value = described_class.new(
43
+ columns_matching: columns_matching,
44
+ ext_presenters: { presenter: value_presenter }
45
+ ).call(row)[:a]
46
+ assert_equal 'parsed_value', parsed_value
48
47
  end
49
48
  end
50
49
 
51
- context "when curresponding presenter not passed" do
52
- it "process field with default presenter if use_default_presenter true" do
53
- described_class.stub(:use_default_presenter, true) do
54
- described_class.stub(:deafult_presenter, -> { value_presenter }) do
55
- parsed_value = described_class.new(columns_matching:
56
- columns_matching).call(row)[:a]
57
- assert_equal "parsed_value", parsed_value
50
+ context 'when curresponding presenter not passed' do
51
+ context 'when use_default_presenter is false' do
52
+ it 'process field and rise error' do
53
+ assert_raises(Cascade::UnknownPresenterType) do
54
+ described_class.new(columns_matching: columns_matching).call(row)
58
55
  end
59
56
  end
60
57
  end
61
58
 
62
- it "process field and rise error if use_default_presenter false" do
63
- described_class.stub(:use_default_presenter, false) do
64
- assert_raises(Cascade::UnknownPresenterType) do
65
- described_class.new(columns_matching: columns_matching).call(row)
66
- end
59
+ context 'when use_default_presenter is true' do
60
+ it 'process field with default presenter' do
61
+ parsed_value = described_class.new(
62
+ columns_matching: columns_matching,
63
+ use_default_presenter: true,
64
+ deafult_presenter: value_presenter
65
+ ).call(row)[:a]
66
+ assert_equal 'parsed_value', parsed_value
67
67
  end
68
68
  end
69
69
  end
@@ -1,37 +1,39 @@
1
- require "spec_helper"
2
- require "cascade/statistics"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'cascade/statistics'
3
5
 
4
6
  describe Cascade::Statistics do
5
7
  subject { Cascade::Statistics.instance }
6
8
 
7
- context "#register_action" do
8
- it "regsiter store for statistics with passed name, store type and value" do
9
+ context '#register_action' do
10
+ it 'regsiter store for statistics with passed name, store type and value' do
9
11
  subject.register_action(:record_parsed, :counter)
10
- assert_instance_of Cascade::StatisticsStores::CounterStore, subject.
11
- send(:store_repository)[:record_parsed]
12
+ assert_instance_of Cascade::StatisticsStores::CounterStore, subject
13
+ .send(:store_repository)[:record_parsed]
12
14
  end
13
15
 
14
- it "raise NotImplementedError for unknown stores" do
16
+ it 'raise NotImplementedError for unknown stores' do
15
17
  assert_raises NotImplementedError do
16
18
  subject.register_action(:some_action, :magic)
17
19
  end
18
20
  end
19
21
  end
20
22
 
21
- context "#register_action" do
22
- it "delegate update action to store with passed value" do
23
+ context '#register_action' do
24
+ it 'delegate update action to store with passed value' do
23
25
  mock(subject.send(:store_repository)[:record_parsed]).update(29)
24
26
  subject.update(:record_parsed, 29)
25
27
  end
26
28
 
27
- it "delegate update action to store with nil as default value" do
29
+ it 'delegate update action to store with nil as default value' do
28
30
  mock(subject.send(:store_repository)[:record_parsed]).update(nil)
29
31
  subject.update(:record_parsed, nil)
30
32
  end
31
33
  end
32
34
 
33
- context "#for" do
34
- it "retrives info from store object" do
35
+ context '#for' do
36
+ it 'retrives info from store object' do
35
37
  mock(subject.send(:store_repository)[:record_parsed]).store
36
38
  subject.for(:record_parsed)
37
39
  end
@@ -1,20 +1,22 @@
1
- require "spec_helper"
2
- require "cascade/statistics_stores/abstract_store"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'cascade/statistics_stores/abstract_store'
3
5
 
4
6
  describe Cascade::StatisticsStores::AbstractStore do
5
7
  def described_class
6
8
  Cascade::StatisticsStores::AbstractStore
7
9
  end
8
10
 
9
- context "on initialization" do
10
- it "will rise NotImplementedError for default value" do
11
+ context 'on initialization' do
12
+ it 'will rise NotImplementedError for default value' do
11
13
  assert_raises NotImplementedError do
12
14
  described_class.new
13
15
  end
14
16
  end
15
17
  end
16
18
 
17
- it "return NotImplementedError for abstract method update" do
19
+ it 'return NotImplementedError for abstract method update' do
18
20
  assert_raises NotImplementedError do
19
21
  described_class.new(1).update(:some_word)
20
22
  end
@@ -1,17 +1,19 @@
1
- require "spec_helper"
2
- require "cascade/statistics_stores/abstract_store"
3
- require "cascade/statistics_stores/array_store"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'cascade/statistics_stores/abstract_store'
5
+ require 'cascade/statistics_stores/array_store'
4
6
 
5
7
  describe Cascade::StatisticsStores::ArrayStore do
6
8
  subject { Cascade::StatisticsStores::ArrayStore.new }
7
9
 
8
- context "on initialization" do
9
- it "use empty array as default value" do
10
+ context 'on initialization' do
11
+ it 'use empty array as default value' do
10
12
  assert_equal subject.store, []
11
13
  end
12
14
  end
13
15
 
14
- it "add value to array on update" do
16
+ it 'add value to array on update' do
15
17
  mock(subject.store).<<(:some_value)
16
18
  subject.update(:some_value)
17
19
  end
@@ -1,17 +1,19 @@
1
- require "spec_helper"
2
- require "cascade/statistics_stores/abstract_store"
3
- require "cascade/statistics_stores/counter_store"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'cascade/statistics_stores/abstract_store'
5
+ require 'cascade/statistics_stores/counter_store'
4
6
 
5
7
  describe Cascade::StatisticsStores::CounterStore do
6
8
  subject { Cascade::StatisticsStores::CounterStore.new }
7
9
 
8
- context "on initialization" do
9
- it "use empty array as default value" do
10
+ context 'on initialization' do
11
+ it 'use empty array as default value' do
10
12
  assert_equal subject.store, 0
11
13
  end
12
14
  end
13
15
 
14
- it "add value to array on update" do
16
+ it 'add value to array on update' do
15
17
  previous_value = subject.store
16
18
  subject.update
17
19
  assert_equal subject.store, previous_value + 1
@@ -1,23 +1,24 @@
1
- require "simplecov"
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov'
2
4
  SimpleCov.start do
3
- add_filter "spec/"
4
- add_filter "vendor/"
5
+ add_filter 'spec/'
6
+ add_filter 'vendor/'
5
7
  end
6
8
 
7
- require "minitest/autorun"
8
- require "minitest/pride"
9
- require "minitest/mock"
10
- require "minitest/hell"
11
- require "shoulda/matchers"
12
- require "rr"
13
-
14
- require "codeclimate-test-reporter"
15
- CodeClimate::TestReporter.start
9
+ require 'minitest/autorun'
10
+ require 'minitest/pride'
11
+ require 'minitest/mock'
12
+ require 'minitest/hell'
13
+ require 'shoulda/matchers'
14
+ require 'rr'
16
15
 
17
- class Minitest::Test
18
- parallelize_me!
16
+ module Minitest
17
+ class Test
18
+ parallelize_me!
19
+ end
19
20
  end
20
21
 
21
22
  module Kernel
22
- alias_method :context, :describe
23
+ alias context describe
23
24
  end
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cascade-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignat Zakrevsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-06 00:00:00.000000000 Z
11
+ date: 2019-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: yard
28
+ name: codeclimate-test-reporter
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: minitest
56
+ name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rr
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,21 +81,21 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: shoulda-matchers
84
+ name: rr
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 2.8.0
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 2.8.0
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: simplecov
98
+ name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,21 +109,21 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: pry
112
+ name: shoulda-matchers
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 2.8.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '='
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: 2.8.0
125
125
  - !ruby/object:Gem::Dependency
126
- name: rubocop
126
+ name: simplecov
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: codeclimate-test-reporter
140
+ name: yard
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -159,7 +159,8 @@ extra_rdoc_files: []
159
159
  files:
160
160
  - ".gitignore"
161
161
  - ".hound.yml"
162
- - ".ruby-style.yml"
162
+ - ".rubocop.yml"
163
+ - ".travis.yml"
163
164
  - Gemfile
164
165
  - README.md
165
166
  - Rakefile
@@ -177,7 +178,6 @@ files:
177
178
  - lib/cascade/exceptions/unknown_presenter_type.rb
178
179
  - lib/cascade/exceptions/unsupported_component.rb
179
180
  - lib/cascade/exceptions/wrong_mapping_format.rb
180
- - lib/cascade/helpers/configuration.rb
181
181
  - lib/cascade/helpers/hash.rb
182
182
  - lib/cascade/registry.rb
183
183
  - lib/cascade/row_processor.rb
@@ -187,6 +187,7 @@ files:
187
187
  - lib/cascade/statistics_stores/array_store.rb
188
188
  - lib/cascade/statistics_stores/counter_store.rb
189
189
  - lib/cascade/version.rb
190
+ - spec/integration_spec.rb
190
191
  - spec/lib/columns_matching_spec.rb
191
192
  - spec/lib/complex_fields/array_processor_spec.rb
192
193
  - spec/lib/complex_fields/boolean_spec.rb
@@ -197,7 +198,6 @@ files:
197
198
  - spec/lib/exceptions/unknown_presenter_type_spec.rb
198
199
  - spec/lib/exceptions/unsupported_component_spec.rb
199
200
  - spec/lib/exceptions/wrong_mapping_format_spec.rb
200
- - spec/lib/helpers/configuration_spec.rb
201
201
  - spec/lib/helpers/hash_spec.rb
202
202
  - spec/lib/registry_spec.rb
203
203
  - spec/lib/row_processor_spec.rb
@@ -226,11 +226,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
226
  version: '0'
227
227
  requirements: []
228
228
  rubyforge_project:
229
- rubygems_version: 2.4.5
229
+ rubygems_version: 2.5.2.3
230
230
  signing_key:
231
231
  specification_version: 4
232
232
  summary: Ruby data parser gem.
233
233
  test_files:
234
+ - spec/integration_spec.rb
234
235
  - spec/lib/columns_matching_spec.rb
235
236
  - spec/lib/complex_fields/array_processor_spec.rb
236
237
  - spec/lib/complex_fields/boolean_spec.rb
@@ -241,7 +242,6 @@ test_files:
241
242
  - spec/lib/exceptions/unknown_presenter_type_spec.rb
242
243
  - spec/lib/exceptions/unsupported_component_spec.rb
243
244
  - spec/lib/exceptions/wrong_mapping_format_spec.rb
244
- - spec/lib/helpers/configuration_spec.rb
245
245
  - spec/lib/helpers/hash_spec.rb
246
246
  - spec/lib/registry_spec.rb
247
247
  - spec/lib/row_processor_spec.rb