diff --git a/services/web/app/coffee/Features/ReferencesSearch/ReferencesSearchHandler.coffee b/services/web/app/coffee/Features/ReferencesSearch/ReferencesSearchHandler.coffee index a01b6893a2..9ae6143408 100644 --- a/services/web/app/coffee/Features/ReferencesSearch/ReferencesSearchHandler.coffee +++ b/services/web/app/coffee/Features/ReferencesSearch/ReferencesSearchHandler.coffee @@ -38,5 +38,5 @@ module.exports = ReferencesSearchHandler = return callback(null, result) else err = new Error("references api responded with non-success code: #{res.statusCode}") - logger.log {err, project_id, file_url}, "error getting references keys" + logger.log {err, project_id}, "error getting references keys" return callback(err) diff --git a/services/web/test/UnitTests/coffee/ReferencesSearch/ReferencesSearchHandlerTests.coffee b/services/web/test/UnitTests/coffee/ReferencesSearch/ReferencesSearchHandlerTests.coffee new file mode 100644 index 0000000000..e4cb1f8af9 --- /dev/null +++ b/services/web/test/UnitTests/coffee/ReferencesSearch/ReferencesSearchHandlerTests.coffee @@ -0,0 +1,77 @@ +SandboxedModule = require('sandboxed-module') +should = require('chai').should() +expect = require('chai').expect +sinon = require 'sinon' +assert = require("chai").assert +modulePath = "../../../../app/js/Features/ReferencesSearch/ReferencesSearchHandler" + +describe 'ReferencesSearchHandler', -> + + beforeEach -> + @project_id = '222' + @file_url = 'http://example.com/some/file' + @handler = SandboxedModule.require modulePath, requires: + 'logger-sharelatex': { + log: -> + err: -> + } + 'settings-sharelatex': @settings = { + apis: {references: {url: 'http://some.url'}} + } + 'request': @request = { + get: sinon.stub() + post: sinon.stub() + } + + describe 'indexFile', -> + + describe 'when index operation is successful', -> + beforeEach -> + @request.post.callsArgWith(1, null, {statusCode: 201}, {}) + + it 'should not produce an error', (done) -> + @handler.indexFile @project_id, @file_url, (err) => + expect(err).to.equal null + done() + + describe 'when index operation fails', -> + beforeEach -> + @request.post.callsArgWith(1, null, {statusCode: 500}, {}) + + it 'should produce an error', (done) -> + @handler.indexFile @project_id, @file_url, (err) => + expect(err).to.not.equal null + done() + + describe 'getKeys', -> + + describe 'when request is successful', -> + beforeEach -> + @data = + projectId: @projectId + keys: ['a', 'b', 'c'] + @request.get.callsArgWith(1, null, {statusCode: 200}, @data) + + it 'should not produce an error', -> + @handler.getKeys @project_id, (err, result) => + expect(err).to.equal null + + it 'should produce a result object', -> + @handler.getKeys @project_id, (err, result) => + expect(result).to.not.equal null + expect(result).to.deep.equal @data + + describe 'when request fails', -> + beforeEach -> + @data = + projectId: @project_Id + keys: ['a', 'b', 'c'] + @request.get.callsArgWith(1, null, {statusCode: 500}, null) + + it 'should produce an error', -> + @handler.getKeys @project_id, (err, result) => + expect(err).to.not.equal null + + it 'should not produce a result', -> + @handler.getKeys @project_id, (err, result) => + expect(result).to.not.equal null