From 70b226945d80f7546cd0593c08484e4e43b26deb Mon Sep 17 00:00:00 2001 From: JackRyan1989 Date: Fri, 27 Oct 2023 22:15:46 -0400 Subject: [PATCH 1/5] changelog: Internal, In-Person Proofing, Fix intermittent test failure --- app/models/in_person_enrollment.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/in_person_enrollment.rb b/app/models/in_person_enrollment.rb index 313a133d6fa..d3c63609ede 100644 --- a/app/models/in_person_enrollment.rb +++ b/app/models/in_person_enrollment.rb @@ -136,8 +136,8 @@ def due_date end def days_to_due_date - today = DateTime.now - (today...due_date).count + today = Time.zone.now.utc + (((due_date - today) / 3600) / 24).to_i end def eligible_for_notification? From fa67fbb33c8d34891e694e25f204ad72300e094e Mon Sep 17 00:00:00 2001 From: JackRyan1989 Date: Mon, 30 Oct 2023 11:55:33 -0400 Subject: [PATCH 2/5] Adding specs to confirm date calculation for ipp enrollment --- app/models/in_person_enrollment.rb | 2 +- spec/models/in_person_enrollment_spec.rb | 35 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/models/in_person_enrollment.rb b/app/models/in_person_enrollment.rb index d3c63609ede..7903768ffdb 100644 --- a/app/models/in_person_enrollment.rb +++ b/app/models/in_person_enrollment.rb @@ -137,7 +137,7 @@ def due_date def days_to_due_date today = Time.zone.now.utc - (((due_date - today) / 3600) / 24).to_i + (due_date - today).seconds.in_days.to_i end def eligible_for_notification? diff --git a/spec/models/in_person_enrollment_spec.rb b/spec/models/in_person_enrollment_spec.rb index 1d2bd5ac76b..cecce06a16e 100644 --- a/spec/models/in_person_enrollment_spec.rb +++ b/spec/models/in_person_enrollment_spec.rb @@ -417,6 +417,41 @@ expect(enrollment.days_to_due_date).to eq(validity_in_days - days_ago_established_at) end end + + context 'check edges to confirm date calculation is correct' do + it 'returns the correct due date and days to due date with 1 day left' do + freeze_time do + enrollment = create( + :in_person_enrollment, + enrollment_established_at: Time.zone.now - 9.days, + ) + expect(enrollment.days_to_due_date).to eq(1) + expect(enrollment.due_date).to eq(Time.zone.now + 1.day) + end + end + + it 'returns the correct due date and days to due date with 0.5 days left' do + freeze_time do + enrollment = create( + :in_person_enrollment, + enrollment_established_at: Time.zone.now - 9.5.days, + ) + expect(enrollment.days_to_due_date).to eq(0) + expect(enrollment.due_date).to eq(Time.zone.now + 0.5.days) + end + end + + it 'returns the correct due date and days to due date with 0 days left' do + freeze_time do + enrollment = create( + :in_person_enrollment, + enrollment_established_at: Time.zone.now - 10.days, + ) + expect(enrollment.days_to_due_date).to eq(0) + expect(enrollment.due_date).to eq(Time.zone.now) + end + end + end end describe 'eligible_for_notification?' do From b0fcb1847acc2ffb8b212e7cc55b54e339b71de5 Mon Sep 17 00:00:00 2001 From: JackRyan1989 Date: Mon, 30 Oct 2023 16:29:12 -0400 Subject: [PATCH 3/5] adding let blocks to clarify dates --- spec/models/in_person_enrollment_spec.rb | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/spec/models/in_person_enrollment_spec.rb b/spec/models/in_person_enrollment_spec.rb index cecce06a16e..3aef3b77d11 100644 --- a/spec/models/in_person_enrollment_spec.rb +++ b/spec/models/in_person_enrollment_spec.rb @@ -387,6 +387,10 @@ describe 'due_date and days_to_due_date' do let(:validity_in_days) { 10 } let(:days_ago_established_at) { 7 } + let(:today) { Time.zone.now } + let(:nine_days_ago) { today - 9.days } + let(:nine_and_a_half_days_ago) { today - 9.5.days } + let(:ten_days_ago) { today - 10.days } before do allow(IdentityConfig.store). @@ -423,10 +427,10 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: Time.zone.now - 9.days, + enrollment_established_at: nine_days_ago, ) expect(enrollment.days_to_due_date).to eq(1) - expect(enrollment.due_date).to eq(Time.zone.now + 1.day) + expect(enrollment.due_date).to eq(today + 1.day) end end @@ -434,10 +438,10 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: Time.zone.now - 9.5.days, + enrollment_established_at: nine_and_a_half_days_ago, ) expect(enrollment.days_to_due_date).to eq(0) - expect(enrollment.due_date).to eq(Time.zone.now + 0.5.days) + expect(enrollment.due_date).to eq(today + 0.5.days) end end @@ -445,10 +449,10 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: Time.zone.now - 10.days, + enrollment_established_at: ten_days_ago, ) expect(enrollment.days_to_due_date).to eq(0) - expect(enrollment.due_date).to eq(Time.zone.now) + expect(enrollment.due_date).to eq(today) end end end From fcc325b4b8a277e20c90fcfd6522f164490f61b5 Mon Sep 17 00:00:00 2001 From: JackRyan1989 Date: Tue, 31 Oct 2023 11:26:16 -0400 Subject: [PATCH 4/5] duration checks use configuration values now --- spec/models/in_person_enrollment_spec.rb | 32 ++++++++++++++---------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/spec/models/in_person_enrollment_spec.rb b/spec/models/in_person_enrollment_spec.rb index 3aef3b77d11..3477fe1225c 100644 --- a/spec/models/in_person_enrollment_spec.rb +++ b/spec/models/in_person_enrollment_spec.rb @@ -387,10 +387,10 @@ describe 'due_date and days_to_due_date' do let(:validity_in_days) { 10 } let(:days_ago_established_at) { 7 } - let(:today) { Time.zone.now } - let(:nine_days_ago) { today - 9.days } - let(:nine_and_a_half_days_ago) { today - 9.5.days } - let(:ten_days_ago) { today - 10.days } + let(:today) { 0 } + let(:nine) { 9 } + let(:nine_and_a_half) { 9.5 } + let(:ten) { 10 } before do allow(IdentityConfig.store). @@ -427,10 +427,12 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: nine_days_ago, + enrollment_established_at: nine.days.ago, ) - expect(enrollment.days_to_due_date).to eq(1) - expect(enrollment.due_date).to eq(today + 1.day) + expect(enrollment.days_to_due_date).to eq((validity_in_days - nine).to_i) + expect(enrollment.due_date).to( + eq((validity_in_days - nine).days.from_now), + ) end end @@ -438,10 +440,12 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: nine_and_a_half_days_ago, + enrollment_established_at: nine_and_a_half.days.ago, ) - expect(enrollment.days_to_due_date).to eq(0) - expect(enrollment.due_date).to eq(today + 0.5.days) + expect(enrollment.days_to_due_date).to eq((validity_in_days - nine_and_a_half).to_i) + expect(enrollment.due_date).to( + eq((validity_in_days - nine_and_a_half).days.from_now), + ) end end @@ -449,10 +453,12 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: ten_days_ago, + enrollment_established_at: ten.days.ago, ) - expect(enrollment.days_to_due_date).to eq(0) - expect(enrollment.due_date).to eq(today) + expect(enrollment.days_to_due_date).to eq((validity_in_days - ten).to_i) + expect(enrollment.due_date).to( + eq((validity_in_days - ten).days.from_now), + ) end end end From 6e3154f18acd2df3bc831def5ca3e751f7122ea8 Mon Sep 17 00:00:00 2001 From: JackRyan1989 Date: Tue, 31 Oct 2023 15:50:31 -0400 Subject: [PATCH 5/5] Updating spec to use validity in days from config --- spec/models/in_person_enrollment_spec.rb | 37 ++++++++++-------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/spec/models/in_person_enrollment_spec.rb b/spec/models/in_person_enrollment_spec.rb index 3477fe1225c..92185c925fd 100644 --- a/spec/models/in_person_enrollment_spec.rb +++ b/spec/models/in_person_enrollment_spec.rb @@ -386,11 +386,6 @@ describe 'due_date and days_to_due_date' do let(:validity_in_days) { 10 } - let(:days_ago_established_at) { 7 } - let(:today) { 0 } - let(:nine) { 9 } - let(:nine_and_a_half) { 9.5 } - let(:ten) { 10 } before do allow(IdentityConfig.store). @@ -404,10 +399,10 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: days_ago_established_at.days.ago, + enrollment_established_at: (validity_in_days - 3).days.ago, ) expect(enrollment.due_date).to( - eq((validity_in_days - days_ago_established_at).days.from_now), + eq(3.days.from_now), ) end end @@ -416,9 +411,9 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: days_ago_established_at.days.ago, + enrollment_established_at: (validity_in_days - 3).days.ago, ) - expect(enrollment.days_to_due_date).to eq(validity_in_days - days_ago_established_at) + expect(enrollment.days_to_due_date).to eq(3) end end @@ -427,12 +422,12 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: nine.days.ago, + enrollment_established_at: (validity_in_days - 1).days.ago, ) - expect(enrollment.days_to_due_date).to eq((validity_in_days - nine).to_i) + expect(enrollment.days_to_due_date).to eq(1) expect(enrollment.due_date).to( - eq((validity_in_days - nine).days.from_now), - ) + eq(Time.zone.now + 1.day), + ) end end @@ -440,12 +435,12 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: nine_and_a_half.days.ago, + enrollment_established_at: (validity_in_days - 0.5).days.ago, ) - expect(enrollment.days_to_due_date).to eq((validity_in_days - nine_and_a_half).to_i) + expect(enrollment.days_to_due_date).to eq(0) expect(enrollment.due_date).to( - eq((validity_in_days - nine_and_a_half).days.from_now), - ) + eq(Time.zone.now + 0.5.days), + ) end end @@ -453,12 +448,12 @@ freeze_time do enrollment = create( :in_person_enrollment, - enrollment_established_at: ten.days.ago, + enrollment_established_at: validity_in_days.days.ago, ) - expect(enrollment.days_to_due_date).to eq((validity_in_days - ten).to_i) + expect(enrollment.days_to_due_date).to eq(0) expect(enrollment.due_date).to( - eq((validity_in_days - ten).days.from_now), - ) + eq(Time.zone.now), + ) end end end