ergomentum_rspec 1.3.0 → 2.0.0

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: 1be2f4dbd6207d59937bb9e9428f969f50060d452d72ee13930be52c77114f73
4
- data.tar.gz: c6ad0baad96d8334730fad66c79b9f35935d6a59c8dda165d5898392a5c1712d
3
+ metadata.gz: f98d89b3ed280df61c307f9f32eeac90167fb9ac1d3a5c37e48dce72aef9669b
4
+ data.tar.gz: 1d9cde32a984501e0bfcfc256db6900b0271150b6beb17a09be88a727ea683ed
5
5
  SHA512:
6
- metadata.gz: 6298b845ca13d986ba8ba4288d4a3131559065bf3fbe54ca839b0c185a7ec66b314ea0f7c15841cb034a04d94335d0adc9d82012d37b5ecca5f8fb23e30c7c50
7
- data.tar.gz: d10d3053bf0e4b11d6606ba7eca2b2bb81de29d0283d3d845c16076f9693850387eeeb51ef3e4182dc09e6f8f6c7b633888ab1515eff0e35f270ef4dca5d939c
6
+ metadata.gz: 20774aa38bc6988f7bb5c572ccb88585fb4ade4579573e3d6a2a26fa9583a5c2eb85638a518b980b4e8d74c0b7a58c8f79a3981bc9caee4ac733ba9f5bbdf47d
7
+ data.tar.gz: 7998a2496e9c8f2acd1959269697d7cf69189c2c33c781a563a0178041b4b4dd6d1b661ed51d7ba928df3c571d331270804ac2c299da0183450897debb71bf5c
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  source "https://rubygems.org"
3
4
 
4
5
  # Specify your gem's dependencies in ergomentum_rspec.gemspec
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative "lib/ergomentum_rspec/version"
3
4
 
4
5
  Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
@@ -17,16 +18,19 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
17
18
  spec.require_paths = ["lib"]
18
19
  spec.required_ruby_version = ">= 3.0.1"
19
20
 
20
- spec.add_development_dependency "byebug", "~> 11.1.3"
21
- spec.add_development_dependency "rake", "~> 13.0.1"
22
- spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
23
- spec.add_development_dependency "rubocop", "~> 1.8"
24
- spec.add_development_dependency "rubocop-performance", "~> 1.9"
25
- spec.add_development_dependency "rubocop-rake"
26
- spec.add_development_dependency "simplecov", "~> 0.21.2"
27
- spec.add_development_dependency "test-prof", "~> 1.0.2"
21
+ spec.metadata["homepage_uri"] = spec.homepage
22
+ spec.metadata["source_code_uri"] = "https://github.com/ergomentum/ergomentum_rspec/"
23
+ spec.metadata["changelog_uri"] = "https://github.com/ergomentum/ergomentum_rspec/blob/main/CHANGELOG.md"
24
+
28
25
  spec.add_dependency "activemodel", "~> 6.0"
29
26
  spec.add_dependency "activesupport", "~> 6.0"
30
27
  spec.add_dependency "allocation_stats", "~> 0.1.5"
31
28
  spec.add_dependency "rspec", "~> 3.9"
29
+
30
+ spec.add_development_dependency "byebug", "~> 11.1.3"
31
+ spec.add_development_dependency "ergomentum_rubocop", "~> 0.7.0"
32
+ spec.add_development_dependency "rake", "~> 13.0.1"
33
+ spec.add_development_dependency "rspec_junit_formatter", "~> 0.5.1"
34
+ spec.add_development_dependency "simplecov", "~> 0.21.2"
35
+ spec.add_development_dependency "test-prof", "~> 1.0.2"
32
36
  end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ErgomentumRspec
4
+ module Helpers
5
+ class EnvVarMockService
6
+ def self.instance
7
+ @instance ||= new
8
+ end
9
+
10
+ def initialize
11
+ @original_env_values = {}
12
+ end
13
+
14
+ def mock_environment_variables(env_hash)
15
+ env_hash.each do |key, value|
16
+ remember_original_env_value(key)
17
+ ENV[key] = value
18
+ end
19
+ end
20
+
21
+ def restore_original_env_vars
22
+ @original_env_values.each do |key, value|
23
+ ENV[key] = value
24
+ end
25
+ @original_env_values = {}
26
+ end
27
+
28
+ private
29
+
30
+ def remember_original_env_value(key)
31
+ return if @original_env_values.key?(key)
32
+
33
+ @original_env_values[key] = ENV[key]
34
+ end
35
+ end
36
+ end
37
+ end
@@ -3,13 +3,17 @@
3
3
  module ErgomentumRspec
4
4
  module Helpers
5
5
  module Environment
