1- import { test , expect } from '@/e2e/helper' ;
1+ import { expect , test } from '@/e2e/helper' ;
2+ import { http , HttpResponse } from 'msw' ;
23
34test . describe ( 'Acceptance | /accept-invite/:token' , { tag : '@acceptance' } , ( ) => {
45 test ( 'visiting to /accept-invite shows 404 page' , async ( { page } ) => {
@@ -23,44 +24,23 @@ test.describe('Acceptance | /accept-invite/:token', { tag: '@acceptance' }, () =
2324 ) ;
2425 } ) ;
2526
26- test ( 'shows error for expired token' , async ( { page, mirage } ) => {
27+ test ( 'shows error for expired token' , async ( { page, msw } ) => {
2728 let errorMessage =
2829 'The invitation to become an owner of the demo_crate crate expired. Please reach out to an owner of the crate to request a new invitation.' ;
29- await page . exposeBinding ( '_errorMessage' , ( ) => errorMessage ) ;
30- await mirage . addHook ( server => {
31- server . put (
32- '/api/v1/me/crate_owner_invitations/accept/:token' ,
33- async ( ) => {
34- let errorMessage = await globalThis . _errorMessage ( ) ;
35- let payload = { errors : [ { detail : errorMessage } ] } ;
36- return payload ;
37- } ,
38- 410 ,
39- ) ;
40- } ) ;
30+ let error = HttpResponse . json ( { errors : [ { detail : errorMessage } ] } , { status : 410 } ) ;
31+ await msw . worker . use ( http . put ( '/api/v1/me/crate_owner_invitations/accept/:token' , ( ) => error ) ) ;
4132
4233 await page . goto ( '/accept-invite/secret123' ) ;
4334 await expect ( page ) . toHaveURL ( '/accept-invite/secret123' ) ;
4435 await expect ( page . locator ( '[data-test-error-message]' ) ) . toHaveText ( errorMessage ) ;
4536 } ) ;
4637
47- test ( 'shows success for known token' , async ( { page, mirage, percy } ) => {
48- await mirage . addHook ( server => {
49- let inviter = server . create ( 'user' ) ;
50- let invitee = server . create ( 'user' ) ;
51- let crate = server . create ( 'crate' , { name : 'nanomsg' } ) ;
52- server . create ( 'version' , { crate } ) ;
53- let invite = server . create ( 'crate-owner-invitation' , { crate, invitee, inviter } ) ;
54-
55- globalThis . invite = invite ;
56- } ) ;
57-
58- // NOTE: Because the current implementation only works with the miragejs server running in the
59- // browser, we need to navigate to a random page to trigger the server startup and generate a
60- // token. This step will not be necessary in production or once we migrate the miragejs server
61- // to run in nodejs.
62- await page . goto ( `/accept-invite/123` ) ;
63- const invite = await page . evaluate ( ( ) => ( { token : globalThis . invite . token } ) ) ;
38+ test ( 'shows success for known token' , async ( { page, msw, percy } ) => {
39+ let inviter = msw . db . user . create ( ) ;
40+ let invitee = msw . db . user . create ( ) ;
41+ let crate = msw . db . crate . create ( { name : 'nanomsg' } ) ;
42+ msw . db . version . create ( { crate } ) ;
43+ let invite = msw . db . crateOwnerInvitation . create ( { crate, invitee, inviter } ) ;
6444
6545 await page . goto ( `/accept-invite/${ invite . token } ` ) ;
6646 await expect ( page ) . toHaveURL ( `/accept-invite/${ invite . token } ` ) ;
0 commit comments