chefspec 9.2.1 → 9.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +16 -9
  3. data/Rakefile +60 -52
  4. data/chefspec.gemspec +20 -20
  5. data/lib/chefspec.rb +29 -29
  6. data/lib/chefspec/api.rb +14 -14
  7. data/lib/chefspec/api/core.rb +3 -3
  8. data/lib/chefspec/api/described.rb +3 -5
  9. data/lib/chefspec/api/stubs.rb +2 -2
  10. data/lib/chefspec/api/stubs_for.rb +12 -12
  11. data/lib/chefspec/berkshelf.rb +4 -4
  12. data/lib/chefspec/cacher.rb +2 -2
  13. data/lib/chefspec/coverage.rb +35 -40
  14. data/lib/chefspec/coverage/filters.rb +18 -15
  15. data/lib/chefspec/deprecations.rb +3 -3
  16. data/lib/chefspec/errors.rb +7 -7
  17. data/lib/chefspec/expect_exception.rb +2 -1
  18. data/lib/chefspec/extensions.rb +14 -14
  19. data/lib/chefspec/extensions/chef/client.rb +3 -3
  20. data/lib/chefspec/extensions/chef/conditional.rb +2 -1
  21. data/lib/chefspec/extensions/chef/cookbook/gem_installer.rb +5 -4
  22. data/lib/chefspec/extensions/chef/cookbook_loader.rb +1 -0
  23. data/lib/chefspec/extensions/chef/cookbook_uploader.rb +1 -1
  24. data/lib/chefspec/extensions/chef/data_query.rb +3 -3
  25. data/lib/chefspec/extensions/chef/lwrp_base.rb +1 -0
  26. data/lib/chefspec/extensions/chef/provider.rb +8 -5
  27. data/lib/chefspec/extensions/chef/resource.rb +14 -9
  28. data/lib/chefspec/extensions/chef/resource/freebsd_package.rb +2 -1
  29. data/lib/chefspec/extensions/chef/run_context/cookbook_compiler.rb +12 -1
  30. data/lib/chefspec/extensions/chef/securable.rb +1 -1
  31. data/lib/chefspec/extensions/ohai/system.rb +1 -1
  32. data/lib/chefspec/file_cache_path_proxy.rb +3 -3
  33. data/lib/chefspec/formatter.rb +3 -3
  34. data/lib/chefspec/librarian.rb +7 -6
  35. data/lib/chefspec/matchers.rb +9 -9
  36. data/lib/chefspec/matchers/do_nothing_matcher.rb +15 -15
  37. data/lib/chefspec/matchers/include_any_recipe_matcher.rb +4 -4
  38. data/lib/chefspec/matchers/include_recipe_matcher.rb +1 -1
  39. data/lib/chefspec/matchers/link_to_matcher.rb +2 -2
  40. data/lib/chefspec/matchers/notifications_matcher.rb +5 -4
  41. data/lib/chefspec/matchers/render_file_matcher.rb +3 -3
  42. data/lib/chefspec/matchers/resource_matcher.rb +18 -16
  43. data/lib/chefspec/mixins/normalize.rb +1 -1
  44. data/lib/chefspec/policyfile.rb +6 -6
  45. data/lib/chefspec/renderer.rb +4 -4
  46. data/lib/chefspec/rspec.rb +1 -1
  47. data/lib/chefspec/server.rb +1 -1
  48. data/lib/chefspec/server_methods.rb +8 -8
  49. data/lib/chefspec/server_runner.rb +10 -10
  50. data/lib/chefspec/solo_runner.rb +26 -24
  51. data/lib/chefspec/stubs/command_registry.rb +1 -1
  52. data/lib/chefspec/stubs/command_stub.rb +1 -1
  53. data/lib/chefspec/stubs/data_bag_item_registry.rb +1 -1
  54. data/lib/chefspec/stubs/data_bag_item_stub.rb +1 -1
  55. data/lib/chefspec/stubs/data_bag_registry.rb +1 -1
  56. data/lib/chefspec/stubs/data_bag_stub.rb +1 -1
  57. data/lib/chefspec/stubs/registry.rb +1 -1
  58. data/lib/chefspec/stubs/search_registry.rb +2 -2
  59. data/lib/chefspec/stubs/search_stub.rb +2 -2
  60. data/lib/chefspec/util.rb +7 -7
  61. data/lib/chefspec/version.rb +1 -1
  62. data/lib/chefspec/zero_server.rb +3 -3
  63. data/spec/spec_helper.rb +3 -4
  64. data/spec/support/hash.rb +3 -3
  65. data/spec/unit/cacher_spec.rb +17 -17
  66. data/spec/unit/coverage/filters_spec.rb +16 -16
  67. data/spec/unit/deprecations_spec.rb +8 -9
  68. data/spec/unit/errors_spec.rb +15 -15
  69. data/spec/unit/expect_exception_spec.rb +9 -9
  70. data/spec/unit/macros_spec.rb +50 -50
  71. data/spec/unit/matchers/do_nothing_matcher.rb +1 -1
  72. data/spec/unit/matchers/include_any_recipe_matcher_spec.rb +23 -23
  73. data/spec/unit/matchers/include_recipe_matcher_spec.rb +15 -15
  74. data/spec/unit/matchers/link_to_matcher_spec.rb +18 -18
  75. data/spec/unit/matchers/notifications_matcher_spec.rb +15 -16
  76. data/spec/unit/matchers/render_file_matcher_spec.rb +26 -26
  77. data/spec/unit/matchers/resource_matcher_spec.rb +1 -1
  78. data/spec/unit/matchers/state_attrs_matcher_spec.rb +24 -24
  79. data/spec/unit/matchers/subscribes_matcher_spec.rb +27 -29
  80. data/spec/unit/renderer_spec.rb +36 -36
  81. data/spec/unit/server_runner_spec.rb +6 -6
  82. data/spec/unit/solo_runner_spec.rb +69 -69
  83. data/spec/unit/stubs/command_registry_spec.rb +11 -11
  84. data/spec/unit/stubs/command_stub_spec.rb +26 -26
  85. data/spec/unit/stubs/data_bag_item_registry_spec.rb +17 -17
  86. data/spec/unit/stubs/data_bag_item_stub_spec.rb +14 -14
  87. data/spec/unit/stubs/data_bag_registry_spec.rb +16 -16
  88. data/spec/unit/stubs/data_bag_stub_spec.rb +13 -13
  89. data/spec/unit/stubs/registry_spec.rb +9 -9
  90. data/spec/unit/stubs/search_registry_spec.rb +17 -17
  91. data/spec/unit/stubs/search_stub_spec.rb +14 -14
  92. data/spec/unit/stubs/stub_spec.rb +22 -22
  93. metadata +6 -6
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChefSpec::Matchers::DoNothingMatcher do
4
4
  pending
