diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 184fb3aa2..65ec8687f 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -170,6 +170,7 @@ var initialize_modules = function() { var destroy_non_idempotent_modules = function() { "use strict"; + App.ColumnsSelector.destroy(); App.Datepicker.destroy(); App.HTMLEditor.destroy(); App.LegislationAnnotatable.destroy(); diff --git a/app/assets/javascripts/columns_selector.js b/app/assets/javascripts/columns_selector.js index 77dd5f4c1..2f680b7c6 100644 --- a/app/assets/javascripts/columns_selector.js +++ b/app/assets/javascripts/columns_selector.js @@ -85,6 +85,9 @@ $(".column-selectable").on("inserted", function() { App.ColumnsSelector.initColumns(); }); + }, + destroy: function() { + $("#js-columns-selector-wrapper").children(":not(#column_selector_item_template)").remove(); } }; }).call(this); diff --git a/spec/system/admin/budget_investments_spec.rb b/spec/system/admin/budget_investments_spec.rb index d2b0d67a9..8b2f1f72b 100644 --- a/spec/system/admin/budget_investments_spec.rb +++ b/spec/system/admin/budget_investments_spec.rb @@ -1877,5 +1877,27 @@ describe "Admin budget investments" do expect(page).not_to have_content "Don't display me, please!" end end + + scenario "When restoring the page from browser history renders columns selectors only once", :js do + visit admin_budget_budget_investments_path(budget) + + click_link "Proposals" + + expect(page).to have_content("There are no proposals.") + + go_back + + within("#js-columns-selector") do + find("strong", text: "Columns").click + end + + within("#js-columns-selector-wrapper") do + selectable_columns.each do |column| + check_text = I18n.t("admin.budget_investments.index.list.#{column}") + + expect(page).to have_content(check_text, count: 1) + end + end + end end end