From 7455a069b11f5f35c8d70baf5e0bf2b818f067c5 Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Thu, 19 May 2016 09:37:02 -0700 Subject: [PATCH 1/4] set up files --- .gitignore | 1 + data/data.json | 0 gulpfile.js | 30 ++++++++++++++++++++++++++++++ package.json | 21 +++++++++++++++++++++ promise.js | 0 server.js | 0 test/server_test.js | 0 7 files changed, 52 insertions(+) create mode 100644 .gitignore create mode 100644 data/data.json create mode 100644 gulpfile.js create mode 100644 package.json create mode 100644 promise.js create mode 100644 server.js create mode 100644 test/server_test.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/data/data.json b/data/data.json new file mode 100644 index 0000000..e69de29 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/package.json b/package.json new file mode 100644 index 0000000..a3c3f77 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "test", + "version": "1.0.0", + "description": "", + "main": "http_test.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "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" + } +} diff --git a/promise.js b/promise.js new file mode 100644 index 0000000..e69de29 diff --git a/server.js b/server.js new file mode 100644 index 0000000..e69de29 diff --git a/test/server_test.js b/test/server_test.js new file mode 100644 index 0000000..e69de29 From b2be7676a80fc238add846986da0088e8250760c Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Thu, 19 May 2016 11:10:48 -0700 Subject: [PATCH 2/4] writing new files --- .gitignore | 1 + data/data.json | 1 + promise.js | 0 server.js | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 37 insertions(+) delete mode 100644 promise.js diff --git a/.gitignore b/.gitignore index 3c3629e..15de390 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules +data diff --git a/data/data.json b/data/data.json index e69de29..82384e9 100644 --- a/data/data.json +++ b/data/data.json @@ -0,0 +1 @@ +{"msg":"hi"} \ No newline at end of file diff --git a/promise.js b/promise.js deleted file mode 100644 index e69de29..0000000 diff --git a/server.js b/server.js index e69de29..45b82ba 100644 --- a/server.js +++ b/server.js @@ -0,0 +1,35 @@ +'use strict'; + +const http = require('http'); +const fs = require('fs'); +const stream = require('stream'); + + + + const dir = __dirname + '/data'; + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir); + } + + http.createServer((req, res) => { + if(req.url === '/notes' && req.method === 'GET') { + res.writeHead(200, { 'Content-Type': 'text/plain' }); + let files = fs.readdirSync(dir); + res.write(files.toString()); + return res.end(); + } + if (req.url === '/notes' && req.method === '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(); + } + res.status = 404; + return res.end('File not found\n'); + + }).listen(3000, () => { + console.log('server up at 3000'); + }); From 3c189be52c5c31d56fc1c86df8a760b95fe4db14 Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Thu, 19 May 2016 11:45:02 -0700 Subject: [PATCH 3/4] working on tests --- server.js | 50 ++++++++++++++++++++++----------------------- test/server_test.js | 34 ++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 25 deletions(-) diff --git a/server.js b/server.js index 45b82ba..ef0e645 100644 --- a/server.js +++ b/server.js @@ -6,30 +6,30 @@ const stream = require('stream'); - const dir = __dirname + '/data'; - if (!fs.existsSync(dir)) { - fs.mkdirSync(dir); - } +const dir = __dirname + '/data'; +if (!fs.existsSync(dir)) { + fs.mkdirSync(dir); +} - http.createServer((req, res) => { - if(req.url === '/notes' && req.method === 'GET') { - res.writeHead(200, { 'Content-Type': 'text/plain' }); - let files = fs.readdirSync(dir); - res.write(files.toString()); - return res.end(); - } - if (req.url === '/notes' && req.method === '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(); - } - res.status = 404; - return res.end('File not found\n'); +http.createServer((req, res) => { + if(req.url === '/notes' && req.method === 'GET') { + res.writeHead(200, { 'Content-Type': 'text/plain' }); + let files = fs.readdirSync(dir); + res.write(files.toString()); + return res.end(); + } + if (req.url === '/notes' && req.method === '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(); + } + res.status = 404; + return res.end('File not found\n'); - }).listen(3000, () => { - console.log('server up at 3000'); - }); +}).listen(3000, () => { + console.log('server up at 3000'); +}); diff --git a/test/server_test.js b/test/server_test.js index e69de29..c710ce7 100644 --- a/test/server_test.js +++ b/test/server_test.js @@ -0,0 +1,34 @@ +'use strict'; + +const chai = require('chai'); +const chaiHTTP = require('chai-http'); +const expect = chai.expect; +chai.use(chaiHTTP); +const request = chai.request; + +require('../server'); + +describe('persistance tests', () => { + it('should do a GET request', (done) => { + request('localhost:3000') + .get('/notes') + .end((err, res) => { + expect(err).to.eql(null); + expect(res).to.have.status(200); + var files = fs.readdirSync(__dirname + '/../data').toString(); + expect(res.text).to.eql(files); + }); + done(); + }); + it('should do a POST request', (done) => { + request('localhost:3000') + .get('/notes') + .end((err, res) => { + expect((err, res) => { + expect(err).to.eql(null); + expect(res).to.have.status(200); + }) + }) + }) + }) +}); From 533e1c5ff81f435a78bac761ee1e75b589addc17 Mon Sep 17 00:00:00 2001 From: YOUR FULL NAME Date: Thu, 19 May 2016 12:03:49 -0700 Subject: [PATCH 4/4] submitting --- test/server_test.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/test/server_test.js b/test/server_test.js index c710ce7..f999d26 100644 --- a/test/server_test.js +++ b/test/server_test.js @@ -5,10 +5,17 @@ const chaiHTTP = require('chai-http'); const expect = chai.expect; chai.use(chaiHTTP); const request = chai.request; +const fs = require('fs'); +var fileArr = []; +var newFileArr = []; require('../server'); describe('persistance tests', () => { + before('read files in notes', () => { + fileArr = fs.readdirSync(__dirname + '/../data'); + console.log(fileArr); + }); it('should do a GET request', (done) => { request('localhost:3000') .get('/notes') @@ -22,13 +29,13 @@ describe('persistance tests', () => { }); it('should do a POST request', (done) => { request('localhost:3000') - .get('/notes') + .post('/notes') + .send('{"test": "test"}') .end((err, res) => { - expect((err, res) => { - expect(err).to.eql(null); - expect(res).to.have.status(200); - }) - }) - }) - }) + newFileArr = fs.readdirSync(__dirname + '/../data'); + expect(err).to.eql(null); + expect(newFileArr).to.not.eql(fileArr); + done(); + }); + }); });