import { expect, tap } from '@pushrocks/tapbundle'; import * as smartexpress from '@pushrocks/smartexpress'; import * as typedrequest from '../ts/index'; let testServer: smartexpress.Server; let testTypedHandler: typedrequest.TypedHandler; interface ITestReqRes { method: 'hi'; request: { name: string; }; response: { surname: string; }; } tap.test('should create a typedHandler', async () => { testTypedHandler = new typedrequest.TypedHandler('hi', async reqArg => { return { surname: 'wow' }; }); }); tap.test('should spawn a server to test with', async () => { testServer = new smartexpress.Server({ cors: true, forceSsl: false, port: 3000 }); }); tap.test('should define a testHandler', async () => { testServer.addRoute( '/testroute', new smartexpress.Handler('POST', async (req, res) => { console.log(req.body); res.json(await testTypedHandler.addResponse(req.body)); }) ); }); tap.test('should start the server', async () => { await testServer.start(); }); tap.test('should fire a request', async () => { const typedRequest = new typedrequest.TypedRequest( 'http://localhost:3000/testroute', 'hi' ); const response = await typedRequest.fire({ name: 'really' }); console.log(response); expect(response.surname).to.equal('wow'); }); tap.test('should end the server', async () => { await testServer.stop(); }); tap.start();