require 'faker' FactoryBot.define do factory :challenge_assignment do collection { create(:collection, challenge: create(:gift_exchange)) } after(:build) do |assignment| assignment.request_signup = create(:challenge_signup, collection: assignment.collection) assignment.offer_signup = create(:challenge_signup, collection: assignment.collection) end end factory :challenge_signup, aliases: [:gift_exchange_signup] do pseud { create(:user).default_pseud } collection { create(:collection, challenge: create(:gift_exchange)) } requests_attributes { [attributes_for(:request)] } offers_attributes { [attributes_for(:offer)] } end factory :prompt_meme_signup, class: "ChallengeSignup" do pseud { create(:user).default_pseud } collection { create(:collection, challenge: create(:prompt_meme)) } requests_attributes { [attributes_for(:request)] } end factory :potential_match do collection { create(:collection, challenge: create(:gift_exchange)) } after(:build) do |potential_match| potential_match.offer_signup = create(:challenge_signup, collection: potential_match.collection) potential_match.request_signup = create(:challenge_signup, collection: potential_match.collection) end end factory :gift_exchange do association :offer_restriction, factory: :prompt_restriction association :request_restriction, factory: :prompt_restriction trait :open do signups_open_at { Time.now - 1.day } signups_close_at { Time.now + 1.day } signup_open { true } end trait :closed do signups_open_at { Time.now - 2.days } signups_close_at { Time.now - 1.day } signup_open { false } end end factory :prompt_meme do association :request_restriction, factory: :prompt_restriction end end