Files
nairobi/spec/features/admin/banners_spec.rb
Javi Martín 307cf24846 Use describe on feature tests
The `type: :feature` is automatically detected by RSpec because these
tests are inside the `spec/features` folder. Using `feature` re-adds a
`type: :feature` to these files, which will result in a conflict when we
upgrade to Rails 5.1's system tests.

Because of this change, we also need to change `background` to `before`
or else these tests will fail.
2019-05-28 16:36:54 +02:00

212 lines
6.9 KiB
Ruby

require "rails_helper"
describe "Admin banners magement" do
before do
login_as(create(:administrator).user)
end
it_behaves_like "translatable",
"banner",
"edit_admin_banner_path",
%w[title description]
context "Index" do
before do
@banner1 = create(:banner, title: "Banner number one",
description: "This is the text of banner number one and is not active yet",
target_url: "http://www.url.com",
post_started_at: (Time.current + 4.days),
post_ended_at: (Time.current + 10.days),
background_color: "#FF0000",
font_color: "#FFFFFF")
@banner2 = create(:banner, title: "Banner number two",
description: "This is the text of banner number two and is not longer active",
target_url: "http://www.url.com",
post_started_at: (Time.current - 10.days),
post_ended_at: (Time.current - 3.days),
background_color: "#00FF00",
font_color: "#FFFFFF")
@banner3 = create(:banner, title: "Banner number three",
description: "This is the text of banner number three",
target_url: "http://www.url.com",
post_started_at: (Time.current - 1.day),
post_ended_at: (Time.current + 10.days),
background_color: "#0000FF",
font_color: "#FFFFFF")
@banner4 = create(:banner, title: "Banner number four",
description: "This is the text of banner number four",
target_url: "http://www.url.com",
post_started_at: (DateTime.current - 10.days),
post_ended_at: (DateTime.current + 10.days),
background_color: "#FFF000",
font_color: "#FFFFFF")
@banner5 = create(:banner, title: "Banner number five",
description: "This is the text of banner number five",
target_url: "http://www.url.com",
post_started_at: (DateTime.current - 10.days),
post_ended_at: (DateTime.current + 10.days),
background_color: "#FFFF00",
font_color: "#FFFFFF")
end
scenario "Index show active banners" do
visit admin_banners_path(filter: "with_active")
expect(page).to have_content("There are 3 banners")
end
scenario "Index show inactive banners" do
visit admin_banners_path(filter: "with_inactive")
expect(page).to have_content("There are 2 banners")
end
scenario "Index show all banners" do
visit admin_banners_path
expect(page).to have_content("There are 5 banners")
end
end
scenario "Banners publication is listed on admin menu" do
visit admin_root_path
within("#side_menu") do
expect(page).to have_link "Manage banners"
end
end
scenario "Publish a banner" do
section = create(:web_section, name: "proposals")
visit admin_root_path
within("#side_menu") do
click_link "Manage banners"
end
click_link "Create banner"
fill_in "Title", with: "Such banner"
fill_in "Description", with: "many text wow link"
fill_in "banner_target_url", with: "https://www.url.com"
last_week = Time.current - 7.days
next_week = Time.current + 7.days
fill_in "post_started_at", with: last_week.strftime("%d/%m/%Y")
fill_in "post_ended_at", with: next_week.strftime("%d/%m/%Y")
fill_in "banner_background_color", with: "#850000"
fill_in "banner_font_color", with: "#ffb2b2"
check "banner_web_section_ids_#{section.id}"
click_button "Save changes"
expect(page).to have_content "Such banner"
visit proposals_path
expect(page).to have_content "Such banner"
expect(page).to have_link "Such banner many text wow link", href: "https://www.url.com"
end
scenario "Publish a banner with a translation different than the current locale", :js do
visit new_admin_banner_path
expect(page).to have_link "English"
click_link "Remove language"
select "Français", from: "translation_locale"
fill_in "Title", with: "En Français"
fill_in "Description", with: "Link en Français"
fill_in "Link", with: "https://www.url.com"
last_week = Time.current - 1.week
next_week = Time.current + 1.week
fill_in "Post started at", with: last_week.strftime("%d/%m/%Y")
fill_in "Post ended at", with: next_week.strftime("%d/%m/%Y")
click_button "Save changes"
click_link "Edit banner"
expect(page).to have_link "Français"
expect(page).not_to have_link "English"
expect(page).to have_field "Title", with: "En Français"
end
scenario "Update banner color when changing from color picker or text_field", :js do
visit new_admin_banner_path
fill_in "background_color_input", with: "#850000"
fill_in "font_color_input", with: "#ffb2b2"
fill_in "Title", with: "Fun with flags"
expect(find("#background_color_input").value).to eq("#850000")
expect(find("#font_color_input").value).to eq("#ffb2b2")
end
scenario "Edit banner with live refresh", :js do
create(:banner, title: "Hello",
description: "Wrong text",
target_url: "http://www.url.com",
post_started_at: (Time.current + 4.days),
post_ended_at: (Time.current + 10.days),
background_color: "#FF0000",
font_color: "#FFFFFF")
visit admin_root_path
within("#side_menu") do
click_link "Site content"
click_link "Manage banners"
end
click_link "Edit banner"
fill_in "Title", with: "Modified title"
fill_in "Description", with: "Edited text"
page.find("body").click
within("div#js-banner-background") do
expect(page).to have_selector("h2", text: "Modified title")
expect(page).to have_selector("h3", text: "Edited text")
end
click_button "Save changes"
visit admin_banners_path
expect(page).to have_content "Modified title"
expect(page).to have_content "Edited text"
expect(page).not_to have_content "Hello"
expect(page).not_to have_content "Wrong text"
end
scenario "Delete a banner" do
create(:banner, title: "Ugly banner",
description: "Bad text",
target_url: "http://www.url.com",
post_started_at: (Time.current + 4.days),
post_ended_at: (Time.current + 10.days),
background_color: "#FF0000",
font_color: "#FFFFFF")
visit admin_root_path
within("#side_menu") do
click_link "Manage banners"
end
expect(page).to have_content "Ugly banner"
click_link "Delete banner"
visit admin_root_path
expect(page).not_to have_content "Ugly banner"
end
end