rspec-terraform 0.1.0.pre.4 → 0.1.0.pre.7

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: d7cb3c96cddab5b6da8dfe17777c03db55bcf4aa26f0ace70d0071054fffcd45
4
- data.tar.gz: 8627531e2f304c235a9187b9a1d93a4e150322c06d53fc0f7838ef814e66908a
3
+ metadata.gz: c9f63f4653acb1c590d94276efb6e9e35e97ac1bdd4d16d89408e936af8ddc64
4
+ data.tar.gz: d3347bbc47f608ed5cfdf65ae849bb6e0b8795da3d36849217fc56a39e655574
5
5
  SHA512:
6
- metadata.gz: bb8bfc14dd162538c8954c9fddea724e71d787750cc852f9aebf38e9e93602d6ba669a3b2e7d7850d66a655f107b3766537c1238289c7d9faba36a31bcc48199
7
- data.tar.gz: 2d81dca04084c0662c0470bc4e51fff069feeac4cf9f08c0e2863960b169e1e3065367969bc4b99dd1730e16331616574ed2a4212fee23dc32976e22e8d58810
6
+ metadata.gz: 916e4ad79473d21ceeafe204e769233bb7bf700d2942bec2b3cf49a8855dfc3eb426c489a54b46fcb5a46e65696644eba477835be9032264bb10217e7aeee9b0
7
+ data.tar.gz: f67e9c7d78cdca98504cf234de4fc3d17dbe7c0d54752b88fd2d6dd4a13ad359ec996a6ec3ef495193b409407513f589f3dcc52dcde63a4f528e23fe7b94d6a5
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.4)
4
+ rspec-terraform (0.1.0.pre.7)
5
5
  rspec (>= 3.0)
6
- ruby-terraform (= 1.7.0.pre.3)
6
+ ruby-terraform (= 1.7.0.pre.5)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activesupport (7.0.3)
11
+ activesupport (7.0.3.1)
12
12
  concurrent-ruby (~> 1.0, >= 1.0.2)
13
13
  i18n (>= 1.6, < 2)
14
14
  minitest (>= 5.1)
@@ -30,7 +30,7 @@ GEM
30
30
  gem-release (2.2.2)
31
31
  hamster (3.0.0)
32
32
  concurrent-ruby (~> 1.0)
33
- i18n (1.10.0)
33
+ i18n (1.12.0)
34
34
  concurrent-ruby (~> 1.0)
35
35
  immutable-struct (2.4.1)
36
36
  json (2.6.2)
@@ -93,14 +93,14 @@ GEM
93
93
  rubocop-ast (>= 1.18.0, < 2.0)
94
94
  ruby-progressbar (~> 1.7)
95
95
  unicode-display_width (>= 1.4.0, < 3.0)
96
- rubocop-ast (1.18.0)
96
+ rubocop-ast (1.19.1)
97
97
  parser (>= 3.1.1.0)
98
98
  rubocop-rake (0.6.0)
99
99
  rubocop (~> 1.0)
100
100
  rubocop-rspec (2.12.1)
101
101
  rubocop (~> 1.31)
102
102
  ruby-progressbar (1.11.0)
103
- ruby-terraform (1.7.0.pre.3)
103
+ ruby-terraform (1.7.0.pre.5)
104
104
  immutable-struct (~> 2.4)
105
105
  lino (~> 3.0)
106
106
  ruby2_keywords (0.0.5)
@@ -142,4 +142,4 @@ DEPENDENCIES
142
142
  simplecov
143
143
 
144
144
  BUNDLED WITH
145
- 2.3.17
145
+ 2.3.18
data/Rakefile CHANGED
@@ -84,7 +84,7 @@ RakeCircleCI.define_project_tasks(
84
84
  t.environment_variables = {
85
85
  ENCRYPTION_PASSPHRASE:
86
86
  File.read('config/secrets/ci/encryption.passphrase')
87
- .chomp
87
+ .chomp
88
88
  }
89
89
  t.checkout_keys = []
90
90
  t.ssh_keys = [
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'rspec/core'
4
+ require 'rspec/matchers'
5
+ require 'rspec/matchers/built_in/eq'
3
6
  require 'rspec/matchers/built_in/count_expectation'
4
7
 
5
8
  module RSpec
@@ -27,8 +30,9 @@ module RSpec
27
30
  end
28
31
 
29
32
  def with_attribute_value(*args)
30
- stage, name, value = args.count == 3 ? args : [:after, *args]
31
- @attributes << { stage: stage, name: name, value: value }
33
+ stage, path, value = args.count == 3 ? args : [:after, *args]
34
+ path = [path] if path.is_a?(Symbol)
35
+ @attributes << { stage: stage, path: path, value: value }
32
36
  self
33
37
  end
34
38
 
@@ -43,12 +47,29 @@ module RSpec
43
47
  change = resource_change.change
44
48
  after = change.after_object
45
49
  @attributes.all? do |attribute|
46
- expected = RubyTerraform::Models::Objects.box(attribute[:value])
47
- actual = after[attribute[:name]]
48
- actual == expected
50
+ matcher = attribute_matcher(attribute)
51
+ value = attribute_value(after, attribute)
52
+ matcher.matches?(value)
49
53
  end
50
54
  end
51
55
  end
56
+
57
+ def attribute_matcher(attribute)
58
+ expected = attribute[:value]
59
+ return expected if expected.respond_to?(:matches?)
60
+
61
+ RSpec::Matchers::BuiltIn::Eq.new(
62
+ RubyTerraform::Models::Objects.box(expected)
63
+ )
64
+ end
65
+
66
+ def attribute_value(object, attribute)
67
+ expected = attribute[:value]
68
+ actual = object.dig(*attribute[:path])
69
+ return actual&.unbox if expected.respond_to?(:matches?)
70
+
71
+ actual
72
+ end
52
73
  end
53
74
  end
54
75
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Terraform
5
- VERSION = '0.1.0.pre.4'
5
+ VERSION = '0.1.0.pre.7'
6
6
  end
7
7
  end
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
38
38
  spec.required_ruby_version = '>= 2.7'
39
39
 
40
40
  spec.add_dependency 'rspec', '>= 3.0'
41
- spec.add_dependency 'ruby-terraform', '1.7.0.pre.3'
41
+ spec.add_dependency 'ruby-terraform', '1.7.0.pre.5'
42
42
 
43
43
  spec.add_development_dependency 'bundler'
44
44
  spec.add_development_dependency 'faker'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.4
4
+ version: 0.1.0.pre.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - InfraBlocks Maintainers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-11 00:00:00.000000000 Z
11
+ date: 2022-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 1.7.0.pre.3
33
+ version: 1.7.0.pre.5
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 1.7.0.pre.3
40
+ version: 1.7.0.pre.5
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement