'use strict'; var config = require('../../config'); var should = require('should'); var seedDb = require('../seed'); var request = require('supertest'); var favsOriginal = require('../seedData'); var favs = [] for (let i = 0; i < favsOriginal.length; i++) { let o = {} o[config.form._id] = favsOriginal[i]._id o[config.form.name] = favsOriginal[i].name o[config.form.dataURL] = favsOriginal[i].dataURL o[config.form.bookmarked] = favsOriginal[i].bookmarked favs.push(o) } describe('Task 3: Testing Read for /favorites routes', function(){ before(seed) describe('GET /favorites', function(){ it('should list all the favs with correct data', function(done){ request(config.url) .get('/favorites') .set('Accept', 'application/json') .expect('Content-Type', /json/, 'it should respond with json' ) .expect(200) .end(function(err, res){ var resFavs = JSON.parse(res.text); resFavs.forEach(function(fav) { for (let i = 0; i < favs.length; i++) { if(favs[i][config.form._id] == fav[config.form._id]) { should.equal(fav[config.form.dataURL], favs[i][config.form.dataURL]); should.equal(fav[config.form.bookmarked], favs[i][config.form.bookmarked]); should.equal(fav[config.form.name], favs[i][config.form.name]); } } }) done(); }); }); }); describe('GET /favorites/:favoriteid', function(){ it('should get the favorite with correct data', function(done){ request(config.url) .get('/favorites/' + favs[1][config.form._id]) .set('Accept', 'application/json') .expect('Content-Type', /json/, 'it should respond with json' ) .expect(200) .end(function(err, res){ var resFav = JSON.parse(res.text); should.equal(resFav[config.form._id], favs[1][config.form._id]); should.equal(resFav[config.form.dataURL], favs[1][config.form.dataURL]); should.equal(resFav[config.form.bookmarked], favs[1][config.form.bookmarked]); should.equal(resFav[config.form.name], favs[1][config.form.name]); done(); }); }); it('should respond with a 404 if the favorite does not exist', function(done){ request(config.url) .get('/favorites/notValidId') .set('Accept', 'application/json') .expect(404, done); }); }); describe(`GET /favorites/search`, function(){ it(`should get the favorite with correct data: GET /favorites/search?${config.form._id}`, function(done){ request(config.url) .get(`/favorites/search?${config.form._id}=${favs[1][config.form._id]}`) .set('Accept', 'application/json') .expect('Content-Type', /json/, 'it should respond with json' ) .expect(200) .end(function(err, res){ var resFavArray = JSON.parse(res.text); should.equal(resFavArray.length, 1) var resFav = resFavArray[0] should.equal(resFav[config.form._id], favs[1][config.form._id]); should.equal(resFav[config.form.dataURL], favs[1][config.form.dataURL]); should.equal(resFav[config.form.bookmarked], favs[1][config.form.bookmarked]); should.equal(resFav[config.form.name], favs[1][config.form.name]); done(); }); }); it(`should get the favorite with correct data: GET /favorites/search?${config.form._id}&${config.form.name}`, function(done){ request(config.url) .get(`/favorites/search?${config.form._id}=${favs[5][config.form._id]}&${config.form.name}=${favs[5][config.form.name]}`) .set('Accept', 'application/json') .expect('Content-Type', /json/, 'it should respond with json' ) .expect(200) .end(function(err, res){ var resFav = JSON.parse(res.text)[0]; should.equal(resFav[config.form._id], favs[5][config.form._id]); should.equal(resFav[config.form.dataURL], favs[5][config.form.dataURL]); should.equal(resFav[config.form.bookmarked], favs[5][config.form.bookmarked]); should.equal(resFav[config.form.name], favs[5][config.form.name]); done(); }); }); it(`should get empty array if there is no match: GET /favorites/search?${config.form.name}`, function(done){ request(config.url) .get(`/favorites/search?&${config.form.name}=NoName`) .set('Accept', 'application/json') .expect('Content-Type', /json/, 'it should respond with json' ) .expect(200) .end(function(err, res){ var resFavArray = JSON.parse(res.text); should.equal(resFavArray.length, 0) done(); }); }); }); }); function seed(done){ //seed the db seedDb.seed(function(seedData){ done(); }, favs); }