Files
nairobi/spec/factories/proposals.rb
Senén Rodero Rodríguez 02be0c61f9 Add proposal translations
Adapt retire form to include needed translations and move validations
from controller to model.

Also change sanitizable concern to sanitize not marked for destruction
translations.
2019-06-27 09:19:36 +02:00

187 lines
4.0 KiB
Ruby

FactoryBot.define do
factory :proposal do
sequence(:title) { |n| "Proposal #{n} title" }
sequence(:summary) { |n| "In summary, what we want is... #{n}" }
description "Proposal description"
video_url "https://youtu.be/nhuNb0XtRhQ"
responsible_name "John Snow"
terms_of_service "1"
skip_map "1"
published_at { Time.current }
association :author, factory: :user
trait :hidden do
hidden_at { Time.current }
end
trait :with_ignored_flag do
ignored_flag_at { Time.current }
end
trait :with_confirmed_hide do
confirmed_hide_at { Time.current }
end
trait :flagged do
after :create do |proposal|
Flag.flag(create(:user), proposal)
end
end
trait :archived do
created_at { 25.months.ago }
end
trait :selected do
selected true
end
trait :with_hot_score do
before(:save) { |d| d.calculate_hot_score }
end
trait :with_confidence_score do
before(:save) { |d| d.calculate_confidence_score }
end
trait :conflictive do
after :create do |debate|
Flag.flag(create(:user), debate)
4.times { create(:vote, votable: debate) }
end
end
trait :successful do
cached_votes_up { Proposal.votes_needed_for_success + 100 }
end
trait :draft do
published_at nil
end
trait :retired do
retired_at { Time.current }
retired_reason "unfeasible"
retired_explanation "Retired explanation"
end
trait :published do
published_at { Time.current }
end
trait :with_milestone_tags do
after(:create) { |proposal| proposal.milestone_tags << create(:tag, :milestone) }
end
end
factory :proposal_notification do
sequence(:title) { |n| "Thank you for supporting my proposal #{n}" }
sequence(:body) { |n| "Please let others know so we can make it happen #{n}" }
proposal
association :author, factory: :user
trait :moderated do
moderated true
end
trait :ignored do
ignored_at { Date.current }
end
trait :hidden do
hidden_at { Date.current }
end
trait :with_confirmed_hide do
confirmed_hide_at { Time.current }
end
end
factory :signature_sheet do
association :signable, factory: :proposal
association :author, factory: :user
document_numbers "123A, 456B, 789C"
end
factory :signature do
signature_sheet
sequence(:document_number) { |n| "#{n}A" }
end
factory :activity do
user
action "hide"
association :actionable, factory: :proposal
end
factory :dashboard_action, class: "Dashboard::Action" do
title { Faker::Lorem.sentence[0..79] }
description { Faker::Lorem.sentence }
link nil
request_to_administrators true
day_offset 0
required_supports 0
order 0
active true
hidden_at nil
action_type "proposed_action"
trait :admin_request do
request_to_administrators true
end
trait :external_link do
link { Faker::Internet.url }
end
trait :inactive do
active false
end
trait :active do
active true
end
trait :deleted do
hidden_at { Time.current }
end
trait :proposed_action do
action_type "proposed_action"
end
trait :resource do
action_type "resource"
end
end
factory :dashboard_executed_action, class: "Dashboard::ExecutedAction" do
proposal
action { |s| s.association(:dashboard_action) }
executed_at { Time.current }
end
factory :dashboard_administrator_task, class: "Dashboard::AdministratorTask" do
source { |s| s.association(:dashboard_executed_action) }
user
executed_at { Time.current }
trait :pending do
user { nil }
executed_at { nil }
end
trait :done do
user
executed_at { Time.current }
end
end
factory :link do
linkable { |s| s.association(:action) }
label { Faker::Lorem.sentence }
url { Faker::Internet.url }
end
end