@@ -1,50 +1,50 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChefSpec::Matchers::IncludeAnyRecipeMatcher do
4
- let(:node) { double('Chef::Node', run_list: run_list) }
5
- let(:run_list) { double('Chef::RunList', run_list_items: run_list_items) }
4
+ let(:node) { double("Chef::Node", run_list: run_list) }
5
+ let(:run_list) { double("Chef::RunList", run_list_items: run_list_items) }
6
6
  let(:run_list_items) { [run_list_item_one] }
7
- let(:run_list_item_one) { double('Chef::RunList::RunListItem', name: 'one') }
8
- let(:run_list_item_two) { double('Chef::RunList::RunListItem', name: 'two') }
9
- let(:loaded_recipes) { %w(one) }
10
- let(:chef_run) { double('chef run', run_context: { loaded_recipes: loaded_recipes, node: node }) }
7
+ let(:run_list_item_one) { double("Chef::RunList::RunListItem", name: "one") }
8
+ let(:run_list_item_two) { double("Chef::RunList::RunListItem", name: "two") }
9
+ let(:loaded_recipes) { %w{one} }
10
+ let(:chef_run) { double("chef run", run_context: { loaded_recipes: loaded_recipes, node: node }) }
11
11
 
12
12
  subject { described_class.new }
13
13
 
14
- describe '#failure_message' do
15
- it 'has the right value' do
14
+ describe "#failure_message" do
15
+ it "has the right value" do
16
16
  subject.matches?(chef_run)
