From eda773791756f9ce5d97fcdfa3974e0c8591d36b Mon Sep 17 00:00:00 2001 From: Alex Saunders Date: Thu, 16 Jan 2025 11:50:42 +0000 Subject: [PATCH] MLPAB-2637 MLPAB-2637 add track progress button to dashboard when paid or paying --- cypress/e2e/donor/dashboard.cy.js | 39 ++++++++++++++++++++++++++ internal/lpastore/lpa.go | 2 ++ internal/lpastore/lpadata/lpa.go | 4 +++ internal/lpastore/resolving_service.go | 1 + web/template/dashboard.gohtml | 6 ++++ 5 files changed, 52 insertions(+) diff --git a/cypress/e2e/donor/dashboard.cy.js b/cypress/e2e/donor/dashboard.cy.js index 746aab9816..7a15adb53e 100644 --- a/cypress/e2e/donor/dashboard.cy.js +++ b/cypress/e2e/donor/dashboard.cy.js @@ -23,6 +23,45 @@ describe('Dashboard', () => { }); }) + context('when payment task started', () => { + it('LPAs have a track progress button', () => { + cy.visit('/fixtures?redirect=/task-list&progress=checkAndSendToYourCertificateProvider'); + + cy.contains('a', 'Pay for the LPA').click() + cy.contains('a', 'Continue').click() + cy.get('input[name="yes-no"]').check('yes', { force: true }); + cy.contains('button', 'Save and continue').click() + + cy.contains('a', 'Manage your LPAs').click() + + cy.get('button').should('not.contain', 'Continue'); + + cy.contains('Property and affairs'); + cy.contains('Sam Smith'); + cy.contains('strong', 'In progress'); + cy.contains('a', 'Go to task list'); + cy.contains('a', 'Delete LPA'); + cy.contains('a', 'Check LPA progress').click(); + + cy.url().should('contain', '/progress'); + }); + }); + + context('when paid', () => { + it('LPAs have a track progress button', () => { + cy.visit('/fixtures?redirect=&progress=payForTheLpa'); + + cy.contains('Property and affairs'); + cy.contains('Sam Smith'); + cy.contains('strong', 'In progress'); + cy.contains('a', 'Go to task list'); + cy.contains('a', 'Delete LPA'); + cy.contains('a', 'Check LPA progress').click(); + + cy.url().should('contain', '/progress'); + }); + }); + context('with submitted LPA', () => { it('completed LPAs have a track progress button', () => { Cypress.on('uncaught:exception', () => { diff --git a/internal/lpastore/lpa.go b/internal/lpastore/lpa.go index 789f43fbe8..f11c736027 100644 --- a/internal/lpastore/lpa.go +++ b/internal/lpastore/lpa.go @@ -448,6 +448,8 @@ func LpaFromDonorProvided(l *donordata.Provided) *lpadata.Lpa { Email: l.Correspondent.Email, Address: l.Correspondent.Address, }, + PaymentInProgress: !l.Tasks.PayForLpa.IsCompleted() && !l.Tasks.PayForLpa.IsNotStarted(), + Paid: l.Tasks.PayForLpa.IsCompleted(), } for _, a := range l.Attorneys.Attorneys { diff --git a/internal/lpastore/lpadata/lpa.go b/internal/lpastore/lpadata/lpa.go index b443ecbef9..67e45f5448 100644 --- a/internal/lpastore/lpadata/lpa.go +++ b/internal/lpastore/lpadata/lpa.go @@ -61,6 +61,10 @@ type Lpa struct { // lpa-store the application payment must be complete. Paid bool + // PaymentInProgress is set if the donor has started the payment task for online + // applications and is always false for paper applications as they have already paid. + PaymentInProgress bool + // IsOrganisationDonor is set to true when the Lpa is being made by a // supporter working for an organisation. IsOrganisationDonor bool diff --git a/internal/lpastore/resolving_service.go b/internal/lpastore/resolving_service.go index 851338723a..8adad65bec 100644 --- a/internal/lpastore/resolving_service.go +++ b/internal/lpastore/resolving_service.go @@ -103,6 +103,7 @@ func (s *ResolvingService) merge(lpa *lpadata.Lpa, donor *donordata.Provided) *l lpa.Donor.Channel = lpadata.ChannelPaper } else { lpa.Drafted = donor.Tasks.CheckYourLpa.IsCompleted() + lpa.PaymentInProgress = !donor.Tasks.PayForLpa.IsCompleted() && !donor.Tasks.PayForLpa.IsNotStarted() lpa.Paid = donor.Tasks.PayForLpa.IsCompleted() _, lpa.IsOrganisationDonor = donor.SK.Organisation() diff --git a/web/template/dashboard.gohtml b/web/template/dashboard.gohtml index 20f960a775..59edd7cf16 100644 --- a/web/template/dashboard.gohtml +++ b/web/template/dashboard.gohtml @@ -75,6 +75,12 @@ {{ tr .App "trackLpaProgress" }} {{ tr .App "withdrawLpa" }} + {{ else if or .Item.Lpa.PaymentInProgress .Item.Lpa.Paid }} +
+ {{ tr .App "goToTaskList" }} + {{ tr .App "trackLpaProgress" }} + {{ tr .App "deleteLpa" }} +
{{ else }}
{{ tr .App "goToTaskList" }}