@@ -2,33 +2,32 @@ import { test, expect } from '@/e2e/helper';
22import { format } from 'date-fns/format' ;
33
44test . describe ( 'Acceptance | sudo' , { tag : '@acceptance' } , ( ) => {
5- test . beforeEach ( async ( { mirage } ) => {
6- await mirage . addHook ( server => {
7- const isAdmin = globalThis . isAdmin ;
8- const user = server . create ( 'user' , {
9- login : 'johnnydee' ,
10- name : 'John Doe' ,
11- 12- avatar : 'https://avatars2.githubusercontent.com/u/1234567?v=4' ,
13- isAdmin,
14- } ) ;
15-
16- const crate = server . create ( 'crate' , {
17- name : 'foo' ,
18- newest_version : '0.1.0' ,
19- } ) ;
20-
21- const version = server . create ( 'version' , {
22- crate,
23- num : '0.1.0' ,
24- } ) ;
25-
26- authenticateAs ( user ) ;
5+ function prepare ( msw , { isAdmin = false } = { } ) {
6+ let user = msw . db . user . create ( {
7+ login : 'johnnydee' ,
8+ name : 'John Doe' ,
9+ 10+ avatar : 'https://avatars2.githubusercontent.com/u/1234567?v=4' ,
11+ isAdmin,
12+ } ) ;
13+
14+ let crate = msw . db . crate . create ( {
15+ name : 'foo' ,
16+ newest_version : '0.1.0' ,
17+ } ) ;
18+
19+ let version = msw . db . version . create ( {
20+ crate,
21+ num : '0.1.0' ,
2722 } ) ;
28- } ) ;
2923
30- test ( 'non-admin users do not see any controls' , async ( { page } ) => {
31- await page . addInitScript ( ( ) => ( globalThis . isAdmin = false ) ) ;
24+ msw . authenticateAs ( user ) ;
25+
26+ return { user, crate, version } ;
27+ }
28+
29+ test ( 'non-admin users do not see any controls' , async ( { page, msw } ) => {
30+ prepare ( msw ) ;
3231
3332 await page . goto ( '/crates/foo/versions' ) ;
3433
@@ -41,8 +40,8 @@ test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
4140 await expect ( page . locator ( '[data-test-version-yank-button="0.1.0"]' ) ) . toHaveCount ( 0 ) ;
4241 } ) ;
4342
44- test ( 'admin user is not initially in sudo mode' , async ( { page } ) => {
45- await page . addInitScript ( ( ) => ( globalThis . isAdmin = true ) ) ;
43+ test ( 'admin user is not initially in sudo mode' , async ( { page, msw } ) => {
44+ prepare ( msw , { isAdmin : true } ) ;
4645
4746 await page . goto ( '/crates/foo/versions' ) ;
4847
@@ -64,8 +63,8 @@ test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
6463 await expect ( page . locator ( '[data-test-version-yank-button="0.1.0"]' ) ) . toBeVisible ( ) ;
6564 } ) ;
6665
67- test ( 'admin user can enter sudo mode' , async ( { page } ) => {
68- await page . addInitScript ( ( ) => ( globalThis . isAdmin = true ) ) ;
66+ test ( 'admin user can enter sudo mode' , async ( { page, msw } ) => {
67+ prepare ( msw , { isAdmin : true } ) ;
6968 await page . exposeFunction ( 'format' , ( ( date , options ) => format ( date , options ) ) as typeof format ) ;
7069
7170 await page . goto ( '/crates/foo/versions' ) ;
@@ -99,8 +98,8 @@ test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
9998 await expect ( page . locator ( '[data-test-version-yank-button="0.1.0"]' ) ) . toBeVisible ( ) ;
10099 } ) ;
101100
102- test ( 'admin can yank a crate in sudo mode' , async ( { page } ) => {
103- await page . addInitScript ( ( ) => ( globalThis . isAdmin = true ) ) ;
101+ test ( 'admin can yank a crate in sudo mode' , async ( { page, msw } ) => {
102+ let { version } = prepare ( msw , { isAdmin : true } ) ;
104103
105104 await page . goto ( '/crates/foo/versions' ) ;
106105
@@ -113,21 +112,15 @@ test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
113112 await yankButton . click ( ) ;
114113
115114 // Verify backend state after yanking
116- const yankedVersion = await page . evaluate ( ( ) => {
117- const crate = server . schema [ 'crates' ] . findBy ( { name : 'foo' } ) ;
118- return server . schema [ 'versions' ] . findBy ( { crateId : crate . id , num : '0.1.0' , yanked : true } ) ;
119- } ) ;
120- expect ( yankedVersion , 'The version should be yanked' ) . toBeTruthy ( ) ;
115+ version = msw . db . version . findFirst ( { where : { id : { equals : version . id } } } ) ;
116+ expect ( version . yanked , 'The version should be yanked' ) . toBe ( true ) ;
121117
122118 await expect ( unyankButton ) . toBeVisible ( ) ;
123119 await unyankButton . click ( ) ;
124120
125121 // Verify backend state after unyanking
126- const unyankedVersion = await page . evaluate ( ( ) => {
127- const crate = server . schema [ 'crates' ] . findBy ( { name : 'foo' } ) ;
128- return server . schema [ 'versions' ] . findBy ( { crateId : crate . id , num : '0.1.0' , yanked : false } ) ;
129- } ) ;
130- expect ( unyankedVersion , 'The version should be unyanked' ) . toBeTruthy ( ) ;
122+ version = msw . db . version . findFirst ( { where : { id : { equals : version . id } } } ) ;
123+ expect ( version . yanked , 'The version should be unyanked' ) . toBe ( false ) ;
131124
132125 await expect ( yankButton ) . toBeVisible ( ) ;
133126 } ) ;
0 commit comments