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

Sign up to get free protection for your applications and to get access to all the features.
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