diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 512d89bfd..d9298762b 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -172,6 +172,7 @@ var destroy_non_idempotent_modules = function() { App.Datepicker.destroy(); App.HTMLEditor.destroy(); + App.LegislationAnnotatable.destroy(); }; $(document).on("turbolinks:load", initialize_modules); diff --git a/app/assets/javascripts/legislation_annotatable.js b/app/assets/javascripts/legislation_annotatable.js index 9b1125722..9ab0f6d6e 100644 --- a/app/assets/javascripts/legislation_annotatable.js +++ b/app/assets/javascripts/legislation_annotatable.js @@ -226,6 +226,11 @@ }); }); }); + }, + destroy: function() { + if ($(".legislation-annotatable").length > 0) { + App.LegislationAnnotatable.app.destroy(); + } } }; }).call(this); diff --git a/spec/system/legislation/draft_versions_spec.rb b/spec/system/legislation/draft_versions_spec.rb index c3b3bb687..f2914b7d1 100644 --- a/spec/system/legislation/draft_versions_spec.rb +++ b/spec/system/legislation/draft_versions_spec.rb @@ -237,6 +237,23 @@ describe "Legislation Draft Versions" do expect(page).to have_content "Comment can't be blank" end + + scenario "When page is restored from browser cache do not duplicate annotation handlers" do + create(:legislation_annotation, draft_version: draft_version, text: "my annotation") + + visit legislation_process_draft_version_path(draft_version.process, draft_version) + + expect(page).to have_css(".annotator-hl", count: 1) + + click_link "Help" + + expect(page).to have_content "CONSUL is a platform for citizen participation" + + go_back + + expect(page).to have_content "A collaborative legislation process" + expect(page).to have_css(".annotator-hl", count: 1) + end end context "Merged annotations", :js do