17
- expect(subject.failure_message).to eq('expected to include any recipe')
17
+ expect(subject.failure_message).to eq("expected to include any recipe")
18
18
  end
19
19
  end
20
20
 
21
- describe '#failure_message_when_negated' do
22
- it 'has the right value' do
21
+ describe "#failure_message_when_negated" do
22
+ it "has the right value" do
23
23
  subject.matches?(chef_run)
24
- expect(subject.failure_message_when_negated).to eq('expected not to include any recipes')
24
+ expect(subject.failure_message_when_negated).to eq("expected not to include any recipes")
25
25
  end
26
26
  end
27
27
 
28
- describe '#description' do
29
- it 'has the right value' do
28
+ describe "#description" do
29
+ it "has the right value" do
30
30
  subject.matches?(chef_run)
31
- expect(subject.description).to eq('include any recipe')
31
+ expect(subject.description).to eq("include any recipe")
32
32
  end
33
33
  end
34
34
 
35
- describe '#matches?' do
36
- context 'when 0 recipes are included' do
37
- let(:loaded_recipes) { %w(one) }
35
+ describe "#matches?" do
36
+ context "when 0 recipes are included" do
37
+ let(:loaded_recipes) { %w{one} }
38
38
 
39
- it 'returns false' do
39
+ it "returns false" do
40
40
  expect(subject.matches?(chef_run)).to be false
41
41
  end
42
42
  end
43
43
 
44
- context 'when at least one recipe is included' do
45
- let(:loaded_recipes) { %w(one two) }
44
+ context "when at least one recipe is included" do
45
+ let(:loaded_recipes) { %w{one two} }
46
46
 
47
- it 'returns true' do
47
+ it "returns true" do
48
48
  expect(subject.matches?(chef_run)).to be true
49
49
  end
50
50
  end
@@ -1,38 +1,38 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChefSpec::Matchers::IncludeRecipeMatcher do
4
- let(:chef_run) { double('chef run', run_context: { loaded_recipes: %w(one two three) }) }
5
- subject { described_class.new('one::default') }
4
+ let(:chef_run) { double("chef run", run_context: { loaded_recipes: %w{one two three} }) }
5
+ subject { described_class.new("one::default") }
6
6
 
7
- describe '#failure_message' do
8
- it 'has the right value' do
7
+ describe "#failure_message" do
8
+ it "has the right value" do
9
9
  subject.matches?(chef_run)
10
10
  expect(subject.failure_message)
11
- .to eq(%q(expected ["one::default", "two::default", "three::default"] to include "one::default"))
11
+ .to eq(%q{expected ["one::default", "two::default", "three::default"] to include "one::default"})
12
12
  end
13
13
  end
14
14
 
15
- describe '#failure_message_when_negated' do
16
- it 'has the right value' do
15
+ describe "#failure_message_when_negated" do
16
+ it "has the right value" do
17
17
  subject.matches?(chef_run)
18
18
  expect(subject.failure_message_when_negated)
19
- .to eq(%q(expected "one::default" to not be included))
19
+ .to eq(%q{expected "one::default" to not be included})
20
20
  end
21
21
  end
22
22
 
23
- describe '#description' do
24
- it 'has the right value' do
23
+ describe "#description" do
24
+ it "has the right value" do
25
25
  subject.matches?(chef_run)
26
- expect(subject.description).to eq(%q(include recipe "one::default"))
26
+ expect(subject.description).to eq(%q{include recipe "one::default"})
27
27
  end
28
28
  end
29
29
 
30
- it 'matches when the recipe is included' do
30
+ it "matches when the recipe is included" do
31
31
  expect(subject.matches?(chef_run)).to be_truthy
32
32
  end
33
33
 
34
- it 'does not match when the recipe is not included' do
35
- failure = described_class.new('nope')
34
+ it "does not match when the recipe is not included" do
35
+ failure = described_class.new("nope")
36
36
  expect(failure.matches?(chef_run)).to be_falsy
37
37
  end
38
38
  end
@@ -1,8 +1,8 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChefSpec::Matchers::LinkToMatcher do
4
- let(:from) { '/var/www' }
5
- let(:to) { '/var/html' }
4
+ let(:from) { "/var/www" }
5
+ let(:to) { "/var/html" }
6
6
  let(:link) do
