spec/factories/administration.rb
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, &:to_s)
sequence(:census_code, &:to_s)
color { "#0081aa" }
trait :in_census do
census_code { "01" }
end
trait :with_html_coordinates do
html_map_coordinates { "30,139,45,153,77,148,107,125" }
end
trait :with_geojson do
geojson do
'{ "geometry": { "type": "Polygon", "coordinates": [[0.117,51.513],[0.118,51.512],[0.119,51.514]] } }'
end
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 { Date.current - 7.days }
post_ended_at { Date.current + 7.days }
background_color { "#FF0000" }
font_color { "#FFFFFF" }
end
factory :web_section do
name { "homepage" }
end
factory :banner_section, class: "Banner::Section" do
banner_id factory: :banner
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" }
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 :site_customization_image, class: "SiteCustomization::Image" do
image { Rack::Test::UploadedFile.new("spec/fixtures/files/logo_header.png") }
name { "logo_header" }
end
factory :map_location do
latitude { Setting["map.latitude"] }
longitude { Setting["map.longitude"] }
zoom { Setting["map.zoom"] }
trait :proposal_map_location do
proposal
end
trait :budget_investment_map_location do
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 }
end
after :create do |widget_card|
create(:image, imageable: widget_card)
end
end
factory :widget_feed, class: "Widget::Feed"
factory :i18n_content, class: "I18nContent" do
key { "debates.index.section_footer.description" }
value_es { "Texto en espaƱol" }
value_en { "Text in english" }
end
factory :tenant do
sequence(:name) { |n| "Tenant #{n}" }
sequence(:schema) { |n| "subdomain#{n}" }
trait :domain do
schema_type { :domain }
end
end
end