require "spec_helper"

RSpec.describe ActiveRemote::ScopeKeys do
  let(:key) { :user_guid }
  let(:_scope_keys) { ["user_guid"] }
  let(:scope_keys) { ["guid"] + _scope_keys }
  let(:tag) { Tag.new(tag_hash) }
  let(:tag_hash) { {guid: "TAG-123", user_guid: "USR-123", name: "teh tag"} }

  describe ".scope_key" do
    after { Tag._scope_keys = [] }

    it "adds scope_key to _scope_keys" do
      Tag.scope_key(key)
      expect(Tag._scope_keys).to eq(_scope_keys)
    end
  end

  describe ".scope_keys" do
    before { allow(Tag).to receive(:_scope_keys).and_return(_scope_keys) }

    it "combines primary key with _scope_keys" do
      expect(Tag.scope_keys).to eq(["guid"] + _scope_keys)
    end
  end

  describe "#scope_keys" do
    it "returns the scope keys for the class" do
      expect(Tag.new.scope_keys).to eq Tag.scope_keys
    end
  end

  describe "#scope_key_hash" do
    let(:scope_key_hash) { {"guid" => "TAG-123", "user_guid" => "USR-123"} }

    before { allow(tag).to receive(:scope_keys).and_return(scope_keys) }

    it "returns a attribute hash of scope_keys" do
      expect(tag.scope_key_hash).to eq(scope_key_hash)
    end
  end
end
