spicerack 0.19.1 → 0.19.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 703ca1163327f38a40f7ba42940cdb4695445320723aa753454bacceddaef01b
4
- data.tar.gz: 512415a38c5380aa2efa4ec5f1c60db0c3f498ac99474651d11c7ec0b1ed8985
3
+ metadata.gz: 75d8f8c4cd9f9bf491920b112806922319441f328cbae676f435107bd0abbb78
4
+ data.tar.gz: 6b0c0b806356f0605e99aff509e9b3566f5e2004b8272d57c47fcb69f6705bd8
5
5
  SHA512:
6
- metadata.gz: 74b463c152df4e913f1e45dfb2b4f83e038002cf75d2754adf03673dda3c1793aa8bcc401201b07004f1e4007a3f8f4633756d961b0e0425f58342ff67c9ff23
7
- data.tar.gz: 0da8649873fb1b6e585af193b0a62c15c971c13aa3de86579bab60d50aec6a7f31cd79f25079fcb94c9008131434f6515556b3c1f142339ad11e65c9dbd28768
6
+ metadata.gz: 98471d11ba2fbe8eba7df1aac4b0901bb8ac7e0cc92c9af26be52300b0a789c4163ec3863f14b44f1ac5922808c719130fc7d002b619ca15b3b84b20223e4c3f
7
+ data.tar.gz: a2e5b336954f85e994a0a433a753a9e78a582c388f212bd4de143d6bb1408db1fdd79924ccc20515179d3211c2dd9a606ad45659e015216823b614acd29bcc22
@@ -4,10 +4,17 @@ module Spicerack
4
4
  module RSpec
5
5
  module Configurable
6
6
  module Matchers
7
- extend ::RSpec::Matchers::DSL
7
+ module Configuration
8
+ extend ::RSpec::Matchers::DSL
9
+ end
10
+
11
+ module Global
12
+ extend ::RSpec::Matchers::DSL
13
+ end
8
14
  end
9
15
  end
10
16
  end
11
17
  end
12
18
 
13
- require_relative "matchers/define_config_option"
19
+ require_relative "matchers/configuration/define_config_option"
20
+ require_relative "matchers/global/delegate_config_to"
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spicerack
4
+ module RSpec
5
+ module Configurable
6
+ module Matchers
7
+ module Configuration
8
+ # RSpec matcher to test options of a Configurable class
9
+ #
10
+ # class ExampleConfiguration
11
+ # include Spicerack::Configurable
12
+ #
13
+ # option :foo
14
+ # option :bar, default: :baz
15
+ # end
16
+ #
17
+ # RSpec.describe ExampleConfiguration, type: :configuration do
18
+ # subject { described_class.new }
19
+ #
20
+ # it { is_expected.to define_config_option :foo }
21
+ # it { is_expected.to define_config_option :bar, default: :baz }
22
+ # end
23
+ define :define_config_option do |option, default: nil|
24
+ description { "define config option #{option}" }
25
+ failure_message { "expected #{@obj} to define config option #{option} #{with_default(default)}".strip }
26
+
27
+ match do |obj|
28
+ @obj = obj
29
+
30
+ if obj.is_a? Spicerack::Configurable::ConfigObject
31
+ expect(obj).to define_option option, default: default
32
+ else
33
+ expect(obj).to respond_to :config
34
+ expect(obj.config.instance_variable_get(:@config)).to be_present
35
+ expect(obj.config.instance_variable_get(:@config)).to define_option option, default: default
36
+ end
37
+ end
38
+
39
+ def with_default(default)
40
+ "with default #{default}" unless default.nil?
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spicerack
4
+ module RSpec
5
+ module Configurable
6
+ module Matchers
7
+ module Global
8
+ # RSpec matcher to test options of a Configurable class
9
+ #
10
+ # module MyGem
11
+ # include Spicerack::Configurable::ConfigDelegation
12
+ # delegates_to_configuration
13
+ #
14
+ # class MyGem::Configuration
15
+ # include Spicerack::Configurable
16
+ # ...
17
+ # end
18
+ # end
19
+ #
20
+ # RSpec.describe ExampleConfiguration, type: :configuration do
21
+ # subject { described_class }
22
+ #
23
+ # it { is_expected.to delegate_config_to MyGem::Configuration }
24
+ # end
25
+ define :delegate_config_to do |config_module|
26
+ attr_reader :obj, :config_module
27
+
28
+ description { "delegates configuration methods to #{config_module}" }
29
+
30
+ failure_message { "expected #{target} to delegate configuration methods to #{config_module}" }
31
+ failure_message_when_negated { "expected #{target} not to delegate configuration methods to #{config_module}" }
32
+
33
+ match_unless_raises do |obj|
34
+ @obj = obj
35
+ @config_module = config_module
36
+
37
+ stub_configuration_methods
38
+
39
+ expect(target.config).to eq config_return_value
40
+ expect(target.configure).to eq configure_return_value
41
+ end
42
+
43
+ def target
44
+ obj.is_a?(Module) ? obj : obj.class
45
+ end
46
+
47
+ def stub_configuration_methods
48
+ allow(config_module).to receive(:config).and_return(config_return_value)
49
+ allow(config_module).to receive(:configure).and_return(configure_return_value)
50
+ end
51
+
52
+ def config_return_value
53
+ @config_return_value ||= double
54
+ end
55
+
56
+ def configure_return_value
57
+ @configure_return_value ||= double
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -4,6 +4,7 @@ require_relative "matchers"
4
4
  require_relative "dsl"
