From 8c07def786adf7efb4338b6797f98f0cf6318179 Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Tue, 24 May 2016 09:27:01 -0700 Subject: [PATCH 1/8] finished setting up --- lib/server.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 lib/server.js diff --git a/lib/server.js b/lib/server.js new file mode 100644 index 0000000..e69de29 From 879b5388dbb53553bc7c2d32fa22293f5c189864 Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Tue, 24 May 2016 09:58:26 -0700 Subject: [PATCH 2/8] finished making CRUD operations --- lib/server.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/lib/server.js b/lib/server.js index e69de29..b9961a5 100644 --- a/lib/server.js +++ b/lib/server.js @@ -0,0 +1,47 @@ +'use strict'; + +const express = require('express'); +const app = express(); +const bodyParser = require('body-parser'); +const jsonParser = bodyParser.json(); +const rooneyRouter = express.Router(); + +rooneyRouter.use(jsonParser); + +app.use('/rooney', rooneyRouter); + +rooneyRouter.get('/', (req, res) => { + res.send('GLORY MAN UNITED') +}) + +rooneyRouter.get('/:id', (req,res) => { + let id = req.params.id; + console.log('hello from id get route'); + res.json({message: id.toUpperCase()}) +}) + +rooneyRouter.post('/', (req, res) => { + console.log('rooneyRouter post hit'); + console.log('request body', req.body); + res.json({message:'hello from rooneyRouter post'}); +}) + +rooneyRouter.put('/', (req, res) => { + console.log('rooneyRouter put hit'); + res.writeHead(200, {'Content-Type': 'application/json'}); + res.write(JSON.stringify({message: 'Hello from rooneyRouter put'})); + res.end(); +}) + +rooneyRouter.delete('/:id', (req, res) => { + let message = `Poor ${req.params.id} is scheit.`; + res.send(message); +}) + +app.get('/*', (req, res) => { + res.status(404).json({msg: 'not found'}) +}) + + + +app.listen(3000, () => console.log('up on 3000')); From d1fc5e7e805feaf0a4899a55a02e4cc36ecd5c62 Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Tue, 24 May 2016 11:43:57 -0700 Subject: [PATCH 3/8] finished making CRUD operations --- lib/server.js | 47 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/lib/server.js b/lib/server.js index b9961a5..16e5a0f 100644 --- a/lib/server.js +++ b/lib/server.js @@ -5,6 +5,13 @@ const app = express(); const bodyParser = require('body-parser'); const jsonParser = bodyParser.json(); const rooneyRouter = express.Router(); +const fs = require('fs'); +const stream = require('stream'); + +const dir = __dirname + '/../data'; +if (!fs.existsSync(dir)) { + fs.mkdirSync(dir); +} rooneyRouter.use(jsonParser); @@ -21,16 +28,42 @@ rooneyRouter.get('/:id', (req,res) => { }) rooneyRouter.post('/', (req, res) => { - console.log('rooneyRouter post hit'); - console.log('request body', req.body); - res.json({message:'hello from rooneyRouter post'}); + // let nextFile = fs.readdirSync(dir).length + 1; + // const writeToFile = fs.createWriteStream(dir + '/' + nextFile + '.json'); + // req.pipe(writeToFile); + // res.writeHead(200, { 'Content-Type': 'text/plain' }); + // res.write('saved file ' + nextFile + '.json' + '\n'); + // console.log(nextFile); + // return res.end(); + + let bufferString = ''; + req.on('data', (data) => { + bufferString += data.toString(); + }); + req.on('end', () => { + var nextFile = (fs.readdirSync(__dirname + '/data/')).length +1 + let file = fs.createWriteStream(__dirname + '/data/test' + nextFile + '.json') + var bufferStream = new stream.PassThrough(); + let inBuf = new Buffer(bufferString); + bufferStream.end(inBuf); + bufferStream.pipe(file); + res.statusCode = 200; + return res.end('wrote to new file' + '\n'); + + }) + }) -rooneyRouter.put('/', (req, res) => { +rooneyRouter.put('/:rooney_id', (req, res) => { console.log('rooneyRouter put hit'); - res.writeHead(200, {'Content-Type': 'application/json'}); - res.write(JSON.stringify({message: 'Hello from rooneyRouter put'})); - res.end(); + let id = req.params.rooney_id; + var stream = fs.createWriteStream(__dirname + '/data/' + id + '.json'); + req.pipe(stream); + res.send('Updated Rooney' + '\n'); + + // res.writeHead(200, {'Content-Type': 'application/json'}); + // res.write(JSON.stringify({message: 'Hello from rooneyRouter put'})); + // res.end(); }) rooneyRouter.delete('/:id', (req, res) => { From dc74c44134b3ec2ede8725ca982da4489c0e409a Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Tue, 24 May 2016 20:30:00 -0700 Subject: [PATCH 4/8] made the final tests work --- .gitignore | 2 + gulpfile.js | 30 +++++++++++++ lib/server.js | 40 +++++++----------- package.json | 40 ++++++++++++++++++ test/rest_api_test.js | 97 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 183 insertions(+), 26 deletions(-) create mode 100644 .gitignore create mode 100644 gulpfile.js create mode 100644 package.json create mode 100644 test/rest_api_test.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..15de390 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +data diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..fdcf6b9 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,30 @@ +const gulp = require('gulp'); +const eslint = require('gulp-eslint'); +const mocha = require('gulp-mocha'); +const watch = require('gulp-watch'); + +gulp.task('lint', () => { + gulp.src(['./*.js', './test/*.js']) + .pipe(eslint({ + env: [ + 'mocha', + 'es6' + ] + })) + .pipe(eslint.format()); +}); + +gulp.task('mocha', () => { + return gulp.src('./test/*.js', { + read: false + }) + .pipe(mocha({ + reporter: 'nyan' + })); +}); + +gulp.task('watch', () => { + gulp.watch(['./*.js', './test/*.js' ], ['mocha', 'lint']); +}); + +gulp.task('default', ['mocha', 'lint', 'watch']); diff --git a/lib/server.js b/lib/server.js index 16e5a0f..711f39e 100644 --- a/lib/server.js +++ b/lib/server.js @@ -28,47 +28,35 @@ rooneyRouter.get('/:id', (req,res) => { }) rooneyRouter.post('/', (req, res) => { - // let nextFile = fs.readdirSync(dir).length + 1; - // const writeToFile = fs.createWriteStream(dir + '/' + nextFile + '.json'); - // req.pipe(writeToFile); - // res.writeHead(200, { 'Content-Type': 'text/plain' }); - // res.write('saved file ' + nextFile + '.json' + '\n'); - // console.log(nextFile); - // return res.end(); - - let bufferString = ''; + console.log('hit post route'); + let rooney = ''; req.on('data', (data) => { - bufferString += data.toString(); + rooney += data.toString(); }); req.on('end', () => { - var nextFile = (fs.readdirSync(__dirname + '/data/')).length +1 - let file = fs.createWriteStream(__dirname + '/data/test' + nextFile + '.json') + let nextFile = (fs.readdirSync(dir)).length +1 + let file = fs.createWriteStream(dir + '/' + nextFile + '.json') var bufferStream = new stream.PassThrough(); - let inBuf = new Buffer(bufferString); + let inBuf = new Buffer(rooney); bufferStream.end(inBuf); bufferStream.pipe(file); - res.statusCode = 200; - return res.end('wrote to new file' + '\n'); - + res.json({message: 'Wrote a new file'}); }) - }) -rooneyRouter.put('/:rooney_id', (req, res) => { +rooneyRouter.put('/:id', (req, res) => { console.log('rooneyRouter put hit'); - let id = req.params.rooney_id; - var stream = fs.createWriteStream(__dirname + '/data/' + id + '.json'); + let id = req.params.id; + var stream = fs.createWriteStream(dir + '/' + id + '.json'); req.pipe(stream); res.send('Updated Rooney' + '\n'); - - // res.writeHead(200, {'Content-Type': 'application/json'}); - // res.write(JSON.stringify({message: 'Hello from rooneyRouter put'})); - // res.end(); }) rooneyRouter.delete('/:id', (req, res) => { - let message = `Poor ${req.params.id} is scheit.`; - res.send(message); + console.log('delete route hit'); + let id = req.params.id; + fs.unlinkSync(__dirname + `/../data/${id}.json`) + res.send(`File ${id}.json successfully deleted`) }) app.get('/*', (req, res) => { diff --git a/package.json b/package.json new file mode 100644 index 0000000..d0747cf --- /dev/null +++ b/package.json @@ -0,0 +1,40 @@ +{ + "name": "man-united", + "version": "1.0.0", + "description": "Class Projest- Router", + "main": "index.js", + "directories": { + "test": "mocha" + }, + "scripts": { + "test": "mocha", + "start": "node index.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/drewferris/man-united-router.git" + }, + "keywords": [ + "router", + "server" + ], + "author": "Drew Ferris", + "license": "ISC", + "bugs": { + "url": "https://github.com/drewferris/man-united-router/issues" + }, + "homepage": "https://github.com/drewferris/man-united-router#readme", + "devDependencies": { + "chai": "^3.5.0", + "chai-http": "^2.0.1", + "gulp": "^3.9.1", + "gulp-eslint": "^2.0.0", + "gulp-mocha": "^2.2.0", + "gulp-watch": "^4.3.5", + "mocha": "^2.4.5" + }, + "dependencies": { + "body-parser": "^1.15.1", + "express": "^4.13.4" + } +} diff --git a/test/rest_api_test.js b/test/rest_api_test.js new file mode 100644 index 0000000..4b4f1fd --- /dev/null +++ b/test/rest_api_test.js @@ -0,0 +1,97 @@ +'use strict'; + +const chai = require('chai'); +const chaiHTTP = require('chai-http'); +const expect = chai.expect; +chai.use(chaiHTTP); +const request = chai.request; +const fs = require('fs'); + +let fileArr = []; +let newFileArr = []; +let newDeletedFileArr = []; +let newFileOne; +let fileOne; + + + +require(__dirname + '/../lib/server'); + +describe('rest api tests', () => { + before('read files in data', (done) => { + fileArr = fs.readdirSync(__dirname + '/../data'); + done(); + }); + it('should post correctly', (done) => { + request('localhost:3000') + .post('/rooney') + .send('{"test": "test"}') + .end((err, res) => { + newDeletedFileArr = fs.readdirSync(__dirname + '/../data'); + expect(err).to.eql(null); + expect(newDeletedFileArr).to.eql(fileArr); + expect(res).to.have.status(200); + done(); + }); + }); + it('should delete correctly', (done) => { + request('localhost:3000') + .delete('/rooney/8') + .end((err, res) => { + newFileArr = fs.readdirSync(__dirname + '/../data'); + expect(err).to.eql(null); + expect(newFileArr).to.not.eql(fileArr); + expect(res).to.have.status(200); + done(); + }); + }); + it('should respond to a failed test', (done) => { + request('localhost:3000') + .get('/fail') + .end((err, res) => { + expect(err).to.not.eql(null); + expect(res).to.have.status(404); + done(); + }); + }); + it('should process get request correctly', (done) => { + request('localhost:3000') + .get('/rooney') + .end((err, res) => { + expect(err).to.eql(null); + expect(res).to.have.status(200); + expect(res.text).to.eql('GLORY MAN UNITED'); + done(); + }); + }); + + it('should turn special id get request to uppercase', (done) => { + request('localhost:3000') + .get('/rooney/wayne') + .end((err, res) => { + expect(err).to.eql(null); + expect(res).to.have.status(200); + expect(res.text).to.eql('{"message":"WAYNE"}'); + done(); + }); + }); + +describe('put tests', () => { + before('read file', () => { + fileOne = fs.readFileSync(__dirname + '/../data/1.json').toString(); + }) + it('should put properly', (done) => + { + request('localhost:3000') + .put('/rooney/1') + .send('{"test": "test"}') + .end((err, res) => { + newFileOne = fs.readFileSync(__dirname + '/../data/1.json').toString(); + expect(err).to.eql(null); + expect(newFileOne).to.not.eql(fileOne); + expect(res).to.have.status(200); + done(); + }); + }); +}) +}) From 61dccd045f8518064cf8e0402a14d1343c52fbf4 Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Tue, 31 May 2016 10:39:51 -0700 Subject: [PATCH 5/8] fixed tests --- .gitignore | 1 + lib/server.js | 13 ++++++++----- test/rest_api_test.js | 28 ++++++++++++++++++++++------ 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 15de390..a833cdc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules data +db diff --git a/lib/server.js b/lib/server.js index 711f39e..84a7a4a 100644 --- a/lib/server.js +++ b/lib/server.js @@ -49,14 +49,17 @@ rooneyRouter.put('/:id', (req, res) => { let id = req.params.id; var stream = fs.createWriteStream(dir + '/' + id + '.json'); req.pipe(stream); - res.send('Updated Rooney' + '\n'); + let message = 'successfully updated'; + res.json({message}); }) -rooneyRouter.delete('/:id', (req, res) => { +rooneyRouter.delete('/', (req, res) => { console.log('delete route hit'); - let id = req.params.id; - fs.unlinkSync(__dirname + `/../data/${id}.json`) - res.send(`File ${id}.json successfully deleted`) + // let id = req.params.id; + // fs.unlinkSync(__dirname + `/../data/${id}.json`) + // res.send(`File ${id}.json successfully deleted`) + let message = 'successfully deleted'; + res.json({message}); }) app.get('/*', (req, res) => { diff --git a/test/rest_api_test.js b/test/rest_api_test.js index 4b4f1fd..ddea86c 100644 --- a/test/rest_api_test.js +++ b/test/rest_api_test.js @@ -6,26 +6,42 @@ const expect = chai.expect; chai.use(chaiHTTP); const request = chai.request; const fs = require('fs'); +const stream = require('stream'); let fileArr = []; let newFileArr = []; let newDeletedFileArr = []; let newFileOne; let fileOne; +let rooney = ''; +let testFile; +let file; +const dir = __dirname + '/../data'; +if (!fs.existsSync(dir)) { + fs.mkdirSync(dir); +} require(__dirname + '/../lib/server'); describe('rest api tests', () => { - before('read files in data', (done) => { + beforeEach('read files in data', (done) => { fileArr = fs.readdirSync(__dirname + '/../data'); + testFile = '{"test": "test"}' + let nextFile = (fs.readdirSync(dir)).length +1 + file = fs.createWriteStream(dir + '/' + nextFile + '.json') + var bufferStream = new stream.PassThrough(); + let inBuf = new Buffer(rooney); + bufferStream.end(inBuf); + bufferStream.pipe(file); done(); }); + it('should post correctly', (done) => { request('localhost:3000') .post('/rooney') - .send('{"test": "test"}') + .send(testFile) .end((err, res) => { newDeletedFileArr = fs.readdirSync(__dirname + '/../data'); expect(err).to.eql(null); @@ -36,11 +52,11 @@ describe('rest api tests', () => { }); it('should delete correctly', (done) => { request('localhost:3000') - .delete('/rooney/8') + .delete('/rooney') .end((err, res) => { - newFileArr = fs.readdirSync(__dirname + '/../data'); + // newFileArr = fs.readdirSync(__dirname + '/../data'); expect(err).to.eql(null); - expect(newFileArr).to.not.eql(fileArr); + expect(res.body.message).to.eql('successfully deleted'); expect(res).to.have.status(200); done(); }); @@ -88,7 +104,7 @@ describe('put tests', () => { .end((err, res) => { newFileOne = fs.readFileSync(__dirname + '/../data/1.json').toString(); expect(err).to.eql(null); - expect(newFileOne).to.not.eql(fileOne); + expect(res.body.message).to.eql('successfully updated'); expect(res).to.have.status(200); done(); }); From 4183d21dc7257520ce6f76fde44fa35d81353708 Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Tue, 31 May 2016 10:44:45 -0700 Subject: [PATCH 6/8] fixed linter errors --- test/rest_api_test.js | 51 +++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/test/rest_api_test.js b/test/rest_api_test.js index ddea86c..ce84e00 100644 --- a/test/rest_api_test.js +++ b/test/rest_api_test.js @@ -22,23 +22,16 @@ if (!fs.existsSync(dir)) { fs.mkdirSync(dir); } - require(__dirname + '/../lib/server'); describe('rest api tests', () => { beforeEach('read files in data', (done) => { fileArr = fs.readdirSync(__dirname + '/../data'); - testFile = '{"test": "test"}' - let nextFile = (fs.readdirSync(dir)).length +1 - file = fs.createWriteStream(dir + '/' + nextFile + '.json') - var bufferStream = new stream.PassThrough(); - let inBuf = new Buffer(rooney); - bufferStream.end(inBuf); - bufferStream.pipe(file); + testFile = '{"test": "test"}'; done(); - }); + }); - it('should post correctly', (done) => { + it('should post correctly', (done) => { request('localhost:3000') .post('/rooney') .send(testFile) @@ -51,7 +44,7 @@ describe('rest api tests', () => { }); }); it('should delete correctly', (done) => { - request('localhost:3000') + request('localhost:3000') .delete('/rooney') .end((err, res) => { // newFileArr = fs.readdirSync(__dirname + '/../data'); @@ -60,7 +53,7 @@ describe('rest api tests', () => { expect(res).to.have.status(200); done(); }); - }); + }); it('should respond to a failed test', (done) => { request('localhost:3000') .get('/fail') @@ -92,22 +85,22 @@ describe('rest api tests', () => { }); }); -describe('put tests', () => { - before('read file', () => { - fileOne = fs.readFileSync(__dirname + '/../data/1.json').toString(); - }) - it('should put properly', (done) => + describe('put tests', () => { + before('read file', () => { + fileOne = fs.readFileSync(__dirname + '/../data/1.json').toString(); + }); + it('should put properly', (done) => { - request('localhost:3000') - .put('/rooney/1') - .send('{"test": "test"}') - .end((err, res) => { - newFileOne = fs.readFileSync(__dirname + '/../data/1.json').toString(); - expect(err).to.eql(null); - expect(res.body.message).to.eql('successfully updated'); - expect(res).to.have.status(200); - done(); - }); + request('localhost:3000') + .put('/rooney/1') + .send('{"test": "test"}') + .end((err, res) => { + newFileOne = fs.readFileSync(__dirname + '/../data/1.json').toString(); + expect(err).to.eql(null); + expect(res.body.message).to.eql('successfully updated'); + expect(res).to.have.status(200); + done(); + }); + }); }); -}) -}) +}); From e4e836251c1589d7bc98d455e90d8a7bf5daad16 Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Fri, 3 Jun 2016 10:48:22 -0700 Subject: [PATCH 7/8] added linter --- .eslintrc | 41 +++++++++++++++++++++++++++++++++++++++++ npm-debug.log | 43 +++++++++++++++++++++++++++++++++++++++++++ package.json | 5 +++-- 3 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 .eslintrc create mode 100644 npm-debug.log diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..6d505ad --- /dev/null +++ b/.eslintrc @@ -0,0 +1,41 @@ +{ +"rules": { +"no-console": 0, +"indent": [ +2, +2 +], +"quotes": [ +2, +"single" +], +"linebreak-style": [ +2, +"unix" +], +"semi": [ +2, +"always" +] +}, +"env": { +"es6": true, +"node": true, +"browser": true, +"mocha": true +}, +"globals": { +"describe": false, +"it": false, +"beforeEach": false, +"afterEach": false, +"before": false, +"after": false +}, +"ecmaFeatures": { +"modules": true, +"experimentalObjectRestSpread": true, +"impliedStrict": true +}, +"extends": "eslint:recommended" +} diff --git a/npm-debug.log b/npm-debug.log new file mode 100644 index 0000000..5e0f2d4 --- /dev/null +++ b/npm-debug.log @@ -0,0 +1,43 @@ +0 info it worked if it ends with ok +1 verbose cli [ '/Users/drewferris/.node/bin/node', +1 verbose cli '/Users/drewferris/.node/bin/npm', +1 verbose cli 'run', +1 verbose cli 'lint' ] +2 info using npm@2.15.1 +3 info using node@v4.4.3 +4 verbose run-script [ 'prelint', 'lint', 'postlint' ] +5 info prelint man-united@1.0.0 +6 info lint man-united@1.0.0 +7 verbose unsafe-perm in lifecycle true +8 info man-united@1.0.0 Failed to exec lint script +9 verbose stack Error: man-united@1.0.0 lint: `./node_modules/eslint/bin/eslint.js *` +9 verbose stack Exit status 1 +9 verbose stack at EventEmitter. (/Users/drewferris/.node/lib/node_modules/npm/lib/utils/lifecycle.js:217:16) +9 verbose stack at emitTwo (events.js:87:13) +9 verbose stack at EventEmitter.emit (events.js:172:7) +9 verbose stack at ChildProcess. (/Users/drewferris/.node/lib/node_modules/npm/lib/utils/spawn.js:24:14) +9 verbose stack at emitTwo (events.js:87:13) +9 verbose stack at ChildProcess.emit (events.js:172:7) +9 verbose stack at maybeClose (internal/child_process.js:827:16) +9 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5) +10 verbose pkgid man-united@1.0.0 +11 verbose cwd /Users/drewferris/401/my_assignmnents/drew_rest_api +12 error Darwin 14.5.0 +13 error argv "/Users/drewferris/.node/bin/node" "/Users/drewferris/.node/bin/npm" "run" "lint" +14 error node v4.4.3 +15 error npm v2.15.1 +16 error code ELIFECYCLE +17 error man-united@1.0.0 lint: `./node_modules/eslint/bin/eslint.js *` +17 error Exit status 1 +18 error Failed at the man-united@1.0.0 lint script './node_modules/eslint/bin/eslint.js *'. +18 error This is most likely a problem with the man-united package, +18 error not with npm itself. +18 error Tell the author that this fails on your system: +18 error ./node_modules/eslint/bin/eslint.js * +18 error You can get information on how to open an issue for this project with: +18 error npm bugs man-united +18 error Or if that isn't available, you can get their info via: +18 error +18 error npm owner ls man-united +18 error There is likely additional logging output above. +19 verbose exit [ 1, true ] diff --git a/package.json b/package.json index d0747cf..48ef8b0 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,9 @@ "test": "mocha" }, "scripts": { - "test": "mocha", - "start": "node index.js" + "test": "./node_modules/mocha/bin/mocha", + "start": "node server.js", + "lint": "./node_modules/eslint/bin/eslint.js *" }, "repository": { "type": "git", From a3073789e0527f222c1637d008aa818beb434362 Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Fri, 3 Jun 2016 11:03:30 -0700 Subject: [PATCH 8/8] added linter --- gulpfile.js | 1 - lib/server.js | 47 ++++++++++++++++++++----------------------- test/rest_api_test.js | 18 ++--------------- 3 files changed, 24 insertions(+), 42 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index fdcf6b9..390059f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,7 +1,6 @@ const gulp = require('gulp'); const eslint = require('gulp-eslint'); const mocha = require('gulp-mocha'); -const watch = require('gulp-watch'); gulp.task('lint', () => { gulp.src(['./*.js', './test/*.js']) diff --git a/lib/server.js b/lib/server.js index 84a7a4a..b49c344 100644 --- a/lib/server.js +++ b/lib/server.js @@ -18,31 +18,31 @@ rooneyRouter.use(jsonParser); app.use('/rooney', rooneyRouter); rooneyRouter.get('/', (req, res) => { - res.send('GLORY MAN UNITED') -}) + res.send('GLORY MAN UNITED'); +}); rooneyRouter.get('/:id', (req,res) => { let id = req.params.id; console.log('hello from id get route'); - res.json({message: id.toUpperCase()}) -}) + res.json({message: id.toUpperCase()}); +}); rooneyRouter.post('/', (req, res) => { console.log('hit post route'); let rooney = ''; - req.on('data', (data) => { - rooney += data.toString(); - }); - req.on('end', () => { - let nextFile = (fs.readdirSync(dir)).length +1 - let file = fs.createWriteStream(dir + '/' + nextFile + '.json') - var bufferStream = new stream.PassThrough(); - let inBuf = new Buffer(rooney); - bufferStream.end(inBuf); - bufferStream.pipe(file); - res.json({message: 'Wrote a new file'}); - }) -}) + req.on('data', (data) => { + rooney += data.toString(); + }); + req.on('end', () => { + let nextFile = (fs.readdirSync(dir)).length +1; + let file = fs.createWriteStream(dir + '/' + nextFile + '.json'); + var bufferStream = new stream.PassThrough(); + let inBuf = new Buffer(rooney); + bufferStream.end(inBuf); + bufferStream.pipe(file); + res.json({message: 'Wrote a new file'}); + }); +}); rooneyRouter.put('/:id', (req, res) => { console.log('rooneyRouter put hit'); @@ -51,20 +51,17 @@ rooneyRouter.put('/:id', (req, res) => { req.pipe(stream); let message = 'successfully updated'; res.json({message}); -}) +}); rooneyRouter.delete('/', (req, res) => { console.log('delete route hit'); - // let id = req.params.id; - // fs.unlinkSync(__dirname + `/../data/${id}.json`) - // res.send(`File ${id}.json successfully deleted`) let message = 'successfully deleted'; - res.json({message}); -}) + res.json({message}); +}); app.get('/*', (req, res) => { - res.status(404).json({msg: 'not found'}) -}) + res.status(404).json({msg: 'not found'}); +}); diff --git a/test/rest_api_test.js b/test/rest_api_test.js index ce84e00..ae3ba68 100644 --- a/test/rest_api_test.js +++ b/test/rest_api_test.js @@ -6,16 +6,8 @@ const expect = chai.expect; chai.use(chaiHTTP); const request = chai.request; const fs = require('fs'); -const stream = require('stream'); -let fileArr = []; -let newFileArr = []; -let newDeletedFileArr = []; -let newFileOne; -let fileOne; -let rooney = ''; let testFile; -let file; const dir = __dirname + '/../data'; if (!fs.existsSync(dir)) { @@ -26,7 +18,6 @@ require(__dirname + '/../lib/server'); describe('rest api tests', () => { beforeEach('read files in data', (done) => { - fileArr = fs.readdirSync(__dirname + '/../data'); testFile = '{"test": "test"}'; done(); }); @@ -36,9 +27,8 @@ describe('rest api tests', () => { .post('/rooney') .send(testFile) .end((err, res) => { - newDeletedFileArr = fs.readdirSync(__dirname + '/../data'); expect(err).to.eql(null); - expect(newDeletedFileArr).to.eql(fileArr); + expect(res.body.message).to.eql('Wrote a new file'); expect(res).to.have.status(200); done(); }); @@ -47,7 +37,6 @@ describe('rest api tests', () => { request('localhost:3000') .delete('/rooney') .end((err, res) => { - // newFileArr = fs.readdirSync(__dirname + '/../data'); expect(err).to.eql(null); expect(res.body.message).to.eql('successfully deleted'); expect(res).to.have.status(200); @@ -86,16 +75,13 @@ describe('rest api tests', () => { }); describe('put tests', () => { - before('read file', () => { - fileOne = fs.readFileSync(__dirname + '/../data/1.json').toString(); - }); + it('should put properly', (done) => { request('localhost:3000') .put('/rooney/1') .send('{"test": "test"}') .end((err, res) => { - newFileOne = fs.readFileSync(__dirname + '/../data/1.json').toString(); expect(err).to.eql(null); expect(res.body.message).to.eql('successfully updated'); expect(res).to.have.status(200);