otwarchive-symphonyarchive/factories/works.rb

68 lines
1.5 KiB
Ruby
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
require 'faker'
FactoryBot.define do
factory :work do
title { "My title is long enough" }
fandom_string { "Testing" }
rating_string { ArchiveConfig.RATING_DEFAULT_TAG_NAME }
archive_warning_string { ArchiveConfig.WARNING_NONE_TAG_NAME }
language_id { Language.default.id }
chapter_info = { content: "This is some chapter content for my work." }
chapter_attributes { chapter_info }
posted { true }
transient do
authors { [build(:pseud)] }
end
after(:build) do |work, evaluator|
evaluator.authors.each do |pseud|
work.creatorships.build(pseud: pseud)
end
end
factory :no_authors do
authors { [] }
end
factory :custom_work_skin do
work_skin_id { 1 }
end
factory :draft do
posted { false }
end
trait :guest_comments_on do
comment_permissions { :enable_all }
end
end
factory :external_work do
title { "An External Work" }
author { "An Author" }
url { "http://www.example.org" }
after(:build) do |work|
work.fandoms = [FactoryBot.build(:fandom)] if work.fandoms.blank?
end
end
factory :moderated_work do
work_id { create(:work).id }
end
factory :external_author do |f|
f.sequence(:email) { |n| "foo#{n}@external.com" }
end
factory :external_author_name do |f|
f.association :external_author
end
factory :external_creatorship do |f|
f.creation_type { 'Work' }
f.association :external_author_name
end
end