7
7
  Chef::Resource::Link.new(from).tap do |link|
8
8
  link.to(to)
@@ -11,44 +11,44 @@ describe ChefSpec::Matchers::LinkToMatcher do
11
11
  end
12
12
  subject { described_class.new(to) }
13
13
 
14
- describe '#failure_message' do
15
- it 'has the right value' do
14
+ describe "#failure_message" do
15
+ it "has the right value" do
16
16
  subject.matches?(link)
17
17
  expect(subject.failure_message)
18
- .to eq(%Q(expected "link[#{from}]" to link to "#{to}" but was "#{to}"))
18
+ .to eq(%Q{expected "link[#{from}]" to link to "#{to}" but was "#{to}"})
19
19
  end
20
20
  end
21
21
 
22
- describe '#failure_message_when_negated' do
23
- it 'has the right value' do
22
+ describe "#failure_message_when_negated" do
23
+ it "has the right value" do
24
24
  subject.matches?(link)
25
25
  expect(subject.failure_message_when_negated)
26
- .to eq(%Q(expected "link[#{from}]" to not link to "#{to}"))
26
+ .to eq(%Q{expected "link[#{from}]" to not link to "#{to}"})
27
27
  end
28
28
  end
29
29
 
30
- describe '#description' do
31
- it 'has the right value' do
30
+ describe "#description" do
31
+ it "has the right value" do
32
32
  subject.matches?(link)
33
- expect(subject.description).to eq(%Q(link to "#{to}"))
33
+ expect(subject.description).to eq(%Q{link to "#{to}"})
34
34
  end
35
35
  end
36
36
 
37
- context 'when the link is correct' do
38
- it 'matches' do
37
+ context "when the link is correct" do
38
+ it "matches" do
39
39
  expect(subject.matches?(link)).to be_truthy
40
40
  end
41
41
 
42
- it 'adds the link to the coverage report' do
42
+ it "adds the link to the coverage report" do
43
43
  expect(ChefSpec::Coverage).to receive(:cover!).with(link)
44
44
  subject.matches?(link)
45
45
  end
46
46
  end
47
47
 
48
- context 'when the link is not correct' do
49
- subject { described_class.new('/nope/bad/path/bro') }
48
+ context "when the link is not correct" do
49
+ subject { described_class.new("/nope/bad/path/bro") }
50
50
 
51
- it 'does not match' do
51
+ it "does not match" do
52
52
  expect(subject.matches?(link)).to be_falsy
53
53
  end
54
54
  end
@@ -1,40 +1,39 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChefSpec::Matchers::NotificationsMatcher do
4
- subject { described_class.new('execute[install]') }
4
+ subject { described_class.new("execute[install]") }
5
5
  let(:package) do
6
- double('package',
7
- name: 'package',
8
- to_s: 'package[foo]',
6
+ double("package",
7
+ name: "package",
8
+ to_s: "package[foo]",
9
9
  is_a?: true,
10
10
  performed_action?: true,
11
11
  immediate_notifications: [],
12
12
  delayed_notifications: [],
13
- before_notifications: []
14
- )
13
+ before_notifications: [])
15
14
  end
16
15
 
17
- describe '#failure_message' do
18
- it 'has the right value' do
16
+ describe "#failure_message" do
17
+ it "has the right value" do
19
18
  subject.matches?(package)
20
19
  expect(subject.failure_message)
21
- .to include %|expected "package[foo]" to notify "execute[install]", but did not.|
20
+ .to include %{expected "package[foo]" to notify "execute[install]", but did not.}
22
21
  end
23
22
  end
24
23
 
25
- describe '#failure_message_when_negated' do
26
- it 'has the right value' do
24
+ describe "#failure_message_when_negated" do
25
+ it "has the right value" do
27
26
  subject.matches?(package)
28
27
  expect(subject.failure_message_when_negated)
29
- .to eq %|expected "package[foo]" to not notify "execute[install]", but it did.|
28
+ .to eq %{expected "package[foo]" to not notify "execute[install]", but it did.}
30
29
  end
31
30
  end
32
31
 
33
- describe '#description' do
34
- it 'has the right value' do
32
+ describe "#description" do
33
+ it "has the right value" do
35
34
  subject.matches?(package)
