# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1

require File.expand_path("../../../base", __FILE__)

require "vagrant/util/scoped_hash_override"

describe Vagrant::Util::ScopedHashOverride do
  let(:klass) do
    Class.new do
      extend Vagrant::Util::ScopedHashOverride
    end
  end

  it "should not mess with non-overrides" do
    original = {
      key: "value",
      another_value: "foo"
    }

    expect(klass.scoped_hash_override(original, "foo")).to eq(original)
  end

  it "should override if the scope matches" do
    original = {
      key: "value",
      scope__key: "replaced"
    }

    expected = {
      key: "replaced",
      scope__key: "replaced"
    }

    expect(klass.scoped_hash_override(original, "scope")).to eq(expected)
  end

  it "should ignore non-matching scopes" do
    original = {
      key: "value",
      scope__key: "replaced",
      another__key: "value"
    }

    expected = {
      key: "replaced",
      scope__key: "replaced",
      another__key: "value"
    }

    expect(klass.scoped_hash_override(original, "scope")).to eq(expected)
  end
end
