require 'dply/env' module Dply describe Env do ORIGINAL_ENV = { "O1" => "1", "O2" => "2" } CURRENT_ENV = { "C1" => "1", "C2" => "2" } EXTRA_ENV = { "O1" => "E", "C1" => "E" } def stub_env(with_bundler:) allow(ENV).to receive(:to_h).and_return(CURRENT_ENV) if with_bundler stub_const("Bundler", "bundler") allow(Bundler).to receive(:original_env).and_return(ORIGINAL_ENV) else hide_const("Bundler") end end describe '.build_env (extra_env, bundled_env:)' do context "when bundler is defined and bundled_env: true" do it "merges current_env with extra_env" do stub_env with_bundler: true env = Env.build_env(EXTRA_ENV, bundled_env: true) expect(env).to eq(CURRENT_ENV.merge(EXTRA_ENV)) end end context "when bundler is defined and bundled_env: false" do it "merges original_env with extra_env" do stub_env with_bundler: true env = Env.build_env(EXTRA_ENV, bundled_env: false) expect(env).to eq(ORIGINAL_ENV.merge(EXTRA_ENV)) end end context "when bundler is not defined and bundled_env: true" do it "merges current_env with extra_env" do stub_env with_bundler: false env = Env.build_env(EXTRA_ENV, bundled_env: true) expect(env).to eq(CURRENT_ENV.merge(EXTRA_ENV)) end end context "when bundler is defined and bundled_env: false" do it "merges current_env with extra_env" do stub_env with_bundler: false env = Env.build_env(EXTRA_ENV, bundled_env: true) expect(env).to eq(CURRENT_ENV.merge(EXTRA_ENV)) end end end end end