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

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