5
5
 
6
6
  RSpec.configure do |config|
7
- config.include(Spicerack::RSpec::Configurable::Matchers, type: :configuration)
7
+ config.include(Spicerack::RSpec::Configurable::Matchers::Global)
8
+ config.include(Spicerack::RSpec::Configurable::Matchers::Configuration, type: :configuration)
8
9
  config.include(Spicerack::RSpec::Configurable::DSL, type: :configuration)
9
10
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Spicerack
4
4
  # This constant is managed by spicerack
5
- VERSION = "0.19.1"
5
+ VERSION = "0.19.2"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spicerack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.1
4
+ version: 0.19.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Garside
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2019-11-27 00:00:00.000000000 Z
14
+ date: 2019-12-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: around_the_world
@@ -19,70 +19,70 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.19.1
22
+ version: 0.19.2
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 0.19.1
29
+ version: 0.19.2
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: redis_hash
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - '='
35
35
  - !ruby/object:Gem::Version
36
- version: 0.19.1
36
+ version: 0.19.2
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - '='
42
42
  - !ruby/object:Gem::Version
43
- version: 0.19.1
43
+ version: 0.19.2
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: short_circu_it
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - '='
49
49
  - !ruby/object:Gem::Version
50
- version: 0.19.1
50
+ version: 0.19.2
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - '='
56
56
  - !ruby/object:Gem::Version
57
- version: 0.19.1
57
+ version: 0.19.2
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: technologic
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - '='
63
63
  - !ruby/object:Gem::Version
64
- version: 0.19.1
64
+ version: 0.19.2
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - '='
70
70
  - !ruby/object:Gem::Version
71
- version: 0.19.1
71
+ version: 0.19.2
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: tablesalt
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
76
  - - '='
77
77
  - !ruby/object:Gem::Version
78
- version: 0.19.1
78
+ version: 0.19.2
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
83
  - - '='
84
84
  - !ruby/object:Gem::Version
85
- version: 0.19.1
85
+ version: 0.19.2
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: bundler
88
88
  requirement: !ruby/object:Gem::Requirement
@@ -207,28 +207,28 @@ dependencies:
207
207
  requirements:
208
208
  - - '='
209
209
  - !ruby/object:Gem::Version
210
- version: 0.19.1
210
+ version: 0.19.2
211
211
  type: :development
212
212
  prerelease: false
213
213
  version_requirements: !ruby/object:Gem::Requirement
214
214
  requirements:
215
215
  - - '='
216
216
  - !ruby/object:Gem::Version
217
- version: 0.19.1
217
+ version: 0.19.2
218
218
  - !ruby/object:Gem::Dependency
219
219
  name: spicerack-styleguide
220
220
  requirement: !ruby/object:Gem::Requirement
221
221
  requirements:
222
222
  - - '='
223
223
  - !ruby/object:Gem::Version
224
- version: 0.19.1
224
+ version: 0.19.2
225
225
  type: :development
226
226
  prerelease: false
227
227
  version_requirements: !ruby/object:Gem::Requirement
228
228
  requirements:
229
229
  - - '='
230
230
  - !ruby/object:Gem::Version
231
- version: 0.19.1
231
+ version: 0.19.2
232
232
  - !ruby/object:Gem::Dependency
233
233
  name: will_paginate
234
234
  requirement: !ruby/object:Gem::Requirement
@@ -310,7 +310,8 @@ files:
310
310
  - lib/spicerack/root_object.rb
311
311
  - lib/spicerack/rspec/configurable/dsl.rb
312
312
  - lib/spicerack/rspec/configurable/matchers.rb
313
- - lib/spicerack/rspec/configurable/matchers/define_config_option.rb
313
+ - lib/spicerack/rspec/configurable/matchers/configuration/define_config_option.rb
314
+ - lib/spicerack/rspec/configurable/matchers/global/delegate_config_to.rb
314
315
  - lib/spicerack/rspec/configurable/spec_helper.rb
315
316
  - lib/spicerack/rspec/custom_matchers.rb
316
317
  - lib/spicerack/rspec/custom_matchers/define_argument.rb
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spicerack
4
- module RSpec
5
- module Configurable
6
- module Matchers
7
- # RSpec matcher to test options of a Configurable class
8
- #
9
- # class ExampleConfiguration
10
- # include Spicerack::Configurable
11
- #
12
- # option :foo
13
- # option :bar, default: :baz
14
- # end
15
- #
16
- # RSpec.describe ExampleConfiguration, type: :configuration do
17
- # subject { described_class.new }
18
- #
19
- # it { is_expected.to define_config_option :foo }
20
- # it { is_expected.to define_config_option :bar, default: :baz }
21
- # end
22
- define :define_config_option do |option, default: nil|
23
- description { "define config option #{option}" }
24
- failure_message { "expected #{subject} to define config option #{option} #{with_default(default)}".strip }
25
-
26
- match do |obj|
27
- if obj.is_a? Spicerack::Configurable::ConfigObject
28
- expect(obj).to define_option option, default: default
29
- else
30
- expect(obj).to respond_to :config
31
- expect(obj.config.instance_variable_get(:@config)).to be_present
32
- expect(obj.config.instance_variable_get(:@config)).to define_option option, default: default
33
- end
34
- end
35
-
36
- def with_default(default)
37
- "with default #{default}" unless default.nil?
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end