2023-08-04 14:10:47 +00:00
import { expect , tap } from '@push.rocks/tapbundle' ;
import * as typedserver from '@api.global/typedserver' ;
2019-08-31 21:14:46 +00:00
2022-03-24 19:02:58 +00:00
import * as typedrequest from '../ts/index.js' ;
2019-08-31 21:14:46 +00:00
2023-08-04 14:10:47 +00:00
let testServer : typedserver.servertools.Server ;
2019-09-01 11:17:21 +00:00
let testTypedHandler : typedrequest.TypedHandler < ITestReqRes > ;
2020-09-14 08:22:27 +00:00
// lets define an interface
2019-09-01 11:17:21 +00:00
interface ITestReqRes {
method : 'hi' ;
request : {
name : string ;
} ;
response : {
surname : string ;
} ;
}
tap . test ( 'should create a typedHandler' , async ( ) = > {
2020-09-14 08:22:27 +00:00
// lets use the interface in a TypedHandler
2020-10-06 15:05:29 +00:00
testTypedHandler = new typedrequest . TypedHandler < ITestReqRes > ( 'hi' , async ( reqArg ) = > {
2019-09-01 11:17:21 +00:00
return {
2020-10-06 15:05:29 +00:00
surname : 'wow' ,
2019-09-01 11:17:21 +00:00
} ;
} ) ;
} ) ;
2019-08-31 21:14:46 +00:00
tap . test ( 'should spawn a server to test with' , async ( ) = > {
2023-08-04 14:10:47 +00:00
testServer = new typedserver . servertools . Server ( {
2019-08-31 21:14:46 +00:00
cors : true ,
forceSsl : false ,
2020-10-06 15:05:29 +00:00
port : 3000 ,
2019-08-31 21:14:46 +00:00
} ) ;
} ) ;
tap . test ( 'should define a testHandler' , async ( ) = > {
2020-09-14 08:22:27 +00:00
const testTypedRouter = new typedrequest . TypedRouter ( ) ; // typed routers can broker typedrequests between handlers
2020-07-26 13:48:57 +00:00
testTypedRouter . addTypedHandler ( testTypedHandler ) ;
2020-02-11 18:55:07 +00:00
testServer . addRoute (
'/testroute' ,
2023-08-04 14:10:47 +00:00
new typedserver . servertools . HandlerTypedRouter ( testTypedRouter as any ) // the "any" is testspecific, since smartexpress ships with its own version of typedrequest.
2020-02-11 18:55:07 +00:00
) ;
2019-08-31 21:14:46 +00:00
} ) ;
tap . test ( 'should start the server' , async ( ) = > {
await testServer . start ( ) ;
} ) ;
2019-08-21 12:36:16 +00:00
2019-09-01 11:17:21 +00:00
tap . test ( 'should fire a request' , async ( ) = > {
2020-02-11 18:55:07 +00:00
const typedRequest = new typedrequest . TypedRequest < ITestReqRes > (
'http://localhost:3000/testroute' ,
'hi'
) ;
2019-09-01 11:17:21 +00:00
const response = await typedRequest . fire ( {
2020-10-06 15:05:29 +00:00
name : 'really' ,
2019-09-01 11:17:21 +00:00
} ) ;
2020-06-25 23:53:05 +00:00
console . log ( 'this is the response:' ) ;
2019-09-01 13:39:56 +00:00
console . log ( response ) ;
2022-03-24 19:02:58 +00:00
expect ( response . surname ) . toEqual ( 'wow' ) ;
2019-09-01 11:17:21 +00:00
} ) ;
2019-08-31 21:14:46 +00:00
tap . test ( 'should end the server' , async ( ) = > {
await testServer . stop ( ) ;
2019-08-21 12:37:02 +00:00
} ) ;
2019-08-21 12:36:16 +00:00
2019-08-21 12:37:02 +00:00
tap . start ( ) ;