Files
nairobi/spec/factories/budgets.rb

221 lines
5.4 KiB
Ruby

FactoryBot.define do
factory :spending_proposal do
sequence(:title) { |n| "Spending Proposal #{n} title" }
description 'Spend money on this'
feasible_explanation 'This proposal is not viable because...'
external_url 'http://external_documention.org'
terms_of_service '1'
association :author, factory: :user
end
factory :budget do
sequence(:name) { |n| "#{Faker::Lorem.word} #{n}" }
currency_symbol ""
phase 'accepting'
description_drafting "This budget is drafting"
description_informing "This budget is informing"
description_accepting "This budget is accepting"
description_reviewing "This budget is reviewing"
description_selecting "This budget is selecting"
description_valuating "This budget is valuating"
description_publishing_prices "This budget is publishing prices"
description_balloting "This budget is balloting"
description_reviewing_ballots "This budget is reviewing ballots"
description_finished "This budget is finished"
trait :drafting do
phase 'drafting'
end
trait :informing do
phase 'informing'
end
trait :accepting do
phase 'accepting'
end
trait :reviewing do
phase 'reviewing'
end
trait :selecting do
phase 'selecting'
end
trait :valuating do
phase 'valuating'
end
trait :publishing_prices do
phase 'publishing_prices'
end
trait :balloting do
phase 'balloting'
end
trait :reviewing_ballots do
phase 'reviewing_ballots'
end
trait :finished do
phase 'finished'
end
end
factory :budget_group, class: 'Budget::Group' do
budget
sequence(:name) { |n| "Group #{n}" }
trait :drafting_budget do
association :budget, factory: [:budget, :drafting]
end
end
factory :budget_heading, class: 'Budget::Heading' do
association :group, factory: :budget_group
sequence(:name) { |n| "Heading #{n}" }
price 1000000
population 1234
latitude '40.416775'
longitude '-3.703790'
trait :drafting_budget do
association :group, factory: [:budget_group, :drafting_budget]
end
end
factory :budget_investment, class: 'Budget::Investment' do
sequence(:title) { |n| "Budget Investment #{n} title" }
association :heading, factory: :budget_heading
association :author, factory: :user
description 'Spend money on this'
price 10
unfeasibility_explanation ''
skip_map '1'
terms_of_service '1'
incompatible false
trait :with_confidence_score do
before(:save) { |i| i.calculate_confidence_score }
end
trait :feasible do
feasibility "feasible"
end
trait :unfeasible do
feasibility "unfeasible"
unfeasibility_explanation "set to unfeasible on creation"
end
trait :undecided do
feasibility "undecided"
end
trait :finished do
valuation_finished true
end
trait :selected do
selected true
feasibility "feasible"
valuation_finished true
end
trait :winner do
selected
winner true
end
trait :visible_to_valuators do
visible_to_valuators true
end
trait :incompatible do
selected
incompatible true
end
trait :selected_with_price do
selected
price 1000
price_explanation 'Because of reasons'
end
trait :unselected do
selected false
feasibility "feasible"
valuation_finished true
end
trait :hidden do
hidden_at { Time.current }
end
trait :with_ignored_flag do
ignored_flag_at { Time.current }
end
trait :flagged do
after :create do |investment|
Flag.flag(create(:user), investment)
end
end
trait :with_confirmed_hide do
confirmed_hide_at { Time.current }
end
end
factory :budget_phase, class: 'Budget::Phase' do
budget
kind :balloting
summary Faker::Lorem.sentence(3)
description Faker::Lorem.sentence(10)
starts_at { Date.yesterday }
ends_at { Date.tomorrow }
enabled true
end
factory :budget_ballot, class: 'Budget::Ballot' do
association :user, factory: :user
budget
end
factory :budget_ballot_line, class: 'Budget::Ballot::Line' do
association :ballot, factory: :budget_ballot
association :investment, factory: :budget_investment
end
factory :budget_reclassified_vote, class: 'Budget::ReclassifiedVote' do
user
association :investment, factory: :budget_investment
reason "unfeasible"
end
factory :milestone_status, class: 'Milestone::Status' do
sequence(:name) { |n| "Milestone status #{n} name" }
sequence(:description) { |n| "Milestone status #{n} description" }
end
factory :milestone, class: 'Milestone' do
association :milestoneable, factory: :budget_investment
association :status, factory: :milestone_status
sequence(:title) { |n| "Budget investment milestone #{n} title" }
description 'Milestone description'
publication_date { Date.current }
end
factory :valuator_group, class: ValuatorGroup do
sequence(:name) { |n| "Valuator Group #{n}" }
end
factory :heading_content_block, class: 'Budget::ContentBlock' do
association :heading, factory: :budget_heading
locale 'en'
body 'Some heading contents'
end
end