47 lines
1.8 KiB
Ruby
47 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "spec_helper"
|
|
|
|
describe Prompt do
|
|
describe "#restricted_tags" do
|
|
let(:fandom) { create(:fandom, canonical: true) }
|
|
let(:non_fandom_character) { create(:character, canonical: true) }
|
|
let(:collection) { create(:collection, challenge: challenge) }
|
|
let(:owned_tag_set) { create(:owned_tag_set, tags: [fandom, non_fandom_character]) }
|
|
|
|
before do
|
|
create(:tag_set_association, tag: non_fandom_character, parent_tag: fandom, owned_tag_set: owned_tag_set)
|
|
end
|
|
|
|
context "when the prompt uses a non-fandom tag that is in the challenge TagSet" do
|
|
let!(:challenge) do
|
|
create(:gift_exchange,
|
|
offer_restriction: create(:prompt_restriction,
|
|
character_restrict_to_fandom: true, owned_tag_sets: [owned_tag_set]))
|
|
end
|
|
|
|
it "marks the prompt as valid" do
|
|
prompt = build(:offer,
|
|
tag_set: create(:tag_set, tags: [fandom, non_fandom_character]),
|
|
collection_id: collection.id,
|
|
challenge_signup: create(:challenge_signup))
|
|
expect(prompt).to be_valid
|
|
end
|
|
end
|
|
|
|
context "when the prompt uses a non-fandom tag that is not in the challenge TagSet" do
|
|
let!(:challenge) do
|
|
create(:gift_exchange,
|
|
offer_restriction: create(:prompt_restriction, character_restrict_to_fandom: true))
|
|
end
|
|
|
|
it "marks the prompt as invalid" do
|
|
prompt = build(:offer,
|
|
tag_set: create(:tag_set, tags: [fandom, non_fandom_character]),
|
|
collection_id: collection.id)
|
|
expect(prompt).not_to be_valid
|
|
expect(prompt.errors[:base][0]).to include("not in the selected fandom")
|
|
end
|
|
end
|
|
end
|
|
end
|