36
35
  expect(subject.description)
37
- .to eq %|notify "execute[install]"|
36
+ .to eq %{notify "execute[install]"}
38
37
  end
39
38
  end
40
39
  end
@@ -1,67 +1,67 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChefSpec::Matchers::RenderFileMatcher do
4
- let(:path) { '/tmp/thing' }
5
- let(:file) { double('file', to: path, to_s: "file[#{path}]", performed_action?: true) }
6
- let(:chef_run) { double('chef run', find_resource: file) }
4
+ let(:path) { "/tmp/thing" }
5
+ let(:file) { double("file", to: path, to_s: "file[#{path}]", performed_action?: true) }
6
+ let(:chef_run) { double("chef run", find_resource: file) }
7
7
  subject { described_class.new(path) }
8
8
 
9
- describe '#with_content' do
10
- it 'accepts do/end syntax' do
9
+ describe "#with_content" do
10
+ it "accepts do/end syntax" do
11
11
  subject.matches?(chef_run)
12
12
  expect(
13
13
  subject.with_content do |content|
14
- 'Does not raise ArgumentError'
14
+ "Does not raise ArgumentError"
15
15
  end.expected_content.first.call
16
- ).to eq('Does not raise ArgumentError')
16
+ ).to eq("Does not raise ArgumentError")
17
17
  end
18
18
  end
19
19
 
20
- describe '#failure_message' do
21
- it 'has the right value' do
20
+ describe "#failure_message" do
21
+ it "has the right value" do
22
22
  subject.matches?(chef_run)
23
23
  expect(subject.failure_message)
24
- .to eq(%Q(expected Chef run to render "#{path}"))
24
+ .to eq(%Q{expected Chef run to render "#{path}"})
25
25
  end
26
26
  end
27
27
 
28
- describe '#failure_message_when_negated' do
29
- it 'has the right value' do
28
+ describe "#failure_message_when_negated" do
29
+ it "has the right value" do
30
30
  subject.matches?(chef_run)
31
31
  expect(subject.failure_message_when_negated)
32
- .to eq(%Q(expected file "#{path}" to not be in Chef run))
32
+ .to eq(%Q{expected file "#{path}" to not be in Chef run})
33
33
  end
34
34
  end
35
35
 
36
- describe '#description' do
37
- it 'has the right value' do
36
+ describe "#description" do
37
+ it "has the right value" do
38
38
  subject.matches?(chef_run)
39
- expect(subject.description).to eq(%Q(render file "#{path}"))
39
+ expect(subject.description).to eq(%Q{render file "#{path}"})
40
40
  end
41
41
 
42
- it 'has the right value when with_content is chained' do
42
+ it "has the right value when with_content is chained" do
43
43
  subject.matches?(chef_run)
44
44
  expect(
45
- subject.with_content('foo').with_content('bar').description
46
- ).to eq(%Q(render file "#{path}" with content "foo" with content "bar"))
45
+ subject.with_content("foo").with_content("bar").description
46
+ ).to eq(%Q{render file "#{path}" with content "foo" with content "bar"})
47
47
  end
48
48
  end
49
49
 
50
- context 'when the file is correct' do
51
- it 'matches' do
50
+ context "when the file is correct" do
51
+ it "matches" do
52
52
  expect(subject.matches?(chef_run)).to be_truthy
53
53
  end
54
54
 
55
- it 'adds the resource to the coverage report' do
55
+ it "adds the resource to the coverage report" do
56
56
  expect(ChefSpec::Coverage).to receive(:cover!).with(file)
57
57
  subject.matches?(chef_run)
58
58
  end
59
59
  end
60
60
 
61
- context 'when the file is not correct' do
62
- it 'does not match' do
61
+ context "when the file is not correct" do
62
+ it "does not match" do
63
63
  allow(chef_run).to receive(:find_resource).and_return(nil)
64
- failure = described_class.new('nope')
64
+ failure = described_class.new("nope")
65
65
  expect(failure.matches?(chef_run)).to be_falsy
66
66
  end
67
67
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChefSpec::Matchers::ResourceMatcher do
4
4
  pending
