otwarchive-symphonyarchive/spec/models/prompt_spec.rb
2026-03-11 22:22:11 +00:00

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