@@ -13,13 +13,24 @@ import {
1313 testUsers ,
1414} from '../../helpers/auth/cognito-auth-helper' ;
1515import { TemplateMgmtCreateLetterPage } from '../../pages/letter/template-mgmt-create-letter-page' ;
16+ import { TemplateMgmtCreateLetterMissingCampaignClientIdPage } from '../../pages/letter/template-mgmt-create-letter-missing-campaign-client-id-page' ;
17+ import { loginAsUser } from '../../helpers/auth/login-as-user' ;
1618
1719test . describe ( 'Create Letter Template Page' , ( ) => {
1820 const templateStorageHelper = new TemplateStorageHelper ( ) ;
21+
1922 let user : TestUser ;
23+ let userWithoutClientId : TestUser ;
24+ let userWithoutCampaignId : TestUser ;
2025
2126 test . beforeAll ( async ( ) => {
2227 user = await createAuthHelper ( ) . getTestUser ( testUsers . User1 . userId ) ;
28+ userWithoutClientId = await createAuthHelper ( ) . getTestUser (
29+ testUsers . User6 . userId
30+ ) ;
31+ userWithoutCampaignId = await createAuthHelper ( ) . getTestUser (
32+ testUsers . User7 . userId
33+ ) ;
2334 } ) ;
2435
2536 test . afterAll ( async ( ) => {
@@ -157,4 +168,64 @@ test.describe('Create Letter Template Page', () => {
157168 await expect ( newTab ) . toHaveURL ( `${ baseURL } /${ url } ` ) ;
158169 } ) ;
159170 }
171+
172+ test . describe ( 'missing client or campaign ID error page' , ( ) => {
173+ test . use ( { storageState : { cookies : [ ] , origins : [ ] } } ) ;
174+
175+ test ( 'redirects to error page when campaign ID is missing' , async ( {
176+ page,
177+ baseURL,
178+ } ) => {
179+ await loginAsUser ( userWithoutCampaignId , page ) ;
180+
181+ const createTemplatePage = new TemplateMgmtCreateLetterPage ( page ) ;
182+ const missingClientOrCampaignIdErrorPage =
183+ new TemplateMgmtCreateLetterMissingCampaignClientIdPage ( page ) ;
184+
185+ await createTemplatePage . loadPage ( ) ;
186+
187+ await expect ( page ) . toHaveURL (
188+ `${ baseURL } /templates/${ TemplateMgmtCreateLetterMissingCampaignClientIdPage . pageUrlSegment } `
189+ ) ;
190+
191+ await assertMissingClientOrCampaignIdErrorPage (
192+ missingClientOrCampaignIdErrorPage
193+ ) ;
194+ } ) ;
195+
196+ test ( 'redirects to error page when client ID is missing' , async ( {
197+ page,
198+ baseURL,
199+ } ) => {
200+ await loginAsUser ( userWithoutClientId , page ) ;
201+
202+ const createTemplatePage = new TemplateMgmtCreateLetterPage ( page ) ;
203+ const missingClientOrCampaignIdErrorPage =
204+ new TemplateMgmtCreateLetterMissingCampaignClientIdPage ( page ) ;
205+
206+ createTemplatePage . loadPage ( ) ;
207+
208+ await expect ( page ) . toHaveURL (
209+ `${ baseURL } /templates/${ TemplateMgmtCreateLetterMissingCampaignClientIdPage . pageUrlSegment } `
210+ ) ;
211+
212+ await assertMissingClientOrCampaignIdErrorPage (
213+ missingClientOrCampaignIdErrorPage
214+ ) ;
215+ } ) ;
216+ } ) ;
217+
218+ const assertMissingClientOrCampaignIdErrorPage = async (
219+ page : TemplateMgmtCreateLetterMissingCampaignClientIdPage
220+ ) => {
221+ await expect ( page . heading ) . toHaveText (
222+ 'You cannot create letter templates yet'
223+ ) ;
224+ await expect ( page . errorDetailsInsetText ) . toHaveText (
225+ 'Account needs a client ID and campaign ID'
226+ ) ;
227+
228+ await expect ( page . goBackLink ) . toHaveText ( 'Go back' ) ;
229+ await expect ( page . goBackLink ) . toHaveAttribute ( 'href' , '/templates/choose-a-template-type' ) ;
230+ } ;
160231} ) ;
0 commit comments