237 lines
7.8 KiB
CoffeeScript
237 lines
7.8 KiB
CoffeeScript
###
|
|
# Copyright (C) 2014-2015 Taiga Agile LLC <taiga@taiga.io>
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as
|
|
# published by the Free Software Foundation, either version 3 of the
|
|
# License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# File: attchments-full.service.spec.coffee
|
|
###
|
|
|
|
describe "tgAttachmentsFullService", ->
|
|
$provide = null
|
|
attachmentsFullService = null
|
|
mocks = {}
|
|
|
|
_mockAttachmentsService = ->
|
|
mocks.attachmentsService = {
|
|
upload: sinon.stub()
|
|
}
|
|
|
|
$provide.value("tgAttachmentsService", mocks.attachmentsService)
|
|
|
|
_mockRootScope = ->
|
|
mocks.rootScope = {}
|
|
|
|
$provide.value("$rootScope", mocks.rootScope)
|
|
|
|
_mocks = ->
|
|
module (_$provide_) ->
|
|
$provide = _$provide_
|
|
|
|
_mockAttachmentsService()
|
|
_mockRootScope()
|
|
|
|
return null
|
|
|
|
_inject = ->
|
|
inject (_tgAttachmentsFullService_) ->
|
|
attachmentsFullService = _tgAttachmentsFullService_
|
|
|
|
_setup = ->
|
|
_mocks()
|
|
_inject()
|
|
|
|
beforeEach ->
|
|
module "taigaComponents"
|
|
|
|
_setup()
|
|
|
|
it "generate, refresh deprecated counter", () ->
|
|
attachments = Immutable.fromJS([
|
|
{
|
|
file: {
|
|
is_deprecated: false
|
|
}
|
|
},
|
|
{
|
|
file: {
|
|
is_deprecated: true
|
|
}
|
|
},
|
|
{
|
|
file: {
|
|
is_deprecated: true
|
|
}
|
|
},
|
|
{
|
|
file: {
|
|
is_deprecated: false
|
|
}
|
|
},
|
|
{
|
|
file: {
|
|
is_deprecated: true
|
|
}
|
|
}
|
|
])
|
|
|
|
attachmentsFullService._attachments = attachments
|
|
|
|
attachmentsFullService.regenerate()
|
|
|
|
expect(attachmentsFullService._deprecatedsCount).to.be.equal(3)
|
|
|
|
it "toggle deprecated visibility", () ->
|
|
attachmentsFullService._deprecatedsVisible = false
|
|
|
|
attachmentsFullService.regenerate = sinon.spy()
|
|
|
|
attachmentsFullService.toggleDeprecatedsVisible()
|
|
|
|
expect(attachmentsFullService.deprecatedsVisible).to.be.true
|
|
expect(attachmentsFullService.regenerate).to.be.calledOnce
|
|
|
|
describe "add attachments", () ->
|
|
it "valid attachment", (done) ->
|
|
projectId = 1
|
|
objId = 2
|
|
type = "issue"
|
|
|
|
file = Immutable.fromJS({
|
|
file: {},
|
|
name: 'test',
|
|
size: 3000
|
|
})
|
|
|
|
mocks.attachmentsService.validate = sinon.stub()
|
|
mocks.attachmentsService.validate.withArgs(file).returns(true)
|
|
|
|
mocks.attachmentsService.upload = sinon.stub()
|
|
mocks.attachmentsService.upload.promise().resolve(file)
|
|
|
|
mocks.rootScope.$broadcast = sinon.spy()
|
|
|
|
attachmentsFullService._attachments = Immutable.List()
|
|
|
|
attachmentsFullService.addAttachment(projectId, objId, type, file).then () ->
|
|
expect(mocks.rootScope.$broadcast).have.been.calledWith('attachment:create')
|
|
expect(attachmentsFullService.attachments.count()).to.be.equal(1)
|
|
done()
|
|
|
|
it "invalid attachment", () ->
|
|
file = Immutable.fromJS({
|
|
file: {},
|
|
name: 'test',
|
|
size: 3000
|
|
})
|
|
|
|
mocks.attachmentsService.validate = sinon.stub()
|
|
mocks.attachmentsService.validate.withArgs(file).returns(false)
|
|
|
|
mocks.attachmentsService.upload = sinon.stub()
|
|
mocks.attachmentsService.upload.promise().resolve(file)
|
|
|
|
mocks.rootScope.$broadcast = sinon.spy()
|
|
|
|
attachmentsFullService._attachments = Immutable.List()
|
|
|
|
attachmentsFullService.addAttachment(file).then null, () ->
|
|
expect(attachmentsFullService._attachments.count()).to.be.equal(0)
|
|
|
|
describe "deleteattachments", () ->
|
|
it "success attachment", (done) ->
|
|
mocks.attachmentsService.delete = sinon.stub()
|
|
mocks.attachmentsService.delete.withArgs('us', 2).promise().resolve()
|
|
|
|
attachmentsFullService.regenerate = sinon.spy()
|
|
attachmentsFullService._attachments = Immutable.fromJS([
|
|
{
|
|
file: {id: 1}
|
|
},
|
|
{
|
|
file: {id: 2}
|
|
},
|
|
{
|
|
file: {id: 3}
|
|
},
|
|
{
|
|
file: {id: 4}
|
|
}
|
|
])
|
|
|
|
deleteFile = attachmentsFullService._attachments.get(1)
|
|
|
|
attachmentsFullService.deleteAttachment(deleteFile, 'us').then () ->
|
|
expect(attachmentsFullService.regenerate).have.been.calledOnce
|
|
expect(attachmentsFullService.attachments.size).to.be.equal(3)
|
|
done()
|
|
|
|
it "reorder attachments", (done) ->
|
|
attachments = Immutable.fromJS([
|
|
{file: {id: 0, is_deprecated: false, order: 0}},
|
|
{file: {id: 1, is_deprecated: true, order: 1}},
|
|
{file: {id: 2, is_deprecated: true, order: 2}},
|
|
{file: {id: 3, is_deprecated: false, order: 3}},
|
|
{file: {id: 4, is_deprecated: true, order: 4}}
|
|
])
|
|
|
|
mocks.attachmentsService.patch = sinon.stub()
|
|
mocks.attachmentsService.patch.promise().resolve()
|
|
|
|
attachmentsFullService._attachments = attachments
|
|
|
|
attachmentsFullService.reorderAttachment('us', attachments.get(1), 0).then () ->
|
|
expect(attachmentsFullService.attachments.get(0)).to.be.equal(attachments.get(1))
|
|
done()
|
|
|
|
it "update attachment", () ->
|
|
attachments = Immutable.fromJS([
|
|
{file: {id: 0, is_deprecated: false, order: 0}},
|
|
{file: {id: 1, is_deprecated: true, order: 1}},
|
|
{file: {id: 2, is_deprecated: true, order: 2}},
|
|
{file: {id: 3, is_deprecated: false, order: 3}},
|
|
{file: {id: 4, is_deprecated: true, order: 4}}
|
|
])
|
|
|
|
attachment = attachments.get(1)
|
|
attachment = attachment.setIn(['file', 'is_deprecated'], false)
|
|
|
|
mocks.attachmentsService.patch = sinon.stub()
|
|
mocks.attachmentsService.patch.withArgs(1, 'us', {is_deprecated: false}).promise().resolve()
|
|
|
|
attachmentsFullService._attachments = attachments
|
|
|
|
attachmentsFullService.updateAttachment(attachment, 'us').then () ->
|
|
expect(attachmentsFullService.attachments.get(1).toJS()).to.be.eql(attachment.toJS())
|
|
|
|
it "update loading attachment", () ->
|
|
attachments = Immutable.fromJS([
|
|
{file: {id: 0, is_deprecated: false, order: 0}},
|
|
{loading: true, file: {id: 1, is_deprecated: true, order: 1}},
|
|
{file: {id: 2, is_deprecated: true, order: 2}},
|
|
{file: {id: 3, is_deprecated: false, order: 3}},
|
|
{file: {id: 4, is_deprecated: true, order: 4}}
|
|
])
|
|
|
|
attachment = attachments.get(1)
|
|
attachment = attachment.setIn(['file', 'is_deprecated'], false)
|
|
|
|
mocks.attachmentsService.patch = sinon.stub()
|
|
mocks.attachmentsService.patch.withArgs(1, 'us', {is_deprecated: false}).promise().resolve()
|
|
|
|
attachmentsFullService._attachments = attachments
|
|
|
|
attachmentsFullService.updateAttachment(attachment, 'us')
|
|
|
|
expect(attachmentsFullService.attachments.get(1).toJS()).to.be.eql(attachment.toJS())
|