ergomentum_rspec 1.4.0 → 1.5.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: 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