/* eslint-disable camelcase, handle-callback-err, no-undef, no-unused-vars, */ // TODO: This file was created by bulk-decaffeinate. // Fix any style issues and re-enable lint. /* * decaffeinate suggestions: * DS102: Remove unnecessary code created because of implicit returns * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ const sinon = require("sinon"); const chai = require("chai"); chai.should(); const { expect } = chai; const { ObjectId } = require("mongojs"); const request = require("request"); const async = require("async"); const ContactsApp = require("./ContactsApp"); const HOST = "http://localhost:3036"; describe("Getting Contacts", function() { describe("with no contacts", function() { beforeEach(function(done){ this.user_id = ObjectId().toString(); return ContactsApp.ensureRunning(done); }); return it("should return an empty array", function(done) { return request({ method: "GET", url: `${HOST}/user/${this.user_id}/contacts`, json: true }, (error, response, body) => { response.statusCode.should.equal(200); body.contact_ids.should.deep.equal([]); return done(); }); }); }); return describe("with contacts", function() { beforeEach(function(done) { this.user_id = ObjectId().toString(); this.contact_id_1 = ObjectId().toString(); this.contact_id_2 = ObjectId().toString(); this.contact_id_3 = ObjectId().toString(); const touchContact = (user_id, contact_id, cb) => request({ method: "POST", url: `${HOST}/user/${user_id}/contacts`, json: { contact_id } }, cb); return async.series([ // 2 is preferred since touched twice, then 3 since most recent, then 1 cb => ContactsApp.ensureRunning(cb), cb => touchContact(this.user_id, this.contact_id_1, cb), cb => touchContact(this.user_id, this.contact_id_2, cb), cb => touchContact(this.user_id, this.contact_id_2, cb), cb => touchContact(this.user_id, this.contact_id_3, cb) ], done); }); it("should return a sorted list of contacts", function(done) { return request({ method: "GET", url: `${HOST}/user/${this.user_id}/contacts`, json: true }, (error, response, body) => { response.statusCode.should.equal(200); body.contact_ids.should.deep.equal([this.contact_id_2, this.contact_id_3, this.contact_id_1]); return done(); }); }); return it("should respect a limit and only return top X contacts", function() { return request({ method: "GET", url: `${HOST}/user/${this.user_id}/contacts?limit=2`, json: true }, (error, response, body) => { response.statusCode.should.equal(200); body.contact_ids.should.deep.equal([this.contact_id_2, this.contact_id_3]); return done(); }); }); }); });