6
- def mock_environment_variables(options)
7
- stub_const("ENV", ENV.to_h.merge(options))
6
+ def mock_environment_variables(env_hash)
7
+ # Using stub_const("ENV", ENV.to_h.merge(env_hash)) as simple solution does not work when using cuprite
8
+ # in feature specs. Something seems to rely on the concrete implementation of ENV.
9
+ # When we stub the const ENV with a Hash in such feature specs the whole ruby environment crashes.
10
+ EnvVarMockService.instance.mock_environment_variables(env_hash)
8
11
  end
9
12
  end
10
13
 
11
14
  RSpec.configure do |config|
12
15
  config.include Environment
16
+ config.after { EnvVarMockService.instance.restore_original_env_vars }
13
17
  end
14
18
  end
15
19
  end
@@ -34,7 +34,7 @@ module ErgomentumRspec
34
34
  true
35
35
  else
36
36
  @message = "expecting error message '#{@expected_error_message}' for invalid value '#{@value}' but got "\
37
- "'#{model.errors.messages[:some_attribute].join(', ')}'"
37
+ "'#{model.errors.messages[:some_attribute].join(', ')}'"
38
38
  false
39
39
  end
40
40
  end
@@ -10,7 +10,7 @@ module ErgomentumRspec
10
10
  class BeUnique
11
11
  def matches?(actual)
12
12
  @actual = actual
13
- actual.detect { |e| actual.count(e) == 1 }
13
+ actual.find { |e| actual.count(e) == 1 }
14
14
  end
15
15
 
16
16
  def failure_message
@@ -32,35 +32,35 @@ module ErgomentumRspec
32
32
 
33
33
  def exactly(expected)
34
34
  @expected = expected
35
- @compare = Proc.new { @trace.new_allocations.size == @expected }
35
+ @compare = proc { @trace.new_allocations.size == @expected }
36
36
  @message = ""
37
37
  self
38
38
  end
39
39
 
40
40
  def less_than(expected)
41
41
  @expected = expected
42
- @compare = Proc.new { @trace.new_allocations.size < @expected }
42
+ @compare = proc { @trace.new_allocations.size < @expected }
43
43
  @message = "less than "
44
44
  self
45
45
  end
46
46
 
47
47
  def more_than(expected)
48
48
  @expected = expected
49
- @compare = Proc.new { @trace.new_allocations.size > @expected }
49
+ @compare = proc { @trace.new_allocations.size > @expected }
50
50
  @message = "more than "
51
51
  self
52
52
  end
53
53
 
54
54
  def max(expected)
55
55
  @expected = expected
56
- @compare = Proc.new { @trace.new_allocations.size <= @expected }
56
+ @compare = proc { @trace.new_allocations.size <= @expected }
57
57
  @message = "max "
58
58
  self
59
59
  end
60
60
 
61
61
  def min(expected)
62
62
  @expected = expected
63
- @compare = Proc.new { @trace.new_allocations.size >= @expected }
63
+ @compare = proc { @trace.new_allocations.size >= @expected }
64
64
  @message = "min "
65
65
  self
66
66
  end
@@ -75,14 +75,14 @@ module ErgomentumRspec
75
75
 
76
76
  def failure_message
77
77
  "expected #{@message}#{@expected} objects to be allocated; "\
78
- "got #{@trace.new_allocations.size}:\n\n"\
79
- "#{@trace.allocations(alias_paths: true).group_by(:sourcefile, :sourceline, :class).to_text}"
78
+ "got #{@trace.new_allocations.size}:\n\n"\
79
+ "#{@trace.allocations(alias_paths: true).group_by(:sourcefile, :sourceline, :class).to_text}"
80
80
  end
81
81
 
82
82
  def failure_message_when_negated
83
83
  "expected not #{@message}#{@expected} objects to be allocated; "\
84
- "got #{@trace.new_allocations.size}:\n\n"\
85
- "#{@trace.allocations(alias_paths: true).group_by(:sourcefile, :sourceline, :class).to_text}"
84
+ "got #{@trace.new_allocations.size}:\n\n"\
85
+ "#{@trace.allocations(alias_paths: true).group_by(:sourcefile, :sourceline, :class).to_text}"
86
86
  end
87
87
 
88
88
  def description
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ErgomentumRspec
4
- VERSION = "1.3.0"
4
+ VERSION = "2.0.0"
5
5
  end
@@ -6,6 +6,7 @@ require "active_support/inflector"
6
6
  require "rspec"
7
7
  require "active_model"
8
8
  require_relative "ergomentum_rspec/version"
9
+ require_relative "ergomentum_rspec/helpers/env_var_mock_service"
9
10
  require_relative "ergomentum_rspec/helpers/environment"
10
11
  require_relative "ergomentum_rspec/helpers/fixture"
11
12
  require_relative "ergomentum_rspec/matchers/active_model"
