rspec-terraform 0.1.0.pre.11 → 0.1.0.pre.12

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: 7e4c8fee87d53c406e5f9194007504e3f9c68a2b77f55a0c7fb18a84d4f6fbdd
4
- data.tar.gz: 52a46c856d5e0a4fe3655b504a916e62570effaa5e0032969d2a09f43da41a45
3
+ metadata.gz: 1f38869b0e2c2de7b280ff09e070c6fa66fecd2ede8dba1e182300306110a20f
4
+ data.tar.gz: 384a2ec52c9fbf9162ba773a866fec91463c055a0b59bb4fea922fb421d53e9c
5
5
  SHA512:
6
- metadata.gz: 7d88f8512b916e5159c0230d52043e671eb2f852e8f090e1a85d4b94883363830e095f103fc805d48cd7bce8c75fa02a11422717e88e7209d3d38deb12a807b7
7
- data.tar.gz: 3830deddb0e6252eebfc807d103c615a2532f74adf671b732c019c56ef397d3467a2eb8fd645a5e7d251623dcd00698ca85a0941cf4803abe1f252ef5ca42c8c
6
+ metadata.gz: dabc8823fc35214035ea62093bfcc7623ab8d6921b381cb3c74a3f6691d23a35ae4bbb58f65c3d900245a355fd6e69ac3a139f097efb3b81dc8a409c648e0e35
7
+ data.tar.gz: 97f7670c091ea2051bf812f126fdc32df5f8b10f9e234a3dc95a23b59842b9b0f30af9ffd4164bfaffd57b90e9c6f5b185468648a0da53bb1d3a562eafa7d9c9
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.11)
4
+ rspec-terraform (0.1.0.pre.12)
5
5
  rspec (>= 3.0)
6
- ruby-terraform (= 1.7.0.pre.6)
6
+ ruby-terraform (= 1.7.0.pre.8)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -83,14 +83,14 @@ GEM
83
83
  diff-lcs (>= 1.2.0, < 2.0)
84
84
  rspec-support (~> 3.11.0)
85
85
  rspec-support (3.11.0)
86
- rubocop (1.31.2)
86
+ rubocop (1.32.0)
87
87
  json (~> 2.3)
88
88
  parallel (~> 1.10)
89
89
  parser (>= 3.1.0.0)
90
90
  rainbow (>= 2.2.2, < 4.0)
91
91
  regexp_parser (>= 1.8, < 3.0)
92
92
  rexml (>= 3.2.5, < 4.0)
93
- rubocop-ast (>= 1.18.0, < 2.0)
93
+ rubocop-ast (>= 1.19.1, < 2.0)
94
94
  ruby-progressbar (~> 1.7)
95
95
  unicode-display_width (>= 1.4.0, < 3.0)
96
96
  rubocop-ast (1.19.1)
@@ -100,7 +100,7 @@ GEM
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.6)
103
+ ruby-terraform (1.7.0.pre.8)
104
104
  immutable-struct (~> 2.4)
105
105
  lino (~> 3.0)
106
106
  ruby2_keywords (0.0.5)
@@ -5,6 +5,9 @@ require 'rspec/matchers'
5
5
  require 'rspec/matchers/built_in/eq'
6
6
  require 'rspec/matchers/built_in/count_expectation'
7
7
 
8
+ require 'ruby_terraform/models/path'
9
+ require 'ruby_terraform/models/path_set'
10
+
8
11
  module RSpec
9
12
  module Terraform
10
13
  module Matchers
@@ -34,6 +37,8 @@ module RSpec
34
37
  def with_attribute_value(*args)
35
38
  stage, path, value = args.count == 3 ? args : [:after, *args]
36
39
  path = [path] if path.is_a?(Symbol)
40
+ path = RubyTerraform::Models::Path.new(path)
41
+ value = maybe_box_value(value)
37
42
  @attributes << { stage: stage, path: path, value: value }
38
43
  self
39
44
  end
@@ -66,18 +71,24 @@ module RSpec
66
71
  end
67
72
  end
68
73
 
74
+ def maybe_box_value(value)
75
+ if value.respond_to?(:matches?)
76
+ value
77
+ else
78
+ RubyTerraform::Models::Objects.box(value)
79
+ end
80
+ end
81
+
69
82
  def attribute_matcher(attribute)
70
83
  expected = attribute[:value]
71
84
  return expected if expected.respond_to?(:matches?)
72
85
 
73
- RSpec::Matchers::BuiltIn::Eq.new(
74
- RubyTerraform::Models::Objects.box(expected)
75
- )
86
+ RSpec::Matchers::BuiltIn::Eq.new(expected)
76
87
  end
77
88
 
78
89
  def attribute_value(object, attribute)
79
90
  expected = attribute[:value]
80
- actual = object.dig(*attribute[:path])
91
+ actual = attribute[:path].read(object)
81
92
  return actual&.unbox if expected.respond_to?(:matches?)
82
93
 
83
94
  actual
@@ -172,28 +183,24 @@ module RSpec
172
183
  end
173
184
 
174
185
  def expected_attribute_lines
175
- indent = ' '
176
- attribute_fragments = attributes.collect do |a|
177
- "#{indent}#{render(a[:path])} = #{a[:value].inspect}"
178
- end
179
- attribute_fragments.join("\n")
186
+ paths = attributes.collect { |attribute| attribute[:path] }
187
+ path_set = RubyTerraform::Models::PathSet.new(paths)
188
+ values = attributes.collect { |attribute| attribute[:value] }
189
+ object = RubyTerraform::Models::Objects.object(path_set, values)
190
+ object.render(level: 6, bare: true)
180
191
  end
181
192
 
182
- # rubocop:disable Metrics/MethodLength
183
193
  def relevant_resource_change_lines
184
194
  relevant_lines = definition_matches(plan).collect do |rc|
185
195
  address = rc.address
186
196
  actions = rc.change.actions.join(', ')
187
197
  attributes = rc.change.after_object
188
- attribute_lines = attributes.collect do |key, value|
189
- " #{key} = #{value.inspect}"
190
- end
191
- attribute_lines = attribute_lines.join("\n")
198
+ attribute_lines = attributes.render(level: 8, bare: true)
199
+
192
200
  " - #{address} (#{actions})\n#{attribute_lines}"
193
201
  end
194
202
  relevant_lines.join("\n")
195
203
  end
196
- # rubocop:enable Metrics/MethodLength
197
204
 
198
205
  def available_resource_change_lines
199
206
  available_lines = plan.resource_changes.collect do |rc|
@@ -203,10 +210,6 @@ module RSpec
203
210
  end
204
211
  available_lines.join("\n")
205
212
  end
206
-
207
- def render(path)
208
- path.collect { |elem| elem.to_s }.join(',')
209
- end
210
213
  end
211
214
 
212
215
  # rubocop:enable Metrics/ClassLength
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Terraform
5
- VERSION = '0.1.0.pre.11'
5
+ VERSION = '0.1.0.pre.12'
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.6'
41
+ spec.add_dependency 'ruby-terraform', '1.7.0.pre.8'
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.11
4
+ version: 0.1.0.pre.12
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-20 00:00:00.000000000 Z
11
+ date: 2022-07-26 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.6
33
+ version: 1.7.0.pre.8
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.6
40
+ version: 1.7.0.pre.8
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement