overleaf/services/contacts/test/acceptance/js/GettingContactsTests.js

98 lines
No EOL
2.8 KiB
JavaScript

/* 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();
});
});
});
});