Files
nairobi/spec/system/admin/settings_spec.rb
Javi Martín 86a12b23ad Test admin map settings from the user's point of view
People using these settings don't know about the hidden fields, but they
do know about the fields that are actually displayed on the page. So we
check that these fields are updated when the marker is updated.
2025-11-17 15:14:20 +01:00

344 lines
10 KiB
Ruby

require "rails_helper"
describe "Admin settings", :admin do
scenario "Index" do
visit admin_settings_path
expect(page).to have_content "Level 1 public official"
expect(page).to have_content "Maximum ratio of anonymous votes per Debate"
expect(page).to have_content "Comments body max length"
end
scenario "Update" do
visit admin_settings_path
within "tr", text: "Level 1 public official" do
fill_in "Level 1 public official", with: "Super Users of level 1"
click_button "Update"
end
expect(page).to have_content "Value updated"
end
describe "Map settings initialization" do
scenario "Map is only initialized when the map settings tab content is shown" do
Setting["feature.map"] = true
visit admin_settings_path
expect(page).not_to have_css "#admin-map.leaflet-container", visible: :all
click_link "Map configuration"
expect(page).to have_css "#admin-map.leaflet-container"
end
end
describe "Update map" do
scenario "Should not be able when map feature deactivated" do
Setting["feature.map"] = false
visit admin_settings_path
click_link "Map configuration"
expect(page).to have_content "To show the map to users you must enable " \
'"Proposals and budget investments geolocation" ' \
'on "Features" tab.'
expect(page).not_to have_css("#admin-map")
end
scenario "Should update marker" do
Setting["feature.map"] = true
visit admin_settings_path
click_link "Map configuration"
expect(page).to have_css("#admin-map")
expect(page).not_to have_content "To show the map to users you must enable " \
'"Proposals and budget investments geolocation" ' \
'on "Features" tab.'
expect(page).to have_field "Latitude", with: "51.48"
expect(page).to have_field "Longitude", with: "0.0"
within "#map-form" do
find("#admin-map").click
click_button "Update"
end
expect(page).to have_content "Map configuration updated successfully"
expect(page).to have_field "Latitude"
expect(page).not_to have_field "Latitude", with: "51.48"
end
end
describe "Update content types" do
scenario "stores the correct mime types" do
Setting["uploads.images.content_types"] = "image/png"
setting = Setting.find_by!(key: "uploads.images.content_types")
visit admin_settings_path
click_link "Images and documents"
within "#edit_setting_#{setting.id}" do
expect(find_field("PNG")).to be_checked
expect(find_field("JPG")).not_to be_checked
expect(find_field("GIF")).not_to be_checked
check "GIF"
click_button "Update"
end
expect(page).to have_content "Value updated"
click_link "Images and documents"
within "#edit_setting_#{setting.id}" do
expect(find_field("PNG")).to be_checked
expect(find_field("GIF")).to be_checked
expect(find_field("JPG")).not_to be_checked
end
end
end
describe "Update Remote Census Configuration" do
before do
Setting["feature.remote_census"] = true
end
scenario "Should not be able when remote census feature deactivated" do
Setting["feature.remote_census"] = nil
visit admin_settings_path
find("#remote-census-tab").click
expect(page).to have_content "To configure remote census (SOAP) you must enable " \
'"Configure connection to remote census (SOAP)" ' \
'on "Features" tab.'
end
scenario "Should be able when remote census feature activated" do
visit admin_settings_path
find("#remote-census-tab").click
expect(page).to have_content("General Information")
expect(page).to have_content("Request Data")
expect(page).to have_content("Response Data")
expect(page).not_to have_content "To configure remote census (SOAP) you must enable " \
'"Configure connection to remote census (SOAP)" ' \
'on "Features" tab.'
end
end
describe "Should redirect to same tab after update setting" do
context "remote census" do
before do
Setting["feature.remote_census"] = true
end
scenario "On #tab-remote-census-configuration" do
visit admin_settings_path
find("#remote-census-tab").click
within "tr", text: "Endpoint" do
fill_in "Endpoint", with: "example.org/webservice"
click_button "Update"
end
expect(page).to have_current_path(admin_settings_path)
expect(page).to have_css("div#tab-remote-census-configuration.is-active")
end
end
scenario "On #tab-configuration" do
visit admin_settings_path
within "tr", text: "Level 1 public official" do
fill_in "Level 1 public official", with: "Super Users of level 1"
click_button "Update"
end
expect(page).to have_current_path(admin_settings_path)
expect(page).to have_css("div#tab-configuration.is-active")
end
context "map configuration" do
before do
Setting["feature.map"] = true
end
scenario "On #tab-map-configuration" do
visit admin_settings_path
click_link "Map configuration"
within "tr", text: "Latitude" do
fill_in "Latitude", with: "-3.636"
click_button "Update"
end
expect(page).to have_current_path(admin_settings_path)
expect(page).to have_css("div#tab-map-configuration.is-active")
end
scenario "On #tab-map-configuration when using the interactive map" do
visit admin_settings_path(anchor: "tab-map-configuration")
within "#map-form" do
click_button "Update"
end
expect(page).to have_content("Map configuration updated successfully.")
expect(page).to have_current_path(admin_settings_path)
expect(page).to have_css("div#tab-map-configuration.is-active")
end
end
scenario "On #tab-proposals" do
visit admin_settings_path
find("#proposals-tab").click
within "tr", text: "Polls description" do
fill_in "Polls description", with: "Polls description"
click_button "Update"
end
expect(page).to have_current_path(admin_settings_path)
expect(page).to have_css("div#tab-proposals.is-active")
end
scenario "On #tab-participation-processes" do
visit admin_settings_path
find("#participation-processes-tab").click
within("tr", text: "Debates") { click_button "Yes" }
expect(page).to have_current_path(admin_settings_path)
expect(page).to have_css("div#tab-participation-processes.is-active")
end
scenario "On #tab-feature-flags" do
visit admin_settings_path
find("#features-tab").click
within("tr", text: "Featured proposals") { click_button "No" }
expect(page).to have_current_path(admin_settings_path)
expect(page).to have_css("div#tab-feature-flags.is-active")
end
scenario "On #tab-sdg-configuration" do
Setting["feature.sdg"] = true
visit admin_settings_path
click_link "SDG configuration"
within("tr", text: "Related SDG in debates") do
click_button "Yes"
expect(page).to have_button "No"
end
expect(page).to have_current_path(admin_settings_path)
expect(page).to have_css("h2", exact_text: "SDG configuration")
end
scenario "On #tab-images-and-documents" do
Setting["feature.sdg"] = true
visit admin_settings_path(anchor: "tab-images-and-documents")
within("tr", text: "Maximum number of documents") do
fill_in "Maximum number of documents", with: 5
click_button "Update"
end
expect(page).to have_current_path(admin_settings_path)
expect(page).to have_field("Maximum number of documents", with: 5)
end
end
describe "Skip verification" do
scenario "deactivate skip verification" do
Setting["feature.user.skip_verification"] = "true"
visit admin_settings_path
find("#features-tab").click
within("tr", text: "Skip user verification") do
click_button "Yes"
expect(page).to have_button "No"
end
end
scenario "activate skip verification" do
Setting["feature.user.skip_verification"] = nil
visit admin_settings_path
find("#features-tab").click
within("tr", text: "Skip user verification") do
click_button "No"
expect(page).to have_button "Yes"
end
end
end
describe "SDG configuration tab" do
scenario "is enabled when the sdg feature is enabled" do
Setting["feature.sdg"] = true
visit admin_settings_path
click_link "SDG configuration"
expect(page).to have_css "h2", exact_text: "SDG configuration"
end
scenario "is disabled when the sdg feature is disabled" do
Setting["feature.sdg"] = false
visit admin_settings_path
click_link "SDG configuration"
expect(page).to have_content "To show the configuration options from " \
"Sustainable Development Goals you must " \
'enable "SDG" on "Features" tab.'
end
scenario "is enabled right after enabling the feature" do
Setting["feature.sdg"] = false
visit admin_settings_path
click_link "Features"
within("tr", text: "SDG") do
click_button "No"
expect(page).to have_button "Yes"
end
click_link "SDG configuration"
expect(page).to have_css "h2", exact_text: "SDG configuration"
end
end
describe "Machine learning settings" do
scenario "show the machine learning feature but not its settings" do
Setting["feature.machine_learning"] = true
visit admin_settings_path
expect(page).not_to have_content "Machine Learning"
expect(page).not_to have_content "Comments Summary"
expect(page).not_to have_content "Related Content"
expect(page).not_to have_content "Tags"
expect(page).not_to have_css ".translation_missing"
click_link "Features"
expect(page).to have_content "Machine Learning"
expect(page).not_to have_content "Comments Summary"
expect(page).not_to have_content "Related Content"
expect(page).not_to have_content "Tags"
expect(page).not_to have_css ".translation_missing"
end
end
end