@@ -60,7 +60,39 @@ describe('UserEditor', () => {
6060 */
6161 const mockSaveUser = vi . fn ( ) ;
6262
63- it ( 'Update settings with slurm runner backend - success' , async ( ) => {
63+ it ( 'Update settings with slurm_sudo runner backend - success' , async ( ) => {
64+ const mockRequest = /** @type {import('vitest').Mock } */ ( fetch )
65+ . mockResolvedValueOnce ( {
66+ ok : true ,
67+ status : 200 ,
68+ // mock profile
69+ json : ( ) => new Promise ( ( resolve ) => resolve ( { id : 1 , resource_id : 1 } ) )
70+ } )
71+ . mockResolvedValueOnce ( {
72+ ok : true ,
73+ status : 200 ,
74+ // mock resources
75+ json : ( ) => new Promise ( ( resolve ) => resolve ( [ { id : 1 } ] ) )
76+ } )
77+ . mockResolvedValueOnce ( {
78+ ok : true ,
79+ status : 200 ,
80+ // mock profiles
81+ json : ( ) => new Promise ( ( resolve ) => resolve ( [ { id : 1 } ] ) )
82+ } )
83+ . mockResolvedValueOnce ( {
84+ ok : true ,
85+ status : 200 ,
86+ json : ( ) =>
87+ new Promise ( ( resolve ) =>
88+ resolve ( {
89+ ...initialSettings ,
90+ slurm_user : 'user' ,
91+ project_dir : '/path/to/project/dir'
92+ } )
93+ )
94+ } ) ;
95+
6496 const user = userEvent . setup ( ) ;
6597
6698 render ( UserEditor , {
@@ -72,19 +104,6 @@ describe('UserEditor', () => {
72104 }
73105 } ) ;
74106
75- const mockRequest = /** @type {import('vitest').Mock } */ ( fetch ) . mockResolvedValue ( {
76- ok : true ,
77- status : 200 ,
78- json : ( ) =>
79- new Promise ( ( resolve ) =>
80- resolve ( {
81- ...initialSettings ,
82- slurm_user : 'user' ,
83- project_dir : '/path/to/project/dir'
84- } )
85- )
86- } ) ;
87-
88107 await user . type ( screen . getByRole ( 'textbox' , { name : 'Project dir' } ) , '/path/to/project/dir' ) ;
89108 await user . type ( screen . getByRole ( 'textbox' , { name : 'SLURM user' } ) , 'user' ) ;
90109 await user . click ( screen . getByRole ( 'button' , { name : 'Save' } ) ) ;
@@ -108,6 +127,42 @@ describe('UserEditor', () => {
108127 } ) ;
109128
110129 it ( 'Update settings with slurm_sudo runner backend - validation error' , async ( ) => {
130+ const mockRequest = /** @type {import('vitest').Mock } */ ( fetch )
131+ . mockResolvedValueOnce ( {
132+ ok : true ,
133+ status : 200 ,
134+ // mock profile
135+ json : ( ) => new Promise ( ( resolve ) => resolve ( { id : 1 , resource_id : 1 } ) )
136+ } )
137+ . mockResolvedValueOnce ( {
138+ ok : true ,
139+ status : 200 ,
140+ // mock resources
141+ json : ( ) => new Promise ( ( resolve ) => resolve ( [ { id : 1 } ] ) )
142+ } )
143+ . mockResolvedValueOnce ( {
144+ ok : true ,
145+ status : 200 ,
146+ // mock profiles
147+ json : ( ) => new Promise ( ( resolve ) => resolve ( [ { id : 1 } ] ) )
148+ } )
149+ . mockResolvedValue ( {
150+ ok : false ,
151+ status : 422 ,
152+ json : ( ) =>
153+ new Promise ( ( resolve ) =>
154+ resolve ( {
155+ detail : [
156+ {
157+ loc : [ 'body' , 'project_dir' ] ,
158+ msg : 'mocked_error' ,
159+ type : 'value_error'
160+ }
161+ ]
162+ } )
163+ )
164+ } ) ;
165+
111166 const user = userEvent . setup ( ) ;
112167
113168 render ( UserEditor , {
@@ -119,23 +174,6 @@ describe('UserEditor', () => {
119174 }
120175 } ) ;
121176
122- const mockRequest = /** @type {import('vitest').Mock } */ ( fetch ) . mockResolvedValue ( {
123- ok : false ,
124- status : 422 ,
125- json : ( ) =>
126- new Promise ( ( resolve ) =>
127- resolve ( {
128- detail : [
129- {
130- loc : [ 'body' , 'project_dir' ] ,
131- msg : 'mocked_error' ,
132- type : 'value_error'
133- }
134- ]
135- } )
136- )
137- } ) ;
138-
139177 await user . type ( screen . getByRole ( 'textbox' , { name : 'Project dir' } ) , 'xxx' ) ;
140178 await user . click ( screen . getByRole ( 'button' , { name : 'Save' } ) ) ;
141179 await screen . findByText ( 'mocked_error' ) ;
0 commit comments