1+ import { defer } from '@/e2e/deferred' ;
12import { expect , test } from '@/e2e/helper' ;
3+ import { http , HttpResponse } from 'msw' ;
24
35test . describe ( 'Acceptance | publish notifications' , { tag : '@acceptance' } , ( ) => {
4- test ( 'unsubscribe and resubscribe' , async ( { page, mirage } ) => {
5- await mirage . addHook ( server => {
6- let user = server . create ( 'user' ) ;
7- globalThis . user = user ;
8- authenticateAs ( user ) ;
9- } ) ;
6+ test ( 'unsubscribe and resubscribe' , async ( { page, msw } ) => {
7+ let user = msw . db . user . create ( ) ;
8+ msw . authenticateAs ( user ) ;
109
1110 await page . goto ( '/settings/profile' ) ;
1211 await expect ( page ) . toHaveURL ( '/settings/profile' ) ;
@@ -16,24 +15,23 @@ test.describe('Acceptance | publish notifications', { tag: '@acceptance' }, () =
1615 await expect ( page . locator ( '[data-test-notifications] input[type=checkbox]' ) ) . not . toBeChecked ( ) ;
1716
1817 await page . click ( '[data-test-notifications] button' ) ;
19- await page . waitForFunction ( ( ) => globalThis . user . reload ( ) . publishNotifications === false ) ;
18+ user = msw . db . user . findFirst ( { where : { id : { equals : user . id } } } ) ;
19+ expect ( user . publishNotifications ) . toBe ( false ) ;
2020
2121 await page . click ( '[data-test-notifications] input[type=checkbox]' ) ;
2222 await expect ( page . locator ( '[data-test-notifications] input[type=checkbox]' ) ) . toBeChecked ( ) ;
2323
2424 await page . click ( '[data-test-notifications] button' ) ;
25- await page . waitForFunction ( ( ) => globalThis . user . reload ( ) . publishNotifications === true ) ;
25+ user = msw . db . user . findFirst ( { where : { id : { equals : user . id } } } ) ;
26+ expect ( user . publishNotifications ) . toBe ( true ) ;
2627 } ) ;
2728
28- test ( 'loading state' , async ( { page, mirage } ) => {
29- await mirage . addHook ( server => {
30- let user = server . create ( 'user' ) ;
31- authenticateAs ( user ) ;
32- globalThis . user = user ;
29+ test ( 'loading state' , async ( { page, msw } ) => {
30+ let user = msw . db . user . create ( ) ;
31+ msw . authenticateAs ( user ) ;
3332
34- globalThis . deferred = require ( 'rsvp' ) . defer ( ) ;
35- server . put ( '/api/v1/users/:user_id' , globalThis . deferred . promise ) ;
36- } ) ;
33+ let deferred = defer ( ) ;
34+ msw . worker . use ( http . put ( '/api/v1/users/:user_id' , ( ) => deferred . promise ) ) ;
3735
3836 await page . goto ( '/settings/profile' ) ;
3937 await expect ( page ) . toHaveURL ( '/settings/profile' ) ;
@@ -44,20 +42,16 @@ test.describe('Acceptance | publish notifications', { tag: '@acceptance' }, () =
4442 await expect ( page . locator ( '[data-test-notifications] input[type=checkbox]' ) ) . toBeDisabled ( ) ;
4543 await expect ( page . locator ( '[data-test-notifications] button' ) ) . toBeDisabled ( ) ;
4644
47- await page . evaluate ( async ( ) => globalThis . deferred . resolve ( ) ) ;
45+ deferred . resolve ( ) ;
4846 await expect ( page . locator ( '[data-test-notifications] [data-test-spinner]' ) ) . not . toBeVisible ( ) ;
4947 await expect ( page . locator ( '[data-test-notification-message="error"]' ) ) . not . toBeVisible ( ) ;
5048 } ) ;
5149
52- test ( 'error state' , async ( { page, mirage } ) => {
53- await mirage . addHook ( server => {
54- server . logging = true ;
55- let user = server . create ( 'user' ) ;
56- authenticateAs ( user ) ;
57- globalThis . user = user ;
50+ test ( 'error state' , async ( { page, msw } ) => {
51+ let user = msw . db . user . create ( ) ;
52+ msw . authenticateAs ( user ) ;
5853
59- server . put ( '/api/v1/users/:user_id' , '' , 500 ) ;
60- } ) ;
54+ msw . worker . use ( http . put ( '/api/v1/users/:user_id' , ( ) => HttpResponse . text ( '' , { status : 500 } ) ) ) ;
6155
6256 await page . goto ( '/settings/profile' ) ;
6357 await expect ( page ) . toHaveURL ( '/settings/profile' ) ;
0 commit comments