From 901fb0fc1e6e685bf0d8d14d152bc3c096149117 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 10 Oct 2018 12:02:43 +0100 Subject: [PATCH] Unit test brand variation id. --- .../Project/ProjectOptionsHandler.coffee | 2 +- .../Templates/TemplatesController.coffee | 1 - .../Project/ProjectOptionsHandlerTests.coffee | 22 ++++++++- .../Templates/TemplatesControllerTests.coffee | 47 ++++++++++++++++++- 4 files changed, 67 insertions(+), 5 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectOptionsHandler.coffee b/services/web/app/coffee/Features/Project/ProjectOptionsHandler.coffee index a411075126..b9469e566e 100644 --- a/services/web/app/coffee/Features/Project/ProjectOptionsHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectOptionsHandler.coffee @@ -49,7 +49,7 @@ module.exports = setBrandVariationId: (project_id, brandVariationId, callback = ()->)-> logger.log project_id:project_id, brandVariationId:brandVariationId, "setting the brand variation id" - if !brandVariationId? + if !brandVariationId? or brandVariationId == "" return callback() conditions = {_id:project_id} update = {brandVariationId} diff --git a/services/web/app/coffee/Features/Templates/TemplatesController.coffee b/services/web/app/coffee/Features/Templates/TemplatesController.coffee index b82b02fbb6..be770830fe 100644 --- a/services/web/app/coffee/Features/Templates/TemplatesController.coffee +++ b/services/web/app/coffee/Features/Templates/TemplatesController.coffee @@ -110,7 +110,6 @@ setMainFile = (project_id, mainFile, callback) -> callback() setBrandVariationId = (project_id, brandVariationId, callback) -> - logger.log brandVariationId, "brandVariationId" if brandVariationId? ProjectOptionsHandler.setBrandVariationId project_id, brandVariationId, callback else diff --git a/services/web/test/unit/coffee/Project/ProjectOptionsHandlerTests.coffee b/services/web/test/unit/coffee/Project/ProjectOptionsHandlerTests.coffee index 435dba9dbc..16121e0399 100644 --- a/services/web/test/unit/coffee/Project/ProjectOptionsHandlerTests.coffee +++ b/services/web/test/unit/coffee/Project/ProjectOptionsHandlerTests.coffee @@ -4,7 +4,7 @@ should = chai.should() modulePath = "../../../../app/js/Features/Project/ProjectOptionsHandler.js" SandboxedModule = require('sandboxed-module') -describe 'creating a project', -> +describe 'ProjectOptionsHandler', -> project_id = "4eecaffcbffa66588e000008" beforeEach -> @@ -77,3 +77,23 @@ describe 'creating a project', -> @projectModel.update.called.should.equal true done() @projectModel.update.args[0][3]() + + describe "setting the brandVariationId", -> + it 'should perform and update on mongo', (done)-> + @handler.setBrandVariationId project_id, "123", (err)=> + args = @projectModel.update.args[0] + args[0]._id.should.equal project_id + args[1].brandVariationId.should.equal "123" + done() + @projectModel.update.args[0][3]() + + + it 'should not perform and update on mongo if there is no brand variation', (done)-> + @handler.setBrandVariationId project_id, null, (err)=> + @projectModel.update.called.should.equal false + done() + + it 'should not perform and update on mongo if brand variation is an empty string', (done)-> + @handler.setBrandVariationId project_id, "", (err)=> + @projectModel.update.called.should.equal false + done() diff --git a/services/web/test/unit/coffee/Templates/TemplatesControllerTests.coffee b/services/web/test/unit/coffee/Templates/TemplatesControllerTests.coffee index 1e61b14c0b..59ad382e18 100644 --- a/services/web/test/unit/coffee/Templates/TemplatesControllerTests.coffee +++ b/services/web/test/unit/coffee/Templates/TemplatesControllerTests.coffee @@ -8,7 +8,7 @@ modulePath = '../../../../app/js/Features/Templates/TemplatesController' describe 'TemplatesController', -> - project_id = "213432" + @project_id = "213432" beforeEach -> @request = sinon.stub() @@ -20,11 +20,12 @@ describe 'TemplatesController', -> unlink : sinon.stub() createWriteStream : sinon.stub().returns(on:(_, cb)->cb()) } - @ProjectUploadManager = {createProjectFromZipArchive : sinon.stub().callsArgWith(3, null, {_id:project_id})} + @ProjectUploadManager = {createProjectFromZipArchive : sinon.stub().callsArgWith(3, null, {_id:@project_id})} @dumpFolder = "dump/path" @ProjectOptionsHandler = { setCompiler:sinon.stub().callsArgWith(2) setImageName:sinon.stub().callsArgWith(2) + setBrandVariationId:sinon.stub().callsArgWith(2) } @uuid = "1234" @ProjectRootDocManager = { @@ -83,3 +84,45 @@ describe 'TemplatesController', -> done() res = redirect:redirect @controller.createProjectFromV1Template @req, res + + it "should set project options based on payload data", (done)-> + @compiler = "pdflatex" + @mainFile = "main.tex" + @brandVariationId = "123" + + @req.body = + templateVersionId: 15 + templateId: 14231 + name: @templateName + compiler: @compiler + mainFile: @mainFile + brandVariationId: @brandVariationId + + redirect = => + @ProjectOptionsHandler.setCompiler.calledWith(@project_id, @compiler).should.equal true + @ProjectOptionsHandler.setBrandVariationId.calledWith(@project_id, @brandVariationId).should.equal true + @ProjectRootDocManager.setRootDocFromName.calledWith(@project_id, @mainFile).should.equal true + done() + res = redirect:redirect + @controller.createProjectFromV1Template @req, res + + it "should only set project options which are defined in the payload", (done)-> + @compiler = "pdflatex" + @brandVariationId = "123" + + @req.body = + templateVersionId: 15 + templateId: 14231 + name: @templateName + compiler: @compiler + brandVariationId: @brandVariationId + + redirect = => + # Payload doesn't refine a main file, so `setRootDocFromName` should not be called + @ProjectOptionsHandler.setCompiler.calledWith(@project_id, @compiler).should.equal true + @ProjectOptionsHandler.setBrandVariationId.calledWith(@project_id, @brandVariationId).should.equal true + @ProjectRootDocManager.setRootDocFromName.called.should.equal false + done() + res = redirect:redirect + @controller.createProjectFromV1Template @req, res +