rspec-terraform 0.1.0.pre.14 → 0.1.0.pre.17

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: 91f52906b222af912b150dfe8adeccfcf2a96c6397a925b16e010fe95fdedc7f
4
- data.tar.gz: 5f8339be7af3ef1e8734e4eb20114f9da5a92a7bf01d12ccc8b25c29918b39fa
3
+ metadata.gz: 1a78765d5eecf1940eb733e53740d9835587ee3f19647222b2b7e3e594b72a23
4
+ data.tar.gz: 328c9a749a876711521c9581f0d75a2d9c9ede2821ddbb6012c0acb79869c852
5
5
  SHA512:
6
- metadata.gz: 0fc145bf6e79e9a925ede3dee1f01ff0e9d8f645da18edad9ba825d31788cb663cd018b181ea4b2a18c19051690cb4354e6267e0b6775cd06215d400c744303b
7
- data.tar.gz: 5593bf9db223bce19a841beb644043b6d9395bb37102aa0e56a39bb7e6b7dd64c36aa6ab1e9f3e2e41c16a3027c46486e78bded63954027dddfd9fda09c950ee
6
+ metadata.gz: 61f34656cba5a4fe108338284345256cc9c91cc2939d9a4451ef8a30c08ca978e1ff0a087d2f1b238f88bed7b3a80ef31fa41fc1e610219ec962b65d6fbb1519
7
+ data.tar.gz: 1ae1c88f42592e288f7a4e78681479582b1e42baefd25cdb2bbc25d24e5fb586b0a1186ff418628982bc70bf21cd34e6f48d1f6c18f4d76c38a02d1328fe7ab9
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec-terraform (0.1.0.pre.14)
4
+ rspec-terraform (0.1.0.pre.17)
5
5
  rspec (>= 3.0)
6
- ruby-terraform (= 1.7.0.pre.9)
6
+ ruby-terraform (= 1.7.0.pre.13)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -43,7 +43,7 @@ GEM
43
43
  sawyer (~> 0.9)
44
44
  open4 (1.3.4)
45
45
  parallel (1.22.1)
46
- parser (3.1.2.0)
46
+ parser (3.1.2.1)
47
47
  ast (~> 2.4.1)
48
48
  public_suffix (4.0.7)
49
49
  rainbow (3.1.1)
@@ -83,24 +83,24 @@ 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.32.0)
86
+ rubocop (1.35.0)
87
87
  json (~> 2.3)
88
88
  parallel (~> 1.10)
89
- parser (>= 3.1.0.0)
89
+ parser (>= 3.1.2.1)
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.19.1, < 2.0)
93
+ rubocop-ast (>= 1.20.1, < 2.0)
94
94
  ruby-progressbar (~> 1.7)
95
95
  unicode-display_width (>= 1.4.0, < 3.0)
96
- rubocop-ast (1.19.1)
96
+ rubocop-ast (1.21.0)
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.9)
103
+ ruby-terraform (1.7.0.pre.13)
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.19
145
+ 2.3.20
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpec
4
+ module Terraform
5
+ module Matchers
6
+ class IncludeOutputChange
7
+ attr_reader :definition, :value
8
+
9
+ def initialize(definition)
10
+ @definition = definition
11
+ @value = nil
12
+ end
13
+
14
+ def matches?(plan)
15
+ !value_matches(plan).empty?
16
+ end
17
+
18
+ def with_value(value)
19
+ @value = maybe_box_value(value)
20
+ self
21
+ end
22
+
23
+ private
24
+
25
+ def definition_matches(plan)
26
+ plan.output_changes_matching(definition)
27
+ end
28
+
29
+ def value_matches(plan)
30
+ matches = definition_matches(plan)
31
+ return matches unless value
32
+
33
+ expected = value_matcher(value)
34
+
35
+ matches.filter do |output_change|
36
+ change = output_change.change
37
+ after = change.after_object
38
+ actual = resolved_value(value, after)
39
+
40
+ expected&.matches?(actual)
41
+ end
42
+ end
43
+
44
+ def maybe_box_value(value)
45
+ if value.respond_to?(:matches?)
46
+ value
47
+ else
48
+ RubyTerraform::Models::Objects.box(value)
49
+ end
50
+ end
51
+
52
+ def value_matcher(expected)
53
+ return expected if expected.respond_to?(:matches?)
54
+
55
+ RSpec::Matchers::BuiltIn::Eq.new(expected)
56
+ end
57
+
58
+ def resolved_value(expected, actual)
59
+ return actual&.unbox if expected.respond_to?(:matches?)
60
+
61
+ actual
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -48,11 +48,6 @@ module RSpec
48
48
  "\n got: #{positive_got_line}"
49
49
  end
50
50
 
51
- def failure_message_when_negated
52
- "\nexpected: a plan including no resource changes" \
53
- "\n got: a plan including at least one resource change"
54
- end
55
-
56
51
  private
57
52
 
58
53
  def definition_matches(plan)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative './matchers/include_resource_change'
4
+ require_relative './matchers/include_output_change'
4
5
 
5
6
  module RSpec
6
7
  module Terraform
@@ -28,6 +29,30 @@ module RSpec
28
29
  def include_resource_deletion(definition = {})
29
30
  include_resource_change(definition.merge(delete?: true))
30
31
  end
32
+
33
+ def include_resource(definition = {})
34
+ include_resource_change(definition.merge(present_after?: true))
35
+ end
36
+
37
+ def include_output_change(definition = {})
38
+ IncludeOutputChange.new(definition)
39
+ end
40
+
41
+ def include_output_creation(definition = {})
42
+ include_output_change(definition.merge(create?: true))
43
+ end
44
+
45
+ def include_output_update(definition = {})
46
+ include_output_change(definition.merge(update?: true))
47
+ end
48
+
49
+ def include_output_deletion(definition = {})
50
+ include_output_change(definition.merge(delete?: true))
51
+ end
52
+
53
+ def include_output(definition = {})
54
+ include_output_change(definition.merge(present_after?: true))
55
+ end
31
56
  end
32
57
  end
33
58
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Terraform
5
- VERSION = '0.1.0.pre.14'
5
+ VERSION = '0.1.0.pre.17'
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.9'
41
+ spec.add_dependency 'ruby-terraform', '1.7.0.pre.13'
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.14
4
+ version: 0.1.0.pre.17
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-31 00:00:00.000000000 Z
11
+ date: 2022-08-16 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.9
33
+ version: 1.7.0.pre.13
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.9
40
+ version: 1.7.0.pre.13
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -224,6 +224,7 @@ files:
224
224
  - bin/setup
225
225
  - lib/rspec/terraform.rb
226
226
  - lib/rspec/terraform/matchers.rb
227
+ - lib/rspec/terraform/matchers/include_output_change.rb
227
228
  - lib/rspec/terraform/matchers/include_resource_change.rb
228
229
  - lib/rspec/terraform/version.rb
229
230
  - rspec-terraform.gemspec