Files
grecia/spec/system/admin/site_customization/information_texts_spec.rb
Javi Martín 1b8a079727 Don't reload records in system tests
As mentioned in commits like a586ba806, a7664ad81, 006128da5, b41fbfa52
and c480cdd91, accessing the database after starting the browser with
the `visit` method sometimes results in database corruption and failing
tests on our CI due to the process running the test accessing the
database after the process running the browser has started.

For example, one of these tests has recently failed on our CI:

```
3) Users Create a level 3 user with email from scratch
   Failure/Error: expect(user.reload).to be_confirmed
     expected `#<User id: 2060, email: "pepe@gmail.com", created_at:
     "2025-03-12 19:51:03.688867000 +0100", updated_...d_debates: true,
     recommended_proposals: true, subscriptions_token: nil,
     registering_from_web: false>.confirmed?` to be truthy, got false
```

IMHO this is also a bad practice for system tests, since these tests
should be checking what users experience.

So we're modifying the tests to check the results of users interaction
from the point of view of the users. For example, instead of checking
that a user is now level 3 verified in the database, we're checking that
the user interface states that the user is level 3 verified.

Note we're adding an offset when editing the map marker by clicking on
`map-location` with `.click(x: 30, y: 30)`. This way we make sure that
both the latitude and longitude change from the original values; we used
to clicking in the middle (no offset), which didn't change the longitude
and changed the latitude just by coincidence.

Also note we aren't changing tests with the `:no_js` tag, since these
tests don't run a real browser in a separate process. In the future, we
should also change most of these tests so they don't access the database
and they use a real browser.
2025-04-01 14:53:26 +02:00

141 lines
4.9 KiB
Ruby

require "rails_helper"
describe "Admin custom information texts", :admin do
scenario "page is correctly loaded" do
visit admin_site_customization_information_texts_path
click_link "Basic customization"
expect(page).to have_content "Help with debates"
expect(page).to have_content "Help with proposals"
expect(page).to have_content "Help with voting"
expect(page).to have_content "Help with collaborative legislation"
expect(page).to have_content "Help with participatory budgets"
within("#information-texts-tabs") { click_link "Debates" }
expect(page).to have_content "Edit debate"
within("#information-texts-tabs") { click_link "Community" }
expect(page).to have_content "Access the community"
within("#information-texts-tabs") { click_link "Proposals" }
expect(page).to have_content "Create proposal"
within "#information-texts-tabs" do
click_link "Polls"
end
expect(page).to have_content "Results"
within("#information-texts-tabs") { click_link "Collaborative legislation" }
expect(page).to have_content "Help with collaborative legislation"
within("#information-texts-tabs") { click_link "Budgets" }
expect(page).to have_content "You have not voted any investment project."
click_link "Layouts"
expect(page).to have_content "Accessibility"
click_link "Emails"
expect(page).to have_content "Confirm your email"
within "#information-texts-tabs" do
click_link "Management"
end
expect(page).to have_content "This user account is already verified."
click_link "Welcome"
expect(page).to have_content "See all debates"
end
scenario "check that tabs are highlight when click it" do
visit admin_site_customization_information_texts_path
within("#information-texts-tabs") { click_link "Proposals" }
expect(page).to have_link "Proposals",
href: "/admin/site_customization/information_texts?tab=proposals",
class: "is-active"
end
context "Globalization" do
scenario "Add a translation" do
key = "debates.index.section_footer.title"
visit admin_site_customization_information_texts_path
select "Français", from: "Add language"
fill_in "contents[content_#{key}]values[value_fr]", with: "Aide personalise sur les débats"
click_button "Save"
expect(page).to have_content "Translation updated successfully"
refresh
expect(page).not_to have_content "Translation updated successfully"
select "Français", from: "Current language"
expect(page).to have_content "Aide personalise sur les débats"
expect(page).not_to have_content "Aide sur les débats"
end
scenario "Update a translation" do
key = "proposals.show.share"
create(:i18n_content, key: key, value_fr: "Partager la proposition")
visit admin_site_customization_information_texts_path(tab: "proposals")
select "Français", from: "Current language"
fill_in "contents_content_#{key}values_value_fr", with: "Partager personalise"
click_button "Save"
expect(page).to have_content "Translation updated successfully"
visit admin_site_customization_information_texts_path(tab: "proposals")
select "Français", from: "Current language"
expect(page).to have_content "Partager personalise"
expect(page).not_to have_content "Partager la proposition"
end
scenario "Remove a translation" do
create(:i18n_content, key: "debates.index.featured_debates",
value_en: "Custom featured",
value_es: "Destacar personalizado")
create(:i18n_content, key: "debates.new.start_new",
value_en: "Start a new custom debate",
value_es: "Empezar un nuevo debate personalizado")
visit admin_site_customization_information_texts_path(tab: "debates")
select "Español", from: "Current language"
expect(page).to have_field "debates.index.featured_debates", with: "Destacar personalizado"
expect(page).to have_field "debates.new.start_new", with: "Empezar un nuevo debate personalizado"
click_link "Remove language"
click_button "Save"
expect(page).to have_content "Translation updated successfully"
expect(page).to have_select "Current language", options: ["English"]
expect(page).not_to have_field "debates.index.featured_debates"
visit admin_site_customization_information_texts_path(tab: "debates")
expect(page).to have_field "debates.index.featured_debates", with: "Custom featured"
expect(page).to have_field "debates.new.start_new", with: "Start a new custom debate"
select "Español", from: "Add language"
expect(page).to have_field "debates.index.featured_debates", with: "Destacar"
expect(page).to have_field "debates.new.start_new", with: "Empezar un debate"
end
end
end