Sha256: 3a587d2e4e74abfcfd5d138101c6e9aad9464c1bfc0973ac54e5bedab93e4b21

Contents?: true

Size: 1.12 KB

Versions: 36

Compression:

Stored size: 1.12 KB

Contents

module RubyPitaya

  class SetupSpecHelper

    def initialize(default_setup = {})
      @empty_hash = {}
      @setup_mock = {}
      @default_setup = default_setup
    end

    def [](key)
      split_key = key.split('.')
      result = @setup_mock.dig(*split_key)
      return result unless result.nil?

      @default_setup.dig(*split_key)
    end

    def auto_reload
    end

    def setup_mock=(value)
      @setup_mock = value
    end

    def add(key, value)
      keys = key.split('.')
      add_hash = undig(*keys, value)
      @setup_mock = merge_recursively(@setup_mock, add_hash)
    end

    def fetch(*args)
      result = self[args[0]]
      return result unless result.nil?

      @empty_hash.fetch(*args)
    end

    def clear
      @setup_mock = {}
    end

    private

    def undig(*keys, value)
      keys.empty? ? value : { keys.first=>undig(*keys.drop(1), value) }
    end

    def merge_recursively(a, b)
      a.merge(b) do |key, a_item, b_item|
        if a_item.is_a?(Hash) && b_item.is_a?(Hash)
          merge_recursively(a_item, b_item)
        else
          a[key] = b_item
        end
      end
    end
  end
end

Version data entries

36 entries across 32 versions & 1 rubygems

Version Path
rubypitaya-3.19.6 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.19.5 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.19.4 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.19.3 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.19.2 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.19.1 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.19.0 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.18.0 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.17.2 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.17.1 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.17.0 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.16.0 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.15.3 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.15.2 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.15.1 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.15.0 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.14.0 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.13.1 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.13.0 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb
rubypitaya-3.12.5 ./lib/rubypitaya/core/spec-helpers/setup_spec_helper.rb