143 lines
3.5 KiB
Ruby
143 lines
3.5 KiB
Ruby
FactoryBot.define do
|
|
factory :poll do
|
|
sequence(:name) { |n| "Poll #{SecureRandom.hex}" }
|
|
|
|
starts_at { 1.month.ago }
|
|
ends_at { 1.month.from_now }
|
|
|
|
trait :current do
|
|
starts_at { 2.days.ago }
|
|
ends_at { 2.days.from_now }
|
|
end
|
|
|
|
trait :incoming do
|
|
starts_at { 2.days.from_now }
|
|
ends_at { 1.month.from_now }
|
|
end
|
|
|
|
trait :expired do
|
|
starts_at { 1.month.ago }
|
|
ends_at { 15.days.ago }
|
|
end
|
|
|
|
trait :recounting do
|
|
starts_at { 1.month.ago }
|
|
ends_at { Date.current }
|
|
end
|
|
|
|
trait :published do
|
|
published true
|
|
end
|
|
end
|
|
|
|
factory :poll_question, class: 'Poll::Question' do
|
|
poll
|
|
association :author, factory: :user
|
|
sequence(:title) { |n| "Question title #{n}" }
|
|
|
|
trait :with_answers do
|
|
after(:create) do |question, _evaluator|
|
|
create(:poll_question_answer, question: question, title: "Yes")
|
|
create(:poll_question_answer, question: question, title: "No")
|
|
end
|
|
end
|
|
end
|
|
|
|
factory :poll_question_answer, class: 'Poll::Question::Answer' do
|
|
association :question, factory: :poll_question
|
|
sequence(:title) { |n| "Answer title #{n}" }
|
|
sequence(:description) { |n| "Answer description #{n}" }
|
|
end
|
|
|
|
factory :poll_answer_video, class: 'Poll::Question::Answer::Video' do
|
|
association :answer, factory: :poll_question_answer
|
|
title "Sample video title"
|
|
url "https://youtu.be/nhuNb0XtRhQ"
|
|
end
|
|
|
|
factory :poll_booth, class: 'Poll::Booth' do
|
|
sequence(:name) { |n| "Booth #{n}" }
|
|
sequence(:location) { |n| "Street #{n}" }
|
|
end
|
|
|
|
factory :poll_booth_assignment, class: 'Poll::BoothAssignment' do
|
|
poll
|
|
association :booth, factory: :poll_booth
|
|
end
|
|
|
|
factory :poll_officer_assignment, class: 'Poll::OfficerAssignment' do
|
|
association :officer, factory: :poll_officer
|
|
association :booth_assignment, factory: :poll_booth_assignment
|
|
date { Date.current }
|
|
|
|
trait :final do
|
|
final true
|
|
end
|
|
end
|
|
|
|
factory :poll_shift, class: 'Poll::Shift' do
|
|
association :booth, factory: :poll_booth
|
|
association :officer, factory: :poll_officer
|
|
date { Date.current }
|
|
|
|
trait :vote_collection_task do
|
|
task 0
|
|
end
|
|
|
|
trait :recount_scrutiny_task do
|
|
task 1
|
|
end
|
|
end
|
|
|
|
factory :poll_voter, class: 'Poll::Voter' do
|
|
poll
|
|
association :user, :level_two
|
|
association :officer, factory: :poll_officer
|
|
origin "web"
|
|
|
|
trait :from_booth do
|
|
association :booth_assignment, factory: :poll_booth_assignment
|
|
end
|
|
|
|
trait :valid_document do
|
|
document_type "1"
|
|
document_number "12345678Z"
|
|
end
|
|
|
|
trait :invalid_document do
|
|
document_type "1"
|
|
document_number "99999999A"
|
|
end
|
|
end
|
|
|
|
factory :poll_answer, class: 'Poll::Answer' do
|
|
association :question, factory: [:poll_question, :with_answers]
|
|
association :author, factory: [:user, :level_two]
|
|
answer { question.question_answers.sample.title }
|
|
end
|
|
|
|
factory :poll_partial_result, class: 'Poll::PartialResult' do
|
|
association :question, factory: [:poll_question, :with_answers]
|
|
association :author, factory: :user
|
|
origin 'web'
|
|
answer { question.question_answers.sample.title }
|
|
end
|
|
|
|
factory :poll_recount, class: 'Poll::Recount' do
|
|
association :author, factory: :user
|
|
origin 'web'
|
|
end
|
|
|
|
factory :officing_residence, class: 'Officing::Residence' do
|
|
user
|
|
association :officer, factory: :poll_officer
|
|
document_number
|
|
document_type "1"
|
|
year_of_birth "1980"
|
|
|
|
trait :invalid do
|
|
year_of_birth { Time.current.year }
|
|
end
|
|
end
|
|
end
|