From bf6cec9737d03b9abdd2d30188bc27da1e8f9674 Mon Sep 17 00:00:00 2001 From: Himanshu Kandpal <110757485+himanshukandpal-28@users.noreply.github.com> Date: Tue, 18 Oct 2022 03:10:49 +0530 Subject: [PATCH] Create GitHub Action to check test for backend (#20) * Add ESLint to Frontend Package * Add Eslint to Backend * Add run test github action Co-authored-by: himanshukandpal-28 <himanshukandpal28@gmail.com> Fixes #12 --- .github/workflows/backend.yml | 6 +++ backend/package.json | 2 +- backend/test/events.spec.ts | 84 ++++++++++++++++++----------------- 3 files changed, 51 insertions(+), 41 deletions(-) diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index 22fa385..60488b5 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -20,6 +20,9 @@ jobs: with: node-version: ${{ matrix.node }} + - name: Start MongoDB + uses: supercharge/mongodb-github-action@1.8.0 + - name: Cache node_modules uses: actions/cache@v2 with: @@ -32,3 +35,6 @@ jobs: - name: Run Build run: npm run build + + - name: Run Test + run: npm run test diff --git a/backend/package.json b/backend/package.json index e9674fc..ffcd2cf 100644 --- a/backend/package.json +++ b/backend/package.json @@ -8,7 +8,7 @@ "start": "node dist/index.js", "dev": "concurrently \"npx tsc --watch\" \"nodemon -q dist/index.js\"", "test": "cross-env NODE_ENV=test mocha --exit dist/test/**.js", - "lint": "eslint 'src/**/*.{js,ts,tsx}' --fix", + "lint": "eslint 'src/**/*.{js,ts,tsx}' 'test/**/*.{js,ts,tsx}' --fix", "lint:test": "eslint \"{src,apps,libs,test}/**/*.ts\"" }, "author": "", diff --git a/backend/test/events.spec.ts b/backend/test/events.spec.ts index dd713b2..384dfcc 100644 --- a/backend/test/events.spec.ts +++ b/backend/test/events.spec.ts @@ -3,58 +3,62 @@ import dotenv from 'dotenv'; import { after, before, describe, it } from 'mocha'; import * as request from 'request'; import { APIServer } from '../src/APIServer'; -import { EventModel } from "../src/model/events"; +import { EventModel } from '../src/model/events'; const expect = chai.expect; dotenv.config(); const port = process.env.PORT || 8000; -const eventRequest: request.RequestAPI<request.Request, request.CoreOptions, request.RequiredUriUrl> - = request.defaults({ baseUrl: `http://localhost:${port}` }); +const eventRequest: request.RequestAPI<request.Request, request.CoreOptions, request.RequiredUriUrl> = request.defaults( + { baseUrl: `http://localhost:${port}` }, +); describe('Event controller Tests', () => { + before(() => { + return APIServer.start(); + }); - before(() => { - return APIServer.start(); - }); + after(() => { + return APIServer.stop(); + }); - after(() => { - return APIServer.stop(); - }); + const testEvent: EventModel = { + name: 'test event' + Math.random(), + link: 'https://example.com', + date: new Date(), + organizer: 'test orga', + }; - let testEvent: EventModel = { - name: "test event" + Math.random(), - link: "https://example.com", - date: new Date(), - organizer: "test orga", - } - - describe('The event api', () => { - it('should should create an event', (done) => { - eventRequest.post({ - body: testEvent, - json: true, - url: '/api/events' - }, (error: any, response, body) => { - expect(response.statusCode).to.eq(200); - expectIdenticalEvents(JSON.parse(JSON.stringify(testEvent)), response.body); - done(); - }); - }); - - it('should list all events', (done) => { - eventRequest.get("/api/events", { json: true }, (error, response, body) => { - expectIdenticalEvents(JSON.parse(JSON.stringify(testEvent)), response.body.find((event: any) => event.name == testEvent.name)); - done(); - }); - }); + describe('The event api', () => { + it('should should create an event', done => { + eventRequest.post( + { + body: testEvent, + json: true, + url: '/api/events', + }, + (error: any, response, body) => { + expect(response.statusCode).to.eq(200); + expectIdenticalEvents(JSON.parse(JSON.stringify(testEvent)), response.body); + done(); + }, + ); }); + it('should list all events', done => { + eventRequest.get('/api/events', { json: true }, (error, response, body) => { + expectIdenticalEvents( + JSON.parse(JSON.stringify(testEvent)), + response.body.find((event: any) => event.name == testEvent.name), + ); + done(); + }); + }); + }); }); - const expectIdenticalEvents = (expected: EventModel, actual: any) => { - for (const [key, value] of Object.entries(expected)) { - expect(actual[key].toString()).to.eq(value); - } -} \ No newline at end of file + for (const [key, value] of Object.entries(expected)) { + expect(actual[key].toString()).to.eq(value); + } +};