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

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: 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