ergomentum_rspec 1.4.0 → 1.5.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: b0aceca6381f8105b364a83caee6d5cf65c3c2ad4d4fe0d5a022d942e96f690a
4
- data.tar.gz: 95cfae63321d57406a4dcacf3c895e746fb6d5597c143842ddc0bb4fb77357c1
3
+ metadata.gz: b0bb20611970c5edfa286c854f9abc811c88acdf8982c6b3b0020b48a1ff16c9
4
+ data.tar.gz: b5f89a1cd7017be8340a11556403d1d6859a246d1b063ea708d9e8ca7cf0add1
5
5
  SHA512:
6
- metadata.gz: f5c98092e6abc94bb2ce6e52df62ee9c80a0bb0036ada8ca01bbfa2647867e76541c39a6440acd29f4a9af3006653abd1b2497ad4c70d28834765cc0e7c88242
7
- data.tar.gz: 04dfd4292cc2e37f81ad2846c47cf211a10f78fc5896691659f1c6cf26a54b1946285f4be2fc7845f96ba68672f66257d8e69693fa9712ddd987689b963ee6bf
6
+ metadata.gz: 7488cf0d7d116d123c21c9984590695bab68add340c1e0af46cb68eca3d1f69c49cd80eb726ffb56d58c961107b917f1bec721b1ccd2ba0208a9ccfcc933baa2
7
+ data.tar.gz: 7aca9a72e930884497367930933091ff48c643945e70f9166c567026a6f4bf8b6d6da55d42b1b258d8b4ed78d93742b9f967bd731d039b2739a95d63af174345
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ErgomentumRspec
4
- VERSION = "1.4.0"
4
+ VERSION = "1.5.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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ergomentum_rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ergomentum
@@ -163,6 +163,7 @@ files:
163
163
  - bin/setup
164
164
  - ergomentum_rspec.gemspec
165
165
  - lib/ergomentum_rspec.rb
166
+ - lib/ergomentum_rspec/helpers/env_var_mock_service.rb
166
167
  - lib/ergomentum_rspec/helpers/environment.rb
167
168
  - lib/ergomentum_rspec/helpers/fixture.rb
168
169
  - lib/ergomentum_rspec/matchers/active_model.rb