chefspec 9.2.1 → 9.3.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.
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