@@ -1,22 +1,22 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChefSpec::Matchers::StateAttrsMatcher do
4
- subject { described_class.new([:a, :b]) }
4
+ subject { described_class.new(%i{a b}) }
5
5
 
6
- context 'when the resource does not exist' do
6
+ context "when the resource does not exist" do
7
7
  let(:resource) { nil }
8
8
  before { subject.matches?(resource) }
9
9
 
10
- it 'does not match' do
10
+ it "does not match" do
11
11
  expect(subject).to_not be_matches(resource)
12
12
  end
13
13
 
14
- it 'has the correct description' do
15
- expect(subject.description).to eq('have state attributes [:a, :b]')
14
+ it "has the correct description" do
15
+ expect(subject.description).to eq("have state attributes [:a, :b]")
16
16
  end
17
17
 
18
- it 'has the correct failure message for should' do
19
- expect(subject.failure_message).to include <<-EOH.gsub(/^ {8}/, '')
18
+ it "has the correct failure message for should" do
19
+ expect(subject.failure_message).to include <<-EOH.gsub(/^ {8}/, "")
20
20
  expected _something_ to have state attributes, but the _something_ you gave me was nil!
21
21
  Ensure the resource exists before making assertions:
22
22
 
@@ -24,8 +24,8 @@ describe ChefSpec::Matchers::StateAttrsMatcher do
24
24
  EOH
25
25
  end
26
26
 
27
- it 'has the correct failure message for should not' do
28
- expect(subject.failure_message_when_negated).to include <<-EOH.gsub(/^ {8}/, '')
27
+ it "has the correct failure message for should not" do
28
+ expect(subject.failure_message_when_negated).to include <<-EOH.gsub(/^ {8}/, "")
29
29
  expected _something_ to not have state attributes, but the _something_ you gave me was nil!
30
30
  Ensure the resource exists before making assertions:
31
31
 
@@ -34,34 +34,34 @@ describe ChefSpec::Matchers::StateAttrsMatcher do
34
34
  end
35
35
  end
36
36
 
37
- context 'when the resource exists' do
38
- let(:klass) { double('class', state_attrs: [:a, :b]) }
39
- let(:resource) { double('resource', class: klass) }
37
+ context "when the resource exists" do
38
+ let(:klass) { double("class", state_attrs: %i{a b}) }
39
+ let(:resource) { double("resource", class: klass) }
40
40
  before { subject.matches?(resource) }
41
41
 
42
- it 'has the correct description' do
43
- expect(subject.description).to eq('have state attributes [:a, :b]')
42
+ it "has the correct description" do
43
+ expect(subject.description).to eq("have state attributes [:a, :b]")
44
44
  end
45
45
 
46
- it 'has the correct failure message for should' do
47
- expect(subject.failure_message).to eq('expected [:a, :b] to equal [:a, :b]')
46
+ it "has the correct failure message for should" do
47
+ expect(subject.failure_message).to eq("expected [:a, :b] to equal [:a, :b]")
48
48
  end
49
49
 
50
- it 'has the correct failure message for should not' do
51
- expect(subject.failure_message_when_negated).to eq('expected [:a, :b] to not equal [:a, :b]')
50
+ it "has the correct failure message for should not" do
51
+ expect(subject.failure_message_when_negated).to eq("expected [:a, :b] to not equal [:a, :b]")
52
52
  end
53
53
 
54
- it 'matches when the state attributes are correct' do
54
+ it "matches when the state attributes are correct" do
55
55
  expect(subject).to be_matches(resource)
56
56
  end
57
57
 
58
- it 'does not match when the state attributes are incorrect' do
59
- allow(klass).to receive(:state_attrs).and_return([:c, :d])
58
+ it "does not match when the state attributes are incorrect" do
59
+ allow(klass).to receive(:state_attrs).and_return(%i{c d})
60
60
  expect(subject).to_not be_matches(resource)
61
61
  end
62
62
 
63
- it 'does not match when partial state attribute are incorrect' do
64
- allow(klass).to receive(:state_attrs).and_return([:b, :c])
63
+ it "does not match when partial state attribute are incorrect" do
64
+ allow(klass).to receive(:state_attrs).and_return(%i{b c})
65
65
  expect(subject).to_not be_matches(resource)
66
66
  end
67
67
  end