147 lines
4.2 KiB
Ruby
147 lines
4.2 KiB
Ruby
require 'rails_helper'
|
|
|
|
feature 'Cards' do
|
|
|
|
background do
|
|
admin = create(:administrator).user
|
|
login_as(admin)
|
|
end
|
|
|
|
it_behaves_like "translatable",
|
|
"widget_card",
|
|
"edit_admin_widget_card_path",
|
|
%w[title description link_text label]
|
|
|
|
scenario "Create", :js do
|
|
visit admin_homepage_path
|
|
click_link "Create card"
|
|
|
|
fill_in "Label (optional)", with: "Card label"
|
|
fill_in "Title", with: "Card text"
|
|
fill_in "Description", with: "Card description"
|
|
fill_in "Link text", with: "Link text"
|
|
fill_in "widget_card_link_url", with: "consul.dev"
|
|
attach_image_to_card
|
|
click_button "Create card"
|
|
|
|
expect(page).to have_content "Success"
|
|
expect(page).to have_css(".homepage-card", count: 1)
|
|
|
|
card = Widget::Card.last
|
|
within("#widget_card_#{card.id}") do
|
|
expect(page).to have_content "Card label"
|
|
expect(page).to have_content "Card text"
|
|
expect(page).to have_content "Card description"
|
|
expect(page).to have_content "Link text"
|
|
expect(page).to have_content "consul.dev"
|
|
expect(page).to have_link("Show image", href: card.image_url(:large))
|
|
end
|
|
end
|
|
|
|
scenario "Index" do
|
|
3.times { create(:widget_card) }
|
|
|
|
visit admin_homepage_path
|
|
|
|
expect(page).to have_css(".homepage-card", count: 3)
|
|
|
|
cards = Widget::Card.all
|
|
cards.each do |card|
|
|
expect(page).to have_content card.title
|
|
expect(page).to have_content card.description
|
|
expect(page).to have_content card.link_text
|
|
expect(page).to have_content card.link_url
|
|
expect(page).to have_link("Show image", href: card.image_url(:large))
|
|
end
|
|
end
|
|
|
|
scenario "Edit" do
|
|
card = create(:widget_card)
|
|
|
|
visit admin_homepage_path
|
|
|
|
within("#widget_card_#{card.id}") do
|
|
click_link "Edit"
|
|
end
|
|
|
|
within(".translatable-fields") do
|
|
fill_in "Label (optional)", with: "Card label updated"
|
|
fill_in "Title", with: "Card text updated"
|
|
fill_in "Description", with: "Card description updated"
|
|
fill_in "Link text", with: "Link text updated"
|
|
end
|
|
|
|
fill_in "widget_card_link_url", with: "consul.dev updated"
|
|
click_button "Save card"
|
|
|
|
expect(page).to have_content "Updated"
|
|
|
|
expect(page).to have_css(".homepage-card", count: 1)
|
|
within("#widget_card_#{Widget::Card.last.id}") do
|
|
expect(page).to have_content "Card label updated"
|
|
expect(page).to have_content "Card text updated"
|
|
expect(page).to have_content "Card description updated"
|
|
expect(page).to have_content "Link text updated"
|
|
expect(page).to have_content "consul.dev updated"
|
|
end
|
|
end
|
|
|
|
scenario "Remove", :js do
|
|
card = create(:widget_card)
|
|
|
|
visit admin_homepage_path
|
|
|
|
within("#widget_card_#{card.id}") do
|
|
accept_confirm do
|
|
click_link "Delete"
|
|
end
|
|
end
|
|
|
|
expect(page).to have_content "Removed"
|
|
expect(page).to have_css(".homepage-card", count: 0)
|
|
end
|
|
|
|
context "Header Card" do
|
|
|
|
scenario "Create" do
|
|
visit admin_homepage_path
|
|
click_link "Create header"
|
|
|
|
fill_in "Label (optional)", with: "Header label"
|
|
fill_in "Title", with: "Header text"
|
|
fill_in "Description", with: "Header description"
|
|
fill_in "Link text", with: "Link text"
|
|
fill_in "widget_card_link_url", with: "consul.dev"
|
|
click_button "Create header"
|
|
|
|
expect(page).to have_content "Success"
|
|
|
|
within("#header") do
|
|
expect(page).to have_css(".homepage-card", count: 1)
|
|
expect(page).to have_content "Header label"
|
|
expect(page).to have_content "Header text"
|
|
expect(page).to have_content "Header description"
|
|
expect(page).to have_content "Link text"
|
|
expect(page).to have_content "consul.dev"
|
|
end
|
|
|
|
within("#cards") do
|
|
expect(page).to have_css(".homepage-card", count: 0)
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
pending "add image expectactions"
|
|
|
|
def attach_image_to_card
|
|
click_link "Add image"
|
|
image_input = all(".image").last.find("input[type=file]", visible: false)
|
|
attach_file(
|
|
image_input[:id],
|
|
Rails.root.join('spec/fixtures/files/clippy.jpg'),
|
|
make_visible: true)
|
|
expect(page).to have_field('widget_card_image_attributes_title', with: "clippy.jpg")
|
|
end
|
|
end
|