metadata CHANGED
@@ -1,183 +1,155 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ergomentum_rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ergomentum
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-10 00:00:00.000000000 Z
11
+ date: 2022-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: byebug
14
+ name: activemodel
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 11.1.3
20
- type: :development
19
+ version: '6.0'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 11.1.3
26
+ version: '6.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 13.0.1
34
- type: :development
33
+ version: '6.0'
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: 13.0.1
40
+ version: '6.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec_junit_formatter
42
+ name: allocation_stats
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.4.1
48
- type: :development
47
+ version: 0.1.5
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.4.1
54
+ version: 0.1.5
55
55
  - !ruby/object:Gem::Dependency
56
- name: rubocop
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.8'
62
- type: :development
61
+ version: '3.9'
62
+ type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.8'
68
+ version: '3.9'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rubocop-performance
70
+ name: byebug
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.9'
75
+ version: 11.1.3
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.9'
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop-rake
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
82
+ version: 11.1.3
97
83
  - !ruby/object:Gem::Dependency
98
- name: simplecov
84
+ name: ergomentum_rubocop
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: 0.21.2
89
+ version: 0.7.0
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: 0.21.2
96
+ version: 0.7.0
111
97
  - !ruby/object:Gem::Dependency
112
- name: test-prof
98
+ name: rake
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
101
  - - "~>"
116
102
  - !ruby/object:Gem::Version
117
- version: 1.0.2
103
+ version: 13.0.1
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
108
  - - "~>"
123
109
  - !ruby/object:Gem::Version
124
- version: 1.0.2
125
- - !ruby/object:Gem::Dependency
126
- name: activemodel
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '6.0'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '6.0'
110
+ version: 13.0.1
139
111
  - !ruby/object:Gem::Dependency
140
- name: activesupport
112
+ name: rspec_junit_formatter
141
113
  requirement: !ruby/object:Gem::Requirement
142
114
  requirements:
143
115
  - - "~>"
144
116
  - !ruby/object:Gem::Version
145
- version: '6.0'
146
- type: :runtime
117
+ version: 0.5.1
118
+ type: :development
147
119
  prerelease: false
148
120
  version_requirements: !ruby/object:Gem::Requirement
149
121
  requirements:
150
122
  - - "~>"
151
123
  - !ruby/object:Gem::Version
152
- version: '6.0'
124
+ version: 0.5.1
153
125
  - !ruby/object:Gem::Dependency
154
- name: allocation_stats
126
+ name: simplecov
155
127
  requirement: !ruby/object:Gem::Requirement
156
128
  requirements:
157
129
  - - "~>"
158
130
  - !ruby/object:Gem::Version
159
- version: 0.1.5
160
- type: :runtime
131
+ version: 0.21.2
132
+ type: :development
161
133
  prerelease: false
162
134
  version_requirements: !ruby/object:Gem::Requirement
163
135
  requirements:
164
136
  - - "~>"
165
137
  - !ruby/object:Gem::Version
166
- version: 0.1.5
138
+ version: 0.21.2
167
139
  - !ruby/object:Gem::Dependency
168
- name: rspec
140
+ name: test-prof
169
141
  requirement: !ruby/object:Gem::Requirement
170
142
  requirements:
171
143
  - - "~>"
172
144
  - !ruby/object:Gem::Version
173
- version: '3.9'
174
- type: :runtime
145
+ version: 1.0.2
146
+ type: :development
175
147
  prerelease: false
176
148
  version_requirements: !ruby/object:Gem::Requirement
177
149
  requirements:
178
150
  - - "~>"
179
151
  - !ruby/object:Gem::Version
180
- version: '3.9'
152
+ version: 1.0.2
181
153
  description: Regular used rspec matchers not found somewhere else.
182
154
  email:
183
155
  - info@ergomentum.de
@@ -191,6 +163,7 @@ files:
191
163
  - bin/setup
192
164
  - ergomentum_rspec.gemspec
193
165
  - lib/ergomentum_rspec.rb
166
+ - lib/ergomentum_rspec/helpers/env_var_mock_service.rb
194
167
  - lib/ergomentum_rspec/helpers/environment.rb
195
168
  - lib/ergomentum_rspec/helpers/fixture.rb
196
169
  - lib/ergomentum_rspec/matchers/active_model.rb
@@ -210,7 +183,10 @@ files:
210
183
  homepage: https://www.ergomentum.de/
211
184
  licenses:
212
185
  - Nonstandard
213
- metadata: {}
186
+ metadata:
187
+ homepage_uri: https://www.ergomentum.de/
188
+ source_code_uri: https://github.com/ergomentum/ergomentum_rspec/
189
+ changelog_uri: https://github.com/ergomentum/ergomentum_rspec/blob/main/CHANGELOG.md
214
190
  post_install_message:
215
191
  rdoc_options: []
216
192
  require_paths: