diff --git a/.eslintrc.json b/.eslintrc.json index 48e35cb..8f2d3ac 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -3,7 +3,8 @@ "env": { "node": true, "browser": true, - "es2021": true + "es2021": true, + "jest": true }, "plugins": ["import", "react", "jsx-a11y", "css-modules"], "extends": [ @@ -39,4 +40,4 @@ } } } -} \ No newline at end of file +} diff --git a/__tests__/routes.js b/__tests__/routes.js new file mode 100644 index 0000000..5abc219 --- /dev/null +++ b/__tests__/routes.js @@ -0,0 +1,65 @@ +const request = require('supertest'); + +const server = 'http://localhost:3000'; + +describe('Snippets route', () => { + describe('GET', () => { + xit('responds with 200 status and json', () => { + return request(server) + .get('/snippets') + .expect(200) + .expect('Content-Type', 'application/json') + .end((err, res) => { + if (err) throw err; + }); + }); + xit('responds with data that has keys: title, comments, storedCode, language', () => { + return request(server) + .get('/snippets') + .expect((res) => { + if (!res.body.hasOwnProperty('title')) { + throw new Error("Expected 'title' key!"); + } + if (!res.body.hasOwnProperty('comments')) { + throw new Error("Expected 'comments' key!"); + } + if (!res.body.hasOwnProperty('language')) { + throw new Error("Expected 'language' key!"); + } + if (!res.body.hasOwnProperty('storedCode')) { + throw new Error("Expected 'storedCode' key!"); + } + }) + .end((err, res) => { + if (err) throw err; + }); + }); + xit('responds with data that has key, tags, and value of an array', () => { + return request(server) + .get('/snippets') + .expect((res) => { + if (!res.body.hasOwnProperty('tags')) { + throw new Error("Expected 'tags' key!"); + } + if (!Array.isArray(res.body.tags)) { + throw new Error("Expected 'tags' to be an array!"); + } + }) + .end((err, res) => { + if (err) throw err; + }); + }); + }); + describe('POST', () => {}); + describe('PUT', () => {}); + describe('DELETE', () => {}); +}); + +describe('Authentication route', () => { + describe('GET', () => {}); + describe('POST', () => {}); +}); + +describe('Invalid route', () => { + describe('GET', () => {}); +}); diff --git a/package.json b/package.json index a287341..29c43fe 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "nodemon": "^2.0.22", "sass-loader": "^13.2.2", "style-loader": "^3.3.2", + "supertest": "^6.3.3", "webpack": "^5.82.1", "webpack-cli": "^5.1.1", "webpack-dev-server": "^4.15.0"