From 42aa15767eafb40e6a38fa86ed843b28f8ace19b Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 15 Jan 2020 17:24:05 +1100 Subject: [PATCH 1/4] DRY navigating to Tag Rules section --- spec/features/admin/tag_rules_spec.rb | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/spec/features/admin/tag_rules_spec.rb b/spec/features/admin/tag_rules_spec.rb index a01ecb99fc..c8583df70a 100644 --- a/spec/features/admin/tag_rules_spec.rb +++ b/spec/features/admin/tag_rules_spec.rb @@ -8,13 +8,10 @@ feature 'Tag Rules', js: true do context "creating" do before do - login_to_admin_section - visit main_app.edit_admin_enterprise_path(enterprise) + visit_tag_rules end it "allows creation of rules of each type" do - click_link "Tag Rules" - # Creating a new tag expect(page).to have_no_selector '.customer_tag' expect(page).to have_content 'No tags apply to this enterprise yet' @@ -115,13 +112,10 @@ feature 'Tag Rules', js: true do # let!(:do_tag_rule) { create(:tag_rule, enterprise: enterprise, preferred_customer_tags: "member" ) } before do - login_to_admin_section - visit main_app.edit_admin_enterprise_path(enterprise) + visit_tag_rules end it "saves changes to rules of each type" do - click_link "Tag Rules" - # Tag groups exist expect(page).to have_selector '.customer_tag .header', text: "For customers tagged:", count: 4 expect(page).to have_selector '.customer_tag .header tags-input .tag-list ti-tag-item', text: "member", count: 1 @@ -223,13 +217,10 @@ feature 'Tag Rules', js: true do let!(:default_rule) { create(:filter_products_tag_rule, is_default: true, enterprise: enterprise ) } before do - login_to_admin_section - visit main_app.edit_admin_enterprise_path(enterprise) + visit_tag_rules end it "deletes both default and customer rules from the database" do - click_link "Tag Rules" - expect do accept_alert do within "#tr_1" do first("a.delete-tag-rule").click end @@ -242,4 +233,10 @@ feature 'Tag Rules', js: true do end.to change{ TagRule.count }.by(-2) end end + + def visit_tag_rules + login_to_admin_section + visit main_app.edit_admin_enterprise_path(enterprise) + click_link "Tag Rules" + end end From 3a9aaf67647d08211193e259ed75129f410cfbb8 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 15 Jan 2020 17:34:57 +1100 Subject: [PATCH 2/4] Wait for the first enterprise tab to be loaded --- spec/features/admin/tag_rules_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/features/admin/tag_rules_spec.rb b/spec/features/admin/tag_rules_spec.rb index c8583df70a..f6087364fe 100644 --- a/spec/features/admin/tag_rules_spec.rb +++ b/spec/features/admin/tag_rules_spec.rb @@ -237,6 +237,7 @@ feature 'Tag Rules', js: true do def visit_tag_rules login_to_admin_section visit main_app.edit_admin_enterprise_path(enterprise) + expect(page).to have_content "PRIMARY DETAILS" click_link "Tag Rules" end end From 4d53f47d887a14bfabdfad997d0ef9ac0d35fda1 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 16 Jan 2020 10:42:33 +1100 Subject: [PATCH 3/4] Leave tag rules spec in clean state --- spec/features/admin/tag_rules_spec.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/features/admin/tag_rules_spec.rb b/spec/features/admin/tag_rules_spec.rb index f6087364fe..ffc2c1c065 100644 --- a/spec/features/admin/tag_rules_spec.rb +++ b/spec/features/admin/tag_rules_spec.rb @@ -231,6 +231,13 @@ feature 'Tag Rules', js: true do end expect(page).to have_no_selector "#tr_0" end.to change{ TagRule.count }.by(-2) + + # After deleting tags, the form is dirty and we need to confirm leaving + # the page. If we don't do it here, Capybara may timeout waiting for the + # confirmation while resetting the session. + accept_confirm do + visit("about:blank") + end end end From 6b18d4a60cc913a1adad7f23ba4df6b5c0fb1523 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 16 Jan 2020 11:20:24 +1100 Subject: [PATCH 4/4] Avoid false positives in specs When switching from one tab to another, a `have_no_selector` check could match because the new tab hasn't loaded yet. Now we use that check after we verified other content on the new tab. --- spec/features/admin/tag_rules_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/admin/tag_rules_spec.rb b/spec/features/admin/tag_rules_spec.rb index ffc2c1c065..ca53fb68a9 100644 --- a/spec/features/admin/tag_rules_spec.rb +++ b/spec/features/admin/tag_rules_spec.rb @@ -13,8 +13,8 @@ feature 'Tag Rules', js: true do it "allows creation of rules of each type" do # Creating a new tag - expect(page).to have_no_selector '.customer_tag' expect(page).to have_content 'No tags apply to this enterprise yet' + expect(page).to have_no_selector '.customer_tag' click_button '+ Add A New Tag' find(:css, "tags-input .tags input").set "volunteer\n"