Test slugs from the user's point of view

System tests are about user experience, so instead of checking the slug
has been updated in the database, we check whether the page can be
accessed using the slug.

Note the budget group test is a bit different because the name of the
group isn't present in the budget group page.
This commit is contained in:
Javi Martín
2021-04-10 16:09:27 +02:00
parent dbf7de5787
commit b55f2ab85c
4 changed files with 31 additions and 16 deletions

View File

@@ -123,8 +123,7 @@ describe "Admin budget groups", :admin do
end end
scenario "Changing name for current locale will update the slug if budget is in draft phase" do scenario "Changing name for current locale will update the slug if budget is in draft phase" do
group = create(:budget_group, budget: budget) group = create(:budget_group, budget: budget, name: "Old English Name")
old_slug = group.slug
visit edit_admin_budget_group_path(budget, group) visit edit_admin_budget_group_path(budget, group)
@@ -133,7 +132,10 @@ describe "Admin budget groups", :admin do
click_button "Save group" click_button "Save group"
expect(page).to have_content "Group updated successfully" expect(page).to have_content "Group updated successfully"
expect(group.reload.slug).to eq old_slug
visit budget_group_path(budget, id: "old-english-name")
expect(page).to have_content "Select an option"
visit edit_admin_budget_group_path(budget, group) visit edit_admin_budget_group_path(budget, group)
@@ -142,8 +144,10 @@ describe "Admin budget groups", :admin do
click_button "Save group" click_button "Save group"
expect(page).to have_content "Group updated successfully" expect(page).to have_content "Group updated successfully"
expect(group.reload.slug).not_to eq old_slug
expect(group.slug).to eq "new-english-name" visit budget_group_path(budget, id: "new-english-name")
expect(page).to have_content "Select an option"
end end
end end

View File

@@ -160,8 +160,7 @@ describe "Admin budget headings", :admin do
end end
scenario "Changing name for current locale will update the slug if budget is in draft phase" do scenario "Changing name for current locale will update the slug if budget is in draft phase" do
heading = create(:budget_heading, group: group) heading = create(:budget_heading, group: group, name: "Old English Name")
old_slug = heading.slug
visit edit_admin_budget_group_heading_path(budget, group, heading) visit edit_admin_budget_group_heading_path(budget, group, heading)
@@ -170,7 +169,10 @@ describe "Admin budget headings", :admin do
click_button "Save heading" click_button "Save heading"
expect(page).to have_content "Heading updated successfully" expect(page).to have_content "Heading updated successfully"
expect(heading.reload.slug).to eq old_slug
visit budget_investments_path(budget, heading_id: "old-english-name")
expect(page).to have_content "Old English Name"
visit edit_admin_budget_group_heading_path(budget, group, heading) visit edit_admin_budget_group_heading_path(budget, group, heading)
@@ -179,8 +181,10 @@ describe "Admin budget headings", :admin do
click_button "Save heading" click_button "Save heading"
expect(page).to have_content "Heading updated successfully" expect(page).to have_content "Heading updated successfully"
expect(heading.reload.slug).not_to eq old_slug
expect(heading.slug).to eq "new-english-name" visit budget_investments_path(budget, heading_id: "new-english-name")
expect(page).to have_content "New English Name"
end end
end end

View File

@@ -286,8 +286,7 @@ describe "Admin budgets", :admin do
end end
scenario "Changing name for current locale will update the slug if budget is in draft phase" do scenario "Changing name for current locale will update the slug if budget is in draft phase" do
budget.update!(published: false) budget.update!(published: false, name: "Old English Name")
old_slug = budget.slug
visit edit_admin_budget_path(budget) visit edit_admin_budget_path(budget)
@@ -296,7 +295,10 @@ describe "Admin budgets", :admin do
click_button "Update Budget" click_button "Update Budget"
expect(page).to have_content "Participatory budget updated successfully" expect(page).to have_content "Participatory budget updated successfully"
expect(budget.reload.slug).to eq old_slug
visit budget_path(id: "old-english-name")
expect(page).to have_content "Old English Name"
visit edit_admin_budget_path(budget) visit edit_admin_budget_path(budget)
@@ -305,8 +307,10 @@ describe "Admin budgets", :admin do
click_button "Update Budget" click_button "Update Budget"
expect(page).to have_content "Participatory budget updated successfully" expect(page).to have_content "Participatory budget updated successfully"
expect(budget.reload.slug).not_to eq old_slug
expect(budget.slug).to eq "new-english-name" visit budget_path(id: "new-english-name")
expect(page).to have_content "New English Name"
end end
end end

View File

@@ -75,7 +75,10 @@ describe "Admin polls", :admin do
expect(page).to have_content "Upcoming poll" expect(page).to have_content "Upcoming poll"
expect(page).to have_content I18n.l(start_date) expect(page).to have_content I18n.l(start_date)
expect(page).to have_content I18n.l(end_date) expect(page).to have_content I18n.l(end_date)
expect(Poll.last.slug).to eq "#{Poll.last.name.to_s.parameterize}"
visit poll_path(id: "upcoming-poll")
expect(page).to have_content "Upcoming poll"
end end
scenario "Edit" do scenario "Edit" do