rspec-terraform 0.1.0.pre.18 → 0.1.0.pre.19

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: 6bea553c61f70c6bd7bf4bdedca8b618a00539e8bfb1de8234e9771c8462c1ca
4
- data.tar.gz: e3ef056ecdf300bb9c9ce9656090a4ac93703d5346ba36e0f2c3f43885f927da
3
+ metadata.gz: d18507e1fb2c9cb75f1d78660709319e3addcc1eeee92538c2b3134d6c3c6783
4
+ data.tar.gz: 794b11b381d232bbbfa5e61ca2a759e8240366768ce7462ad2ea5e6489dddada
5
5
  SHA512:
6
- metadata.gz: d68c9235ad0a528f15f1e0801681210561cecf4070b69276fe2a28436e28b3f5748728220382b3e87950a1959a46ce912be09d6b300f94732bf50ebe3a78cfc9
7
- data.tar.gz: 61b756e071fba7355d294552d042b0d855ac1ca18021f1b06c594b3b3e2fad05d5d53668580880911db3e6c103d5b46579f1a8e28f6d2fc54c08a46014772696
6
+ metadata.gz: b7bcc363f2779b425e544abd7065263e974d36351ed4526b7e768f3d93cc66bd2241c8afc81a65c7ede3418df35eb70bb3fd0cdfca77b3dcca629f20ab9091a1
7
+ data.tar.gz: 9fd86d2510ffcd78213d9ebf8770a1fa70ed4a3a18fca758a2824388e61afcad802d4f1c3bfa85c9612f4abfefb10307a0c5f282e432ea7d490ff9d1c991d8a6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.18)
4
+ rspec-terraform (0.1.0.pre.19)
5
5
  rspec (>= 3.0)
6
6
  ruby-terraform (= 1.7.0.pre.13)
7
7
 
@@ -3,6 +3,7 @@
3
3
  module RSpec
4
4
  module Terraform
5
5
  module Matchers
6
+ # rubocop:disable Metrics/ClassLength
6
7
  class IncludeOutputChange
7
8
  attr_reader :definition, :value, :plan
8
9
 
@@ -69,8 +70,10 @@ module RSpec
69
70
  end
70
71
 
71
72
  def positive_expected_line
72
- maybe_with_definition(
73
- positive_plan_line
73
+ maybe_with_expected_value(
74
+ maybe_with_definition(
75
+ positive_plan_line
76
+ )
74
77
  )
75
78
  end
76
79
 
@@ -79,13 +82,22 @@ module RSpec
79
82
  end
80
83
 
81
84
  def maybe_with_definition(expected_line)
82
- unless @definition.empty?
85
+ unless definition.empty?
83
86
  expected_line =
84
87
  "#{expected_line} matching definition:\n#{definition_lines}"
85
88
  end
86
89
  expected_line
87
90
  end
88
91
 
92
+ def maybe_with_expected_value(expected_line)
93
+ unless value.nil?
94
+ expected_line =
95
+ "#{expected_line}\n with value after " \
96
+ "the output change is applied of:\n#{expected_value_lines}"
97
+ end
98
+ expected_line
99
+ end
100
+
89
101
  def definition_lines
90
102
  indent = ' '
91
103
  definition
@@ -93,12 +105,21 @@ module RSpec
93
105
  .join("\n")
94
106
  end
95
107
 
108
+ def expected_value_lines
109
+ renderable_value = with_matcher_renderable(value)
110
+ value_object =
111
+ RubyTerraform::Models::Values.map(value: renderable_value)
112
+ value_object.render(level: 6, bare: true)
113
+ end
114
+
96
115
  def positive_got_line
97
116
  if plan.output_changes.empty?
98
117
  'a plan including no output changes.'
99
118
  else
100
119
  with_available_output_changes(
101
- 'a plan including no matching output changes.'
120
+ maybe_with_relevant_output_changes(
121
+ 'a plan including no matching output changes.'
122
+ )
102
123
  )
103
124
  end
104
125
  end
@@ -108,6 +129,15 @@ module RSpec
108
129
  "\n#{available_output_change_lines}"
109
130
  end
110
131
 
132
+ def maybe_with_relevant_output_changes(got_line)
133
+ unless value.nil?
134
+ got_line =
135
+ "#{got_line}\n relevant output changes are:" \
136
+ "\n#{relevant_output_change_lines}"
137
+ end
138
+ got_line
139
+ end
140
+
111
141
  def available_output_change_lines
112
142
  available_lines = plan.output_changes.collect do |oc|
113
143
  name = oc.name
@@ -116,7 +146,32 @@ module RSpec
116
146
  end
117
147
  available_lines.join("\n")
118
148
  end
149
+
150
+ def relevant_output_change_lines
151
+ relevant_lines = definition_matches(plan).collect do |oc|
152
+ name = oc.name
153
+ actions = oc.change.actions.join(', ')
154
+ value = oc.change.after_object
155
+ value_object =
156
+ RubyTerraform::Models::Values.map(value: value)
157
+ value_lines = value_object.render(level: 8, bare: true)
158
+
159
+ " - #{name} (#{actions})\n#{value_lines}"
160
+ end
161
+ relevant_lines.join("\n")
162
+ end
163
+
164
+ def with_matcher_renderable(value)
165
+ return value if value.respond_to?(:render)
166
+
167
+ value.define_singleton_method(:render) do |_|
168
+ "a value satisfying: #{value.description}"
169
+ end
170
+
171
+ value
172
+ end
119
173
  end
174
+ # rubocop:enable Metrics/ClassLength
120
175
  end
121
176
  end
122
177
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Terraform
5
- VERSION = '0.1.0.pre.18'
5
+ VERSION = '0.1.0.pre.19'
6
6
  end
7
7
  end
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.18
4
+ version: 0.1.0.pre.19
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-08-16 00:00:00.000000000 Z
11
+ date: 2022-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec