Fix create-epic lightbox tests

stable
David Barragán Merino 2016-08-31 21:09:35 +02:00
parent f0a6ab4c0b
commit 547b5c6458
2 changed files with 84 additions and 12 deletions

View File

@ -57,6 +57,8 @@ class CreateEpicController
promise.finally () =>
@.loading = false
return promise
# Color selector
selectColor: (color) ->
@.newEpic.color = color
@ -76,8 +78,8 @@ class CreateEpicController
@.attachments.push(attachment)
_createAttachments: (epic) ->
promises = _.map @.attachments.toJS(), (attachment) ->
return attachmentsService.upload(attachment.file, epic.id, epic.project, 'epic')
promises = _.map @.attachments.toJS(), (attachment) =>
return @attachmentsService.upload(attachment.file, epic.id, epic.project, 'epic')
return @q.all(promises)
angular.module("taigaEpics").controller("CreateEpicCtrl", CreateEpicController)

View File

@ -32,11 +32,33 @@ describe "EpicRow", ->
provide.value "tgResources", mocks.tgResources
_mockTgConfirm = () ->
mocks.tgConfirm = {
notify: sinon.stub()
}
provide.value "$tgConfirm", mocks.tgConfirm
_mockTgAttachmentsService = () ->
mocks.tgAttachmentsService = {
upload: sinon.stub()
}
provide.value "tgAttachmentsService", mocks.tgAttachmentsService
_mockQ = () ->
mocks.q = {
all: sinon.spy()
}
provide.value "$q", mocks.q
_mocks = () ->
module ($provide) ->
provide = $provide
_mockTgResources()
_mockTgConfirm()
_mockTgAttachmentsService()
_mockQ()
return null
beforeEach ->
@ -47,17 +69,65 @@ describe "EpicRow", ->
inject ($controller) ->
controller = $controller
it "create Epic", (done) ->
createEpicCtrl = controller "CreateEpicCtrl"
createEpicCtrl.project = {
id: 7
it "create Epic with invalid form", () ->
data = {
project: {id: 1, default_epic_status: 1}
validateForm: sinon.stub()
setFormErrors: sinon.stub()
onCreateEpic: sinon.stub()
}
createEpicCtrl.newEpic = {
project: createEpicCtrl.project.id
createEpicCtrl = controller "CreateEpicCtrl", null, data
createEpicCtrl.attachments = Immutable.List([{file: "file1"}, {file: "file2"}])
data.validateForm.withArgs().returns(false)
createEpicCtrl.createEpic()
expect(data.validateForm).have.been.called
expect(mocks.tgResources.epics.post).not.have.been.called
it "create Epic successfully", (done) ->
data = {
project: {id: 1, default_epic_status: 1}
validateForm: sinon.stub()
setFormErrors: sinon.stub()
onCreateEpic: sinon.stub()
}
createEpicCtrl.onReloadEpics = sinon.stub()
promise = mocks.tgResources.epics.post.withArgs(createEpicCtrl.newEpic).promise().resolve()
createEpicCtrl = controller "CreateEpicCtrl", null, data
createEpicCtrl.attachments = Immutable.List([{file: "file1"}, {file: "file2"}])
data.validateForm.withArgs().returns(true)
mocks.tgResources.epics.post.withArgs(createEpicCtrl.newEpic).promise().resolve(
{data: {id: 1, project: 1}}
)
createEpicCtrl.createEpic().then () ->
expect(createEpicCtrl.onReloadEpics).have.been.called
expect(data.validateForm).have.been.called
expect(mocks.tgAttachmentsService.upload).have.been.calledTwice
expect(createEpicCtrl.onCreateEpic).have.been.called
done()
# TODO: Talk with JuanFran. How to return a response with an object when a promise is rejected?
# reject_response = {data: {_error_message: "error"}}
#
#
#it "create Epic with an API error", (done) ->
# data = {
# project: {id: 1, default_epic_status: 1}
# validateForm: sinon.stub()
# setFormErrors: sinon.stub()
# onCreateEpic: sinon.stub()
# }
# createEpicCtrl = controller "CreateEpicCtrl", null, data
# createEpicCtrl.attachments = Immutable.List([{file: "file1"}, {file: "file2"}])
# data.validateForm.withArgs().returns(true)
# mocks.tgResources.epics.post.withArgs(createEpicCtrl.newEpic).promise().reject(new Error("error"))
# createEpicCtrl.createEpic().then () ->
# expect(data.validateForm).have.been.called
# expect(mocks.tgAttachmentsService.upload).not.have.been.called
# expect(createEpicCtrl.onCreateEpic).not.have.been.called
# expect(data.setFormErrors).have.been.called
# expect(mocks.tgConfirm.notify).have.been.called
# done()