@@ -21,20 +21,35 @@ const waitForClient =
2121 await waitForExists ( page , $table . cell ( row , ClientCol . Name ) , name ) ;
2222 } ;
2323
24- const updateClient =
25- ( id : number , data : { name ?: string } ) : ( ( ) => Promise < void > ) =>
24+ interface ClientFields {
25+ name ?: string ;
26+ expiresAfter ?: number ;
27+ }
28+
29+ const fillClientDialog =
30+ ( opener : string , submit : string , data : ClientFields ) : ( ( ) => Promise < void > ) =>
2631 async ( ) => {
27- await page . click ( $table . cell ( id , ClientCol . Edit , '.edit' ) ) ;
32+ await page . click ( opener ) ;
2833 await page . waitForSelector ( $dialog . selector ( ) ) ;
29- if ( data . name ) {
34+ if ( data . name !== undefined ) {
3035 const nameSelector = $dialog . input ( '.name' ) ;
3136 await clearField ( page , nameSelector ) ;
3237 await page . type ( nameSelector , data . name ) ;
3338 }
34- await page . click ( $dialog . button ( '.update' ) ) ;
39+ if ( data . expiresAfter !== undefined ) {
40+ const expiresSelector = $dialog . input ( '.expires-after' ) ;
41+ await clearField ( page , expiresSelector ) ;
42+ await page . type ( expiresSelector , data . expiresAfter . toString ( ) ) ;
43+ }
44+ await page . click ( $dialog . button ( submit ) ) ;
3545 await waitToDisappear ( page , $dialog . selector ( ) ) ;
3646 } ;
3747
48+ const createClient = ( data : ClientFields ) => fillClientDialog ( '#create-client' , '.create' , data ) ;
49+
50+ const updateClient = ( id : number , data : ClientFields ) =>
51+ fillClientDialog ( $table . cell ( id , ClientCol . Edit , '.edit' ) , '.update' , data ) ;
52+
3853const $table = selector . table ( '#client-table' ) ;
3954const $dialog = selector . form ( '#client-dialog' ) ;
4055
@@ -52,17 +67,8 @@ describe('Client', () => {
5267 expect ( await count ( page , $table . rows ( ) ) ) . toBe ( 1 ) ;
5368 } ) ;
5469 describe ( 'create clients' , ( ) => {
55- const createClient =
56- ( name : string ) : ( ( ) => Promise < void > ) =>
57- async ( ) => {
58- await page . click ( '#create-client' ) ;
59- await page . waitForSelector ( $dialog . selector ( ) ) ;
60- await page . type ( $dialog . input ( '.name' ) , name ) ;
61- await page . click ( $dialog . button ( '.create' ) ) ;
62- await waitToDisappear ( page , $dialog . selector ( ) ) ;
63- } ;
64- it ( 'phone' , createClient ( 'phone' ) ) ;
65- it ( 'desktop app' , createClient ( 'desktop app' ) ) ;
70+ it ( 'phone' , createClient ( { name : 'phone' } ) ) ;
71+ it ( 'desktop app' , createClient ( { name : 'desktop app' , expiresAfter : 60 * 60 } ) ) ;
6672 } ) ;
6773 it ( 'has created clients' , async ( ) => {
6874 await page . waitForSelector ( $table . row ( 3 ) ) ;
@@ -73,8 +79,15 @@ describe('Client', () => {
7379 expect ( await innerText ( page , $table . cell ( 2 , ClientCol . Name ) ) ) . toBe ( 'phone' ) ;
7480 expect ( await innerText ( page , $table . cell ( 3 , ClientCol . Name ) ) ) . toBe ( 'desktop app' ) ;
7581 } ) ;
76- it ( 'updates client' , updateClient ( 1 , { name : 'firefox' } ) ) ;
82+ it ( 'shows expires after for new clients' , async ( ) => {
83+ expect ( await innerText ( page , $table . cell ( 2 , ClientCol . ExpiresIn ) ) ) . toBe ( '-' ) ;
84+ expect ( await innerText ( page , $table . cell ( 3 , ClientCol . ExpiresIn ) ) ) . toBe ( 'in 1 hour' ) ;
85+ } ) ;
86+ it ( 'updates client' , updateClient ( 1 , { name : 'firefox' , expiresAfter : 60 * 60 * 10 } ) ) ;
7787 it ( 'has updated client name' , waitForClient ( 'firefox' , 1 ) ) ;
88+ it ( 'has updated expires after' , async ( ) => {
89+ expect ( await innerText ( page , $table . cell ( 1 , ClientCol . ExpiresIn ) ) ) . toBe ( 'in 10 hours' ) ;
90+ } ) ;
7891 it ( 'shows token' , async ( ) => {
7992 await page . click ( $table . cell ( 3 , ClientCol . Token , '.toggle-visibility' ) ) ;
8093 expect (
0 commit comments