ergomentum_rspec 1.3.0 → 2.0.0

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