From fb59a364b136ff84d5ea538bcd7ac2f9dc440742 Mon Sep 17 00:00:00 2001 From: Stefanni Brasil Date: Tue, 24 Feb 2026 11:33:30 -0700 Subject: [PATCH 1/5] Explicit text values and check for what user sees in the page Closes https://github.com/rubyforgood/casa/issues/6329 - fixes one factory creation (it was creating admin twice) - checks for explicit values in the page - avoids checking the database for changes, and checks for what the user sees when interacting with the page --- spec/system/court_dates/edit_spec.rb | 62 ++++++++++++++++------------ 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/spec/system/court_dates/edit_spec.rb b/spec/system/court_dates/edit_spec.rb index c9124870e2..718ef22972 100644 --- a/spec/system/court_dates/edit_spec.rb +++ b/spec/system/court_dates/edit_spec.rb @@ -4,29 +4,28 @@ RSpec.describe "court_dates/edit", type: :system do context "with date" - let(:now) { Date.new(2021, 1, 1) } let(:organization) { create(:casa_org) } let(:admin) { create(:casa_admin, casa_org: organization) } let(:volunteer) { create(:volunteer) } - let(:supervisor) { create(:casa_admin, casa_org: organization) } - let!(:casa_case) { create(:casa_case, casa_org: organization) } - let!(:court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: now - 1.week) } - let!(:future_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: now + 1.week) } + let(:supervisor) { create(:supervisor, casa_org: organization) } + let!(:casa_case) { create(:casa_case, case_number: 'CINA-08-1001', casa_org: organization) } + let!(:past_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: Date.new(2020, 12, 25)) } + let!(:future_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: Date.new(2021, 1, 8)) } before do - travel_to now + travel_to(Date.new(2021, 1, 1)) end context "as an admin" do before do sign_in admin visit casa_case_path(casa_case) - click_on court_date.date.strftime("%B %-d, %Y") + click_on "December 25, 2020" click_on "Edit" end it "shows court orders" do - court_order = court_date.case_court_orders.first + court_order = past_court_date.case_court_orders.first expect(page).to have_text(court_order.text) expect(page).to have_text(court_order.implementation_status.humanize) @@ -50,7 +49,7 @@ it "edits past court date", :js do expect(page).to have_text("Editing Court Date") expect(page).to have_text("Case Number:") - expect(page).to have_text(casa_case.case_number) + expect(page).to have_text('CINA-08-1001') expect(page).to have_text("Add Court Date") expect(page).to have_field("court_date_date", with: "2020-12-25") expect(page).to have_text("Add Court Report Due Date") @@ -66,41 +65,48 @@ within ".top-page-actions" do click_on "Update" end + expect(page).to have_text("Court Order Text One") end - it "can delete a future court date", :js do + it "allows deleting a future court date", :js do visit root_path click_on "Cases" - click_on casa_case.case_number + click_on 'CINA-08-1001' + + expect(page).to have_content("December 25, 2020") + expect(page).to have_content("January 8, 2021") - expect(CourtDate.count).to eq 2 - expect(page).to have_content future_court_date.date.strftime("%B %-d, %Y") - page.find("a", text: future_court_date.date.strftime("%B %-d, %Y")).click + page.find("a", text: "January 8, 2021").click accept_alert "Are you sure?" do page.find("a", text: "Delete Future Court Date").click end expect(page).to have_content "Court date was successfully deleted" - expect(CourtDate.count).to eq 1 + + expect(page).not_to have_content("January 8, 2021") + expect(page).to have_content("December 25, 2020") end end context "as a supervisor" do - it "can delete a future court date", :js do + it "allows deleting a future court date", :js do sign_in supervisor visit root_path click_on "Cases" - click_on casa_case.case_number + click_on 'CINA-08-1001' - expect(CourtDate.count).to eq 2 - expect(page).to have_content future_court_date.date.strftime("%B %-d, %Y") - page.find("a", text: future_court_date.date.strftime("%B %-d, %Y")).click - page.find("a", text: "Delete Future Court Date").click - page.driver.browser.switch_to.alert.accept + expect(page).to have_content("December 25, 2020") + expect(page).to have_content("January 8, 2021") + + page.find("a", text: "January 8, 2021").click + accept_alert "Are you sure?" do + page.find("a", text: "Delete Future Court Date").click + end expect(page).to have_content "Court date was successfully deleted." - expect(CourtDate.count).to eq 1 + expect(page).not_to have_content("January 8, 2021") + expect(page).to have_content("December 25, 2020") end end @@ -111,11 +117,13 @@ visit root_path click_on "Cases" - click_on casa_case.case_number + click_on 'CINA-08-1001' + + expect(page).to have_content("December 25, 2020") + expect(page).to have_content("January 8, 2021") + + page.find("a", text: "January 8, 2021").click - expect(CourtDate.count).to eq 2 - expect(page).to have_content future_court_date.date.strftime("%B %-d, %Y") - page.find("a", text: future_court_date.date.strftime("%B %-d, %Y")).click expect(page).not_to have_content "Delete Future Court Date" end end From 8c23b17abb0e3be73dfe581f56e2a18d883c5ef6 Mon Sep 17 00:00:00 2001 From: Stefanni Brasil Date: Tue, 24 Feb 2026 11:42:23 -0700 Subject: [PATCH 2/5] linter --- spec/system/court_dates/edit_spec.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/system/court_dates/edit_spec.rb b/spec/system/court_dates/edit_spec.rb index 718ef22972..3d8b8a3059 100644 --- a/spec/system/court_dates/edit_spec.rb +++ b/spec/system/court_dates/edit_spec.rb @@ -8,7 +8,7 @@ let(:admin) { create(:casa_admin, casa_org: organization) } let(:volunteer) { create(:volunteer) } let(:supervisor) { create(:supervisor, casa_org: organization) } - let!(:casa_case) { create(:casa_case, case_number: 'CINA-08-1001', casa_org: organization) } + let!(:casa_case) { create(:casa_case, case_number: "CINA-08-1001", casa_org: organization) } let!(:past_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: Date.new(2020, 12, 25)) } let!(:future_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: Date.new(2021, 1, 8)) } @@ -49,7 +49,7 @@ it "edits past court date", :js do expect(page).to have_text("Editing Court Date") expect(page).to have_text("Case Number:") - expect(page).to have_text('CINA-08-1001') + expect(page).to have_text("CINA-08-1001") expect(page).to have_text("Add Court Date") expect(page).to have_field("court_date_date", with: "2020-12-25") expect(page).to have_text("Add Court Report Due Date") @@ -72,7 +72,7 @@ it "allows deleting a future court date", :js do visit root_path click_on "Cases" - click_on 'CINA-08-1001' + click_on "CINA-08-1001" expect(page).to have_content("December 25, 2020") expect(page).to have_content("January 8, 2021") @@ -94,7 +94,7 @@ visit root_path click_on "Cases" - click_on 'CINA-08-1001' + click_on "CINA-08-1001" expect(page).to have_content("December 25, 2020") expect(page).to have_content("January 8, 2021") @@ -117,7 +117,7 @@ visit root_path click_on "Cases" - click_on 'CINA-08-1001' + click_on "CINA-08-1001" expect(page).to have_content("December 25, 2020") expect(page).to have_content("January 8, 2021") From 39ee5106d121a25f98a7384b4a480cdedccd2bf0 Mon Sep 17 00:00:00 2001 From: Stefanni Brasil Date: Wed, 25 Feb 2026 11:17:26 -0700 Subject: [PATCH 3/5] Code review request: revert explicit values to variables --- spec/system/court_dates/edit_spec.rb | 48 +++++++++++++--------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/spec/system/court_dates/edit_spec.rb b/spec/system/court_dates/edit_spec.rb index 3d8b8a3059..5ad4ece4eb 100644 --- a/spec/system/court_dates/edit_spec.rb +++ b/spec/system/court_dates/edit_spec.rb @@ -4,23 +4,24 @@ RSpec.describe "court_dates/edit", type: :system do context "with date" + let(:now) { Date.new(2021, 1, 1) } let(:organization) { create(:casa_org) } let(:admin) { create(:casa_admin, casa_org: organization) } let(:volunteer) { create(:volunteer) } let(:supervisor) { create(:supervisor, casa_org: organization) } let!(:casa_case) { create(:casa_case, case_number: "CINA-08-1001", casa_org: organization) } - let!(:past_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: Date.new(2020, 12, 25)) } - let!(:future_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: Date.new(2021, 1, 8)) } + let!(:past_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: (now - 1.week)) } + let!(:future_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: (now + 1.week)) } before do - travel_to(Date.new(2021, 1, 1)) + travel_to now end context "as an admin" do before do sign_in admin visit casa_case_path(casa_case) - click_on "December 25, 2020" + click_on past_court_date.date.strftime("%B %-d, %Y") click_on "Edit" end @@ -49,7 +50,7 @@ it "edits past court date", :js do expect(page).to have_text("Editing Court Date") expect(page).to have_text("Case Number:") - expect(page).to have_text("CINA-08-1001") + expect(page).to have_text(casa_case.case_number) expect(page).to have_text("Add Court Date") expect(page).to have_field("court_date_date", with: "2020-12-25") expect(page).to have_text("Add Court Report Due Date") @@ -72,19 +73,18 @@ it "allows deleting a future court date", :js do visit root_path click_on "Cases" - click_on "CINA-08-1001" + click_on casa_case.case_number - expect(page).to have_content("December 25, 2020") - expect(page).to have_content("January 8, 2021") - - page.find("a", text: "January 8, 2021").click + expect(page).to have_content past_court_date.date.strftime("%B %-d, %Y") + expect(page).to have_content future_court_date.date.strftime("%B %-d, %Y") + page.find("a", text: future_court_date.date.strftime("%B %-d, %Y")).click accept_alert "Are you sure?" do page.find("a", text: "Delete Future Court Date").click end expect(page).to have_content "Court date was successfully deleted" - expect(page).not_to have_content("January 8, 2021") - expect(page).to have_content("December 25, 2020") + expect(page).to have_content past_court_date.date.strftime("%B %-d, %Y") + expect(page).not_to have_content future_court_date.date.strftime("%B %-d, %Y") end end @@ -94,35 +94,33 @@ visit root_path click_on "Cases" - click_on "CINA-08-1001" - - expect(page).to have_content("December 25, 2020") - expect(page).to have_content("January 8, 2021") + click_on casa_case.case_number - page.find("a", text: "January 8, 2021").click + expect(page).to have_content past_court_date.date.strftime("%B %-d, %Y") + expect(page).to have_content future_court_date.date.strftime("%B %-d, %Y") + page.find("a", text: future_court_date.date.strftime("%B %-d, %Y")).click accept_alert "Are you sure?" do page.find("a", text: "Delete Future Court Date").click end expect(page).to have_content "Court date was successfully deleted." - expect(page).not_to have_content("January 8, 2021") - expect(page).to have_content("December 25, 2020") + expect(page).to have_content past_court_date.date.strftime("%B %-d, %Y") + expect(page).not_to have_content future_court_date.date.strftime("%B %-d, %Y") end end context "as a volunteer" do - it "can't delete a future court date as volunteer", :js do + it "does not allow deleting a future court date", :js do volunteer.casa_cases = [casa_case] sign_in volunteer visit root_path click_on "Cases" - click_on "CINA-08-1001" - - expect(page).to have_content("December 25, 2020") - expect(page).to have_content("January 8, 2021") + click_on casa_case.case_number - page.find("a", text: "January 8, 2021").click + expect(page).to have_content past_court_date.date.strftime("%B %-d, %Y") + expect(page).to have_content future_court_date.date.strftime("%B %-d, %Y") + page.find("a", text: future_court_date.date.strftime("%B %-d, %Y")).click expect(page).not_to have_content "Delete Future Court Date" end From d2083b1011a26306cb964842cf2b24511c5619f9 Mon Sep 17 00:00:00 2001 From: Stefanni Brasil Date: Wed, 25 Feb 2026 11:19:26 -0700 Subject: [PATCH 4/5] Remove unused context --- spec/system/court_dates/edit_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/system/court_dates/edit_spec.rb b/spec/system/court_dates/edit_spec.rb index 5ad4ece4eb..d95355ac51 100644 --- a/spec/system/court_dates/edit_spec.rb +++ b/spec/system/court_dates/edit_spec.rb @@ -3,7 +3,6 @@ require "rails_helper" RSpec.describe "court_dates/edit", type: :system do - context "with date" let(:now) { Date.new(2021, 1, 1) } let(:organization) { create(:casa_org) } let(:admin) { create(:casa_admin, casa_org: organization) } From 398eac2df38db99bd776790d066a3ae7af330b75 Mon Sep 17 00:00:00 2001 From: Stefanni Brasil Date: Wed, 25 Feb 2026 11:22:32 -0700 Subject: [PATCH 5/5] revert back to before --- spec/system/court_dates/edit_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/system/court_dates/edit_spec.rb b/spec/system/court_dates/edit_spec.rb index d95355ac51..11fe3a78ed 100644 --- a/spec/system/court_dates/edit_spec.rb +++ b/spec/system/court_dates/edit_spec.rb @@ -8,9 +8,9 @@ let(:admin) { create(:casa_admin, casa_org: organization) } let(:volunteer) { create(:volunteer) } let(:supervisor) { create(:supervisor, casa_org: organization) } - let!(:casa_case) { create(:casa_case, case_number: "CINA-08-1001", casa_org: organization) } - let!(:past_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: (now - 1.week)) } - let!(:future_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: (now + 1.week)) } + let!(:casa_case) { create(:casa_case, casa_org: organization) } + let!(:past_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: now - 1.week) } + let!(:future_court_date) { create(:court_date, :with_court_details, casa_case: casa_case, date: now + 1.week) } before do travel_to now