Split factories
This commit is contained in:
1065
spec/factories.rb
1065
spec/factories.rb
File diff suppressed because it is too large
Load Diff
101
spec/factories/administration.rb
Normal file
101
spec/factories/administration.rb
Normal file
@@ -0,0 +1,101 @@
|
||||
FactoryBot.define do
|
||||
factory :setting do
|
||||
sequence(:key) { |n| "Setting Key #{n}" }
|
||||
sequence(:value) { |n| "Setting #{n} Value" }
|
||||
end
|
||||
|
||||
factory :geozone do
|
||||
sequence(:name) { |n| "District #{n}" }
|
||||
sequence(:external_code) { |n| n.to_s }
|
||||
sequence(:census_code) { |n| n.to_s }
|
||||
|
||||
trait :in_census do
|
||||
census_code "01"
|
||||
end
|
||||
end
|
||||
|
||||
factory :banner do
|
||||
sequence(:title) { |n| "Banner title #{n}" }
|
||||
sequence(:description) { |n| "This is the text of Banner #{n}" }
|
||||
target_url {["/proposals", "/debates" ].sample}
|
||||
post_started_at { Time.current - 7.days }
|
||||
post_ended_at { Time.current + 7.days }
|
||||
background_color '#FF0000'
|
||||
font_color '#FFFFFF'
|
||||
end
|
||||
|
||||
factory :web_section do
|
||||
name 'homepage'
|
||||
end
|
||||
|
||||
factory :banner_section, class: 'Banner::Section' do
|
||||
association :banner_id, factory: :banner
|
||||
association :web_section, factory: :web_section
|
||||
end
|
||||
|
||||
factory :site_customization_page, class: 'SiteCustomization::Page' do
|
||||
slug "example-page"
|
||||
title "Example page"
|
||||
subtitle "About an example"
|
||||
content "This page is about..."
|
||||
more_info_flag false
|
||||
print_content_flag false
|
||||
status 'draft'
|
||||
locale 'en'
|
||||
|
||||
trait :published do
|
||||
status "published"
|
||||
end
|
||||
|
||||
trait :display_in_more_info do
|
||||
more_info_flag true
|
||||
end
|
||||
end
|
||||
|
||||
factory :site_customization_content_block, class: 'SiteCustomization::ContentBlock' do
|
||||
name "top_links"
|
||||
locale "en"
|
||||
body "Some top links content"
|
||||
end
|
||||
|
||||
factory :map_location do
|
||||
latitude 51.48
|
||||
longitude 0.0
|
||||
zoom 10
|
||||
|
||||
trait :proposal_map_location do
|
||||
proposal
|
||||
end
|
||||
|
||||
trait :budget_investment_map_location do
|
||||
association :investment, factory: :budget_investment
|
||||
end
|
||||
end
|
||||
|
||||
factory :widget_card, class: 'Widget::Card' do
|
||||
sequence(:title) { |n| "Title #{n}" }
|
||||
sequence(:description) { |n| "Description #{n}" }
|
||||
sequence(:link_text) { |n| "Link text #{n}" }
|
||||
sequence(:link_url) { |n| "Link url #{n}" }
|
||||
|
||||
trait :header do
|
||||
header true
|
||||
sequence(:button_text) { |n| "Button text #{n}" }
|
||||
sequence(:button_url) { |n| "Button url #{n}" }
|
||||
sequence(:alignment) { |n| "background" }
|
||||
end
|
||||
|
||||
after :create do |widget_card|
|
||||
create(:image, imageable: widget_card)
|
||||
end
|
||||
end
|
||||
|
||||
factory :widget_feed, class: 'Widget::Feed' do
|
||||
end
|
||||
|
||||
factory :i18n_content, class: 'I18nContent' do
|
||||
key 'debates.index.section_footer.description'
|
||||
value_es 'Texto en español'
|
||||
value_en 'Text in english'
|
||||
end
|
||||
end
|
||||
17
spec/factories/analytics.rb
Normal file
17
spec/factories/analytics.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
FactoryBot.define do
|
||||
factory :ahoy_event, class: Ahoy::Event do
|
||||
id { SecureRandom.uuid }
|
||||
time { DateTime.current }
|
||||
sequence(:name) {|n| "Event #{n} type"}
|
||||
end
|
||||
|
||||
factory :visit do
|
||||
id { SecureRandom.uuid }
|
||||
started_at { DateTime.current }
|
||||
end
|
||||
|
||||
factory :campaign do
|
||||
sequence(:name) { |n| "Campaign #{n}" }
|
||||
sequence(:track_id) { |n| n.to_s }
|
||||
end
|
||||
end
|
||||
212
spec/factories/budgets.rb
Normal file
212
spec/factories/budgets.rb
Normal file
@@ -0,0 +1,212 @@
|
||||
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
|
||||
|
||||
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 :budget_investment_status, class: 'Budget::Investment::Status' do
|
||||
sequence(:name) { |n| "Budget investment status #{n} name" }
|
||||
sequence(:description) { |n| "Budget investment status #{n} description" }
|
||||
end
|
||||
|
||||
factory :budget_investment_milestone, class: 'Budget::Investment::Milestone' do
|
||||
association :investment, factory: :budget_investment
|
||||
association :status, factory: :budget_investment_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
|
||||
end
|
||||
18
spec/factories/classifications.rb
Normal file
18
spec/factories/classifications.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
FactoryBot.define do
|
||||
factory :tag, class: 'ActsAsTaggableOn::Tag' do
|
||||
sequence(:name) { |n| "Tag #{n} name" }
|
||||
|
||||
trait :category do
|
||||
kind "category"
|
||||
end
|
||||
end
|
||||
|
||||
factory :topic do
|
||||
sequence(:title) { |n| "Topic title #{n}" }
|
||||
sequence(:description) { |n| "Description as comment #{n}" }
|
||||
association :author, factory: :user
|
||||
end
|
||||
|
||||
factory :related_content do
|
||||
end
|
||||
end
|
||||
39
spec/factories/comments.rb
Normal file
39
spec/factories/comments.rb
Normal file
@@ -0,0 +1,39 @@
|
||||
FactoryBot.define do
|
||||
factory :comment do
|
||||
association :commentable, factory: :debate
|
||||
user
|
||||
sequence(:body) { |n| "Comment body #{n}" }
|
||||
|
||||
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 |debate|
|
||||
Flag.flag(create(:user), debate)
|
||||
end
|
||||
end
|
||||
|
||||
trait :with_confidence_score do
|
||||
before(:save) { |d| d.calculate_confidence_score }
|
||||
end
|
||||
|
||||
trait :valuation do
|
||||
valuation true
|
||||
association :commentable, factory: :budget_investment
|
||||
before :create do |valuation|
|
||||
valuator = create(:valuator)
|
||||
valuation.author = valuator.user
|
||||
valuation.commentable.valuators << valuator
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
46
spec/factories/debates.rb
Normal file
46
spec/factories/debates.rb
Normal file
@@ -0,0 +1,46 @@
|
||||
FactoryBot.define do
|
||||
factory :debate do
|
||||
sequence(:title) { |n| "Debate #{n} title" }
|
||||
description 'Debate description'
|
||||
terms_of_service '1'
|
||||
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 |debate|
|
||||
Flag.flag(create(:user), debate)
|
||||
end
|
||||
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
|
||||
end
|
||||
|
||||
factory :flag do
|
||||
association :flaggable, factory: :debate
|
||||
association :user, factory: :user
|
||||
end
|
||||
end
|
||||
8
spec/factories/emails.rb
Normal file
8
spec/factories/emails.rb
Normal file
@@ -0,0 +1,8 @@
|
||||
FactoryBot.define do
|
||||
factory :newsletter do
|
||||
sequence(:subject) { |n| "Subject #{n}" }
|
||||
segment_recipient UserSegments::SEGMENTS.sample
|
||||
sequence(:from) { |n| "noreply#{n}@consul.dev" }
|
||||
sequence(:body) { |n| "Body #{n}" }
|
||||
end
|
||||
end
|
||||
54
spec/factories/files.rb
Normal file
54
spec/factories/files.rb
Normal file
@@ -0,0 +1,54 @@
|
||||
FactoryBot.define do
|
||||
factory :image do
|
||||
attachment { File.new("spec/fixtures/files/clippy.jpg") }
|
||||
title "Lorem ipsum dolor sit amet"
|
||||
association :user, factory: :user
|
||||
|
||||
trait :proposal_image do
|
||||
association :imageable, factory: :proposal
|
||||
end
|
||||
|
||||
trait :budget_investment_image do
|
||||
association :imageable, factory: :budget_investment
|
||||
end
|
||||
end
|
||||
|
||||
factory :document do
|
||||
sequence(:title) { |n| "Document title #{n}" }
|
||||
association :user, factory: :user
|
||||
attachment { File.new("spec/fixtures/files/empty.pdf") }
|
||||
|
||||
trait :proposal_document do
|
||||
association :documentable, factory: :proposal
|
||||
end
|
||||
|
||||
trait :budget_investment_document do
|
||||
association :documentable, factory: :budget_investment
|
||||
end
|
||||
|
||||
trait :poll_question_document do
|
||||
association :documentable, factory: :poll_question
|
||||
end
|
||||
end
|
||||
|
||||
factory :direct_upload do
|
||||
user
|
||||
|
||||
trait :proposal do
|
||||
resource_type "Proposal"
|
||||
end
|
||||
trait :budget_investment do
|
||||
resource_type "Budget::Investment"
|
||||
end
|
||||
|
||||
trait :documents do
|
||||
resource_relation "documents"
|
||||
attachment { File.new("spec/fixtures/files/empty.pdf") }
|
||||
end
|
||||
trait :image do
|
||||
resource_relation "image"
|
||||
attachment { File.new("spec/fixtures/files/clippy.jpg") }
|
||||
end
|
||||
initialize_with { new(attributes) }
|
||||
end
|
||||
end
|
||||
146
spec/factories/legislations.rb
Normal file
146
spec/factories/legislations.rb
Normal file
@@ -0,0 +1,146 @@
|
||||
FactoryBot.define do
|
||||
factory :legacy_legislation do
|
||||
sequence(:title) { |n| "Legacy Legislation #{n}" }
|
||||
body "In order to achieve this..."
|
||||
end
|
||||
|
||||
factory :annotation do
|
||||
quote "ipsum"
|
||||
text "Loremp ipsum dolor"
|
||||
ranges [{"start" => "/div[1]", "startOffset" => 5, "end" => "/div[1]", "endOffset" => 10}]
|
||||
legacy_legislation
|
||||
user
|
||||
end
|
||||
|
||||
factory :legislation_process, class: 'Legislation::Process' do
|
||||
title "A collaborative legislation process"
|
||||
description "Description of the process"
|
||||
summary "Summary of the process"
|
||||
start_date { Date.current - 5.days }
|
||||
end_date { Date.current + 5.days }
|
||||
debate_start_date { Date.current - 5.days }
|
||||
debate_end_date { Date.current + 2.days }
|
||||
draft_publication_date { Date.current - 1.day }
|
||||
allegations_start_date { Date.current }
|
||||
allegations_end_date { Date.current + 3.days }
|
||||
result_publication_date { Date.current + 5.days }
|
||||
debate_phase_enabled true
|
||||
allegations_phase_enabled true
|
||||
draft_publication_enabled true
|
||||
result_publication_enabled true
|
||||
published true
|
||||
|
||||
trait :next do
|
||||
start_date { Date.current + 2.days }
|
||||
end_date { Date.current + 8.days }
|
||||
debate_start_date { Date.current + 2.days }
|
||||
debate_end_date { Date.current + 4.days }
|
||||
draft_publication_date { Date.current + 5.days }
|
||||
allegations_start_date { Date.current + 5.days }
|
||||
allegations_end_date { Date.current + 7.days }
|
||||
result_publication_date { Date.current + 8.days }
|
||||
end
|
||||
|
||||
trait :past do
|
||||
start_date { Date.current - 12.days }
|
||||
end_date { Date.current - 2.days }
|
||||
debate_start_date { Date.current - 12.days }
|
||||
debate_end_date { Date.current - 9.days }
|
||||
draft_publication_date { Date.current - 8.days }
|
||||
allegations_start_date { Date.current - 8.days }
|
||||
allegations_end_date { Date.current - 4.days }
|
||||
result_publication_date { Date.current - 2.days }
|
||||
end
|
||||
|
||||
trait :in_debate_phase do
|
||||
start_date { Date.current - 5.days }
|
||||
end_date { Date.current + 5.days }
|
||||
debate_start_date { Date.current - 5.days }
|
||||
debate_end_date { Date.current + 1.day }
|
||||
draft_publication_date { Date.current + 1.day }
|
||||
allegations_start_date { Date.current + 2.days }
|
||||
allegations_end_date { Date.current + 3.days }
|
||||
result_publication_date { Date.current + 5.days }
|
||||
end
|
||||
|
||||
trait :published do
|
||||
published true
|
||||
end
|
||||
|
||||
trait :not_published do
|
||||
published false
|
||||
end
|
||||
|
||||
trait :open do
|
||||
start_date 1.week.ago
|
||||
end_date 1.week.from_now
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
factory :legislation_draft_version, class: 'Legislation::DraftVersion' do
|
||||
process factory: :legislation_process
|
||||
title "Version 1"
|
||||
changelog "What changed in this version"
|
||||
status "draft"
|
||||
final_version false
|
||||
body <<-LOREM_IPSUM
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
|
||||
Expetenda tincidunt in sed, ex partem placerat sea, porro commodo ex eam. His putant aeterno interesset at. Usu ea mundi tincidunt, omnium virtute aliquando ius ex. Ea aperiri sententiae duo. Usu nullam dolorum quaestio ei, sit vidit facilisis ea. Per ne impedit iracundia neglegentur. Consetetur neglegentur eum ut, vis animal legimus inimicus id.
|
||||
|
||||
His audiam deserunt in, eum ubique voluptatibus te. In reque dicta usu. Ne rebum dissentiet eam, vim omnis deseruisse id. Ullum deleniti vituperata at quo, insolens complectitur te eos, ea pri dico munere propriae. Vel ferri facilis ut, qui paulo ridens praesent ad. Possim alterum qui cu. Accusamus consulatu ius te, cu decore soleat appareat usu.
|
||||
|
||||
Est ei erat mucius quaeque. Ei his quas phaedrum, efficiantur mediocritatem ne sed, hinc oratio blandit ei sed. Blandit gloriatur eam et. Brute noluisse per et, verear disputando neglegentur at quo. Sea quem legere ei, unum soluta ne duo. Ludus complectitur quo te, ut vide autem homero pro.
|
||||
|
||||
Vis id minim dicant sensibus. Pri aliquip conclusionemque ad, ad malis evertitur torquatos his. Has ei solum harum reprimique, id illum saperet tractatos his. Ei omnis soleat antiopam quo. Ad augue inani postulant mel, mel ea qualisque forensibus.
|
||||
|
||||
Lorem salutandi eu mea, eam in soleat iriure assentior. Tamquam lobortis id qui. Ea sanctus democritum mei, per eu alterum electram adversarium. Ea vix probo dicta iuvaret, posse epicurei suavitate eam an, nam et vidit menandri. Ut his accusata petentium.
|
||||
LOREM_IPSUM
|
||||
|
||||
trait :published do
|
||||
status "published"
|
||||
end
|
||||
|
||||
trait :final_version do
|
||||
final_version true
|
||||
end
|
||||
end
|
||||
|
||||
factory :legislation_annotation, class: 'Legislation::Annotation' do
|
||||
draft_version factory: :legislation_draft_version
|
||||
author factory: :user
|
||||
quote "ipsum"
|
||||
text "a comment"
|
||||
ranges [{"start" => "/p[1]", "startOffset" => 6, "end" => "/p[1]", "endOffset" => 11}]
|
||||
range_start "/p[1]"
|
||||
range_start_offset 6
|
||||
range_end "/p[1]"
|
||||
range_end_offset 11
|
||||
end
|
||||
|
||||
factory :legislation_question, class: 'Legislation::Question' do
|
||||
process factory: :legislation_process
|
||||
title "Question text"
|
||||
author factory: :user
|
||||
end
|
||||
|
||||
factory :legislation_question_option, class: 'Legislation::QuestionOption' do
|
||||
question factory: :legislation_question
|
||||
sequence(:value) { |n| "Option #{n}" }
|
||||
end
|
||||
|
||||
factory :legislation_answer, class: 'Legislation::Answer' do
|
||||
question factory: :legislation_question
|
||||
question_option factory: :legislation_question_option
|
||||
user
|
||||
end
|
||||
|
||||
factory :legislation_proposal, class: 'Legislation::Proposal' do
|
||||
title "Example proposal for a legislation"
|
||||
summary "This law should include..."
|
||||
terms_of_service '1'
|
||||
process factory: :legislation_process
|
||||
author factory: :user
|
||||
end
|
||||
end
|
||||
24
spec/factories/notifications.rb
Normal file
24
spec/factories/notifications.rb
Normal file
@@ -0,0 +1,24 @@
|
||||
FactoryBot.define do
|
||||
factory :notification do
|
||||
user
|
||||
association :notifiable, factory: :proposal
|
||||
|
||||
trait :read do
|
||||
read_at { Time.current }
|
||||
end
|
||||
end
|
||||
|
||||
factory :admin_notification do
|
||||
title { |n| "Admin Notification title #{n}" }
|
||||
body { |n| "Admin Notification body #{n}" }
|
||||
link nil
|
||||
segment_recipient UserSegments::SEGMENTS.sample
|
||||
recipients_count nil
|
||||
sent_at nil
|
||||
|
||||
trait :sent do
|
||||
recipients_count 1
|
||||
sent_at Time.current
|
||||
end
|
||||
end
|
||||
end
|
||||
15
spec/factories/organizations.rb
Normal file
15
spec/factories/organizations.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
FactoryBot.define do
|
||||
factory :organization do
|
||||
user
|
||||
responsible_name "Johnny Utah"
|
||||
sequence(:name) { |n| "org#{n}" }
|
||||
|
||||
trait :verified do
|
||||
verified_at { Time.current }
|
||||
end
|
||||
|
||||
trait :rejected do
|
||||
rejected_at { Time.current }
|
||||
end
|
||||
end
|
||||
end
|
||||
142
spec/factories/polls.rb
Normal file
142
spec/factories/polls.rb
Normal file
@@ -0,0 +1,142 @@
|
||||
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
|
||||
95
spec/factories/proposals.rb
Normal file
95
spec/factories/proposals.rb
Normal file
@@ -0,0 +1,95 @@
|
||||
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'
|
||||
question 'Proposal question'
|
||||
external_url 'http://external_documention.es'
|
||||
video_url 'https://youtu.be/nhuNb0XtRhQ'
|
||||
responsible_name 'John Snow'
|
||||
terms_of_service '1'
|
||||
skip_map '1'
|
||||
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 :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
|
||||
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
|
||||
end
|
||||
99
spec/factories/users.rb
Normal file
99
spec/factories/users.rb
Normal file
@@ -0,0 +1,99 @@
|
||||
FactoryBot.define do
|
||||
factory :user do
|
||||
sequence(:username) { |n| "Manuela#{n}" }
|
||||
sequence(:email) { |n| "manuela#{n}@consul.dev" }
|
||||
|
||||
password 'judgmentday'
|
||||
terms_of_service '1'
|
||||
confirmed_at { Time.current }
|
||||
public_activity true
|
||||
|
||||
trait :incomplete_verification do
|
||||
after :create do |user|
|
||||
create(:failed_census_call, user: user)
|
||||
end
|
||||
end
|
||||
|
||||
trait :level_two do
|
||||
residence_verified_at { Time.current }
|
||||
unconfirmed_phone "611111111"
|
||||
confirmed_phone "611111111"
|
||||
sms_confirmation_code "1234"
|
||||
document_type "1"
|
||||
document_number
|
||||
date_of_birth Date.new(1980, 12, 31)
|
||||
gender "female"
|
||||
geozone
|
||||
end
|
||||
|
||||
trait :level_three do
|
||||
verified_at { Time.current }
|
||||
document_type "1"
|
||||
document_number
|
||||
end
|
||||
|
||||
trait :hidden do
|
||||
hidden_at { Time.current }
|
||||
end
|
||||
|
||||
trait :with_confirmed_hide do
|
||||
confirmed_hide_at { Time.current }
|
||||
end
|
||||
|
||||
trait :verified do
|
||||
residence_verified_at { Time.current }
|
||||
verified_at { Time.current }
|
||||
end
|
||||
|
||||
trait :in_census do
|
||||
document_number "12345678Z"
|
||||
document_type "1"
|
||||
verified_at { Time.current }
|
||||
end
|
||||
end
|
||||
|
||||
factory :identity do
|
||||
user nil
|
||||
provider "Twitter"
|
||||
uid "MyString"
|
||||
end
|
||||
|
||||
factory :administrator do
|
||||
user
|
||||
end
|
||||
|
||||
factory :moderator do
|
||||
user
|
||||
end
|
||||
|
||||
factory :valuator do
|
||||
user
|
||||
end
|
||||
|
||||
factory :manager do
|
||||
user
|
||||
end
|
||||
|
||||
factory :poll_officer, class: 'Poll::Officer' do
|
||||
user
|
||||
end
|
||||
|
||||
factory :follow do
|
||||
association :user, factory: :user
|
||||
|
||||
trait :followed_proposal do
|
||||
association :followable, factory: :proposal
|
||||
end
|
||||
|
||||
trait :followed_investment do
|
||||
association :followable, factory: :budget_investment
|
||||
end
|
||||
end
|
||||
|
||||
factory :direct_message do
|
||||
title "Hey"
|
||||
body "How are You doing?"
|
||||
association :sender, factory: :user
|
||||
association :receiver, factory: :user
|
||||
end
|
||||
end
|
||||
53
spec/factories/verifications.rb
Normal file
53
spec/factories/verifications.rb
Normal file
@@ -0,0 +1,53 @@
|
||||
FactoryBot.define do
|
||||
factory :local_census_record, class: 'LocalCensusRecord' do
|
||||
document_number '12345678A'
|
||||
document_type 1
|
||||
date_of_birth Date.new(1970, 1, 31)
|
||||
postal_code '28002'
|
||||
end
|
||||
|
||||
sequence(:document_number) { |n| "#{n.to_s.rjust(8, '0')}X" }
|
||||
|
||||
factory :verification_residence, class: Verification::Residence do
|
||||
user
|
||||
document_number
|
||||
document_type "1"
|
||||
date_of_birth Time.zone.local(1980, 12, 31).to_date
|
||||
postal_code "28013"
|
||||
terms_of_service '1'
|
||||
|
||||
trait :invalid do
|
||||
postal_code "28001"
|
||||
end
|
||||
end
|
||||
|
||||
factory :failed_census_call do
|
||||
user
|
||||
document_number
|
||||
document_type 1
|
||||
date_of_birth Date.new(1900, 1, 1)
|
||||
postal_code '28000'
|
||||
end
|
||||
|
||||
factory :verification_sms, class: Verification::Sms do
|
||||
phone "699999999"
|
||||
end
|
||||
|
||||
factory :verification_letter, class: Verification::Letter do
|
||||
user
|
||||
email 'user@consul.dev'
|
||||
password '1234'
|
||||
verification_code '5555'
|
||||
end
|
||||
|
||||
factory :lock do
|
||||
user
|
||||
tries 0
|
||||
locked_until { Time.current }
|
||||
end
|
||||
|
||||
factory :verified_user do
|
||||
document_number
|
||||
document_type 'dni'
|
||||
end
|
||||
end
|
||||
10
spec/factories/votes.rb
Normal file
10
spec/factories/votes.rb
Normal file
@@ -0,0 +1,10 @@
|
||||
FactoryBot.define do
|
||||
factory :vote do
|
||||
association :votable, factory: :debate
|
||||
association :voter, factory: :user
|
||||
vote_flag true
|
||||
after(:create) do |vote, _|
|
||||
vote.votable.update_cached_votes
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user