From 8929d7d41ae591ecb4a1342aa7263efd56e8415d Mon Sep 17 00:00:00 2001 From: Vic Date: Tue, 25 Jan 2022 20:19:23 +0100 Subject: [PATCH] added test with jasmine --- images/thumb/encenadaport.jpg | Bin 0 -> 31037 bytes package.json | 6 ++-- {support => spec/support}/jasmine.json | 0 src/index.ts | 5 +-- src/routes/api/image.ts | 3 ++ src/routes/{routesIndex.ts => index.ts} | 0 src/tests/indexSpec.ts | 42 ++++++++++++++++++++++++ tsconfig.json | 2 +- 8 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 images/thumb/encenadaport.jpg rename {support => spec/support}/jasmine.json (100%) rename src/routes/{routesIndex.ts => index.ts} (100%) diff --git a/images/thumb/encenadaport.jpg b/images/thumb/encenadaport.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5466b217efc3314a3c72bb7c03afa2089073e206 GIT binary patch literal 31037 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 F|JexofYAT| literal 0 HcmV?d00001 diff --git a/package.json b/package.json index f1f6b8a..888a4ec 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@types/jasmine": "^3.10.3", "@types/node": "^17.0.9", "@types/sharp": "^0.29.5", + "@types/supertest": "^2.0.11", "@typescript-eslint/eslint-plugin": "^5.10.1", "@typescript-eslint/parser": "^5.10.1", "eslint": "^8.7.0", @@ -31,13 +32,14 @@ "eslint-plugin-prettier": "^4.0.0", "jasmine": "^4.0.2", "jasmine-spec-reporter": "^7.0.0", - "nodemon": "^2.0.15", "ts-node": "^10.4.0", "typescript": "^4.5.4" }, "dependencies": { "express": "^4.17.2", + "nodemon": "^2.0.15", "path": "^0.12.7", - "sharp": "^0.29.3" + "sharp": "^0.29.3", + "supertest": "^6.2.2" } } diff --git a/support/jasmine.json b/spec/support/jasmine.json similarity index 100% rename from support/jasmine.json rename to spec/support/jasmine.json diff --git a/src/index.ts b/src/index.ts index 871b168..41bf9cf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ -import express from 'express'; -import routes from './routes/routesIndex' +import express from 'express' +import routes from './routes/index' const app = express(); const port = 3000; @@ -18,3 +18,4 @@ app.listen(port, () => { }) +export default app; \ No newline at end of file diff --git a/src/routes/api/image.ts b/src/routes/api/image.ts index 760a01d..b2f5138 100644 --- a/src/routes/api/image.ts +++ b/src/routes/api/image.ts @@ -49,6 +49,9 @@ image.get('/', async (req: express.Request, res: express.Response): Promise { + it('Get the api endpoint', async () => { + const response = await request.get('/api/image?filename=fjord'); + expect(response.status).toBe(200); + }) + it('Throw an error if the image name is incorrect', async () => { + const response = await request.get('/api/image?filename=test'); + expect(response.status).toBe(404); + }) + it('Working if we only have a filename in the url', async () => { + const response = await request.get('/api/image?filename=encenadaport'); + expect(response.status).toBe(200); + }) +}) + +// Image resize test + +describe('Test of the image endpoint with resize', () => { + it('Resize working with filename and width parameter', async () => { + const response = await request.get('/api/image?filename=encenadaport&height=200'); + expect(response.status).toBe(200); + }) + it('Resize working with filename and height parameter', async () => { + const response = await request.get('/api/image?filename=encenadaport&width=200'); + expect(response.status).toBe(200); + }) + it('Resize working with filename and width, height parameter', async () => { + const response = await request.get('/api/image?filename=encenadaport&height=200'); + expect(response.status).toBe(200); + }) + +}) + + + diff --git a/tsconfig.json b/tsconfig.json index 5db9a28..403acb7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -98,5 +98,5 @@ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, - "exclude": ["node_modules", "build", "spec"] + "exclude": ["node_modules", "build"] }