rspec-terraform 0.1.0.pre.10 → 0.1.0.pre.13

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: f8c0ef1824e2c32907a06a34ab775ab0004a9ddf57ab22c5b2baeb40812eb4df
4
- data.tar.gz: af62f1d916db8ea95f186bb44903bd52641787c270b6c0e1fa7bf6073482204e
3
+ metadata.gz: 3cc8147616146ae0fde066315865ff6c1bfb32ac516da81783cbbbe9c17be24e
4
+ data.tar.gz: 58186f1efbcac84c1bccd3760ef667ea390c909dcb91e5421844b9dbab6bba3b
5
5
  SHA512:
6
- metadata.gz: 3a2638bb48081a61c55f716459873c66e7bb3e730e80561ddff0605bcbbd48e67cc56498ce7a343747d08d80bdccd6536203b53728163562fd272ca0d4debc37
7
- data.tar.gz: 26e7621f75e736abc0e0ba5a036513c4f6d32b2ae3cfd16ba357fe3c956b566773b2756963fba41cae6c57e9537b6af4d124db93beb5f6c3f4971d2e213e8fae
6
+ metadata.gz: 18228da814d613820107ea17d2abf5df5d22028c4ee701a29e14638c51261e2a4050a48f5eb447027cdcb860467c4e69f84897fb4a2747c15693f0fa08fb8c60
7
+ data.tar.gz: 73361b336ce497361eb27d3c6867e29dca996d0477ba74466b0a2b13a7bce96f8d3b41ec5d2eec1902900339872b497fd4d5759478c01c75f0af36b0d3fccfed
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.10)
4
+ rspec-terraform (0.1.0.pre.13)
5
5
  rspec (>= 3.0)
6
- ruby-terraform (= 1.7.0.pre.5)
6
+ ruby-terraform (= 1.7.0.pre.9)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -20,7 +20,7 @@ GEM
20
20
  concurrent-ruby (1.1.10)
21
21
  diff-lcs (1.5.0)
22
22
  docile (1.4.0)
23
- excon (0.92.3)
23
+ excon (0.92.4)
24
24
  faker (2.21.0)
25
25
  i18n (>= 1.8.11, < 2)
26
26
  faraday (2.3.0)
@@ -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.5)
103
+ ruby-terraform (1.7.0.pre.9)
104
104
  immutable-struct (~> 2.4)
105
105
  lino (~> 3.0)
106
106
  ruby2_keywords (0.0.5)
@@ -116,7 +116,7 @@ GEM
116
116
  simplecov-html (0.12.3)
117
117
  simplecov_json_formatter (0.1.4)
118
118
  sshkey (2.0.0)
119
- tzinfo (2.0.4)
119
+ tzinfo (2.0.5)
120
120
  concurrent-ruby (~> 1.0)
121
121
  unicode-display_width (2.2.0)
122
122
 
@@ -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.10'
5
+ VERSION = '0.1.0.pre.13'
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.5'
41
+ spec.add_dependency 'ruby-terraform', '1.7.0.pre.9'
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.10
4
+ version: 0.1.0.pre.13
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.5
33
+ version: 1.7.0.pre.9
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.5
40
+ version: 1.7.0.pre.9
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement