153 lines
4.3 KiB
CoffeeScript
153 lines
4.3 KiB
CoffeeScript
describe "tgProjects", ->
|
|
projectsService = provide = null
|
|
mocks = {}
|
|
|
|
_mockResources = () ->
|
|
mocks.resources = {}
|
|
|
|
mocks.resources.projects = {
|
|
listByMember: sinon.stub()
|
|
}
|
|
|
|
mocks.thenStub = sinon.stub()
|
|
mocks.finallyStub = sinon.stub()
|
|
mocks.resources.projects.listByMember.withArgs(10).returns({
|
|
then: mocks.thenStub
|
|
finally: mocks.finallyStub
|
|
})
|
|
|
|
provide.value "$tgResources", mocks.resources
|
|
|
|
_mockRootScope = () ->
|
|
provide.value "$rootScope", {user: {id: 10}}
|
|
|
|
_mockProjectUrl = () ->
|
|
mocks.projectUrl = {get: sinon.stub()}
|
|
|
|
mocks.projectUrl.get = (project) ->
|
|
return "url-" + project.id
|
|
|
|
provide.value "$projectUrl", mocks.projectUrl
|
|
|
|
_mockLightboxFactory = () ->
|
|
mocks.lightboxFactory = {
|
|
create: sinon.stub()
|
|
}
|
|
|
|
provide.value "tgLightboxFactory", mocks.lightboxFactory
|
|
|
|
_inject = (callback) ->
|
|
inject (_tgProjectsService_) ->
|
|
projectsService = _tgProjectsService_
|
|
callback() if callback
|
|
|
|
_mocks = () ->
|
|
module ($provide) ->
|
|
provide = $provide
|
|
_mockResources()
|
|
_mockRootScope()
|
|
_mockProjectUrl()
|
|
_mockLightboxFactory()
|
|
|
|
return null
|
|
|
|
_setup = ->
|
|
_mocks()
|
|
|
|
beforeEach ->
|
|
module "taigaProjects"
|
|
_setup()
|
|
_inject()
|
|
|
|
describe "fetch items", ->
|
|
projects = []
|
|
|
|
beforeEach ->
|
|
projects = [
|
|
{"id": 1},
|
|
{"id": 2},
|
|
{"id": 3},
|
|
{"id": 4},
|
|
{"id": 5},
|
|
{"id": 6},
|
|
{"id": 7},
|
|
{"id": 8},
|
|
{"id": 9},
|
|
{"id": 10},
|
|
{"id": 11},
|
|
{"id": 12},
|
|
]
|
|
|
|
it "all & recents filled", () ->
|
|
mocks.thenStub.callArg(0, projects)
|
|
|
|
expect(projectsService.projects.get("all").toJS()).to.be.eql(projects)
|
|
expect(projectsService.projects.get("recents").toJS()).to.be.eql(projects.slice(0, 10))
|
|
|
|
it "_inProgress change to false when tgResources end", () ->
|
|
expect(projectsService._inProgress).to.be.true
|
|
|
|
mocks.thenStub.callArg(0, projects)
|
|
mocks.finallyStub.callArg(0)
|
|
|
|
expect(projectsService._inProgress).to.be.false
|
|
|
|
it "_inProgress prevent new ajax calls", () ->
|
|
projectsService.fetchProjects()
|
|
projectsService.fetchProjects()
|
|
|
|
mocks.thenStub.callArg(0, projects)
|
|
|
|
expect(mocks.resources.projects.listByMember).have.been.calledOnce
|
|
|
|
it "group projects by id", () ->
|
|
mocks.thenStub.callArg(0, projects)
|
|
|
|
expect(projectsService.projectsById.size).to.be.equal(12)
|
|
expect(projectsService.projectsById.toJS()[1].id).to.be.equal(projects[0].id)
|
|
|
|
it "add urls in the project object", () ->
|
|
mocks.thenStub.callArg(0, projects)
|
|
|
|
expect(projectsService.projectsById.toJS()[1].url).to.be.equal("url-1")
|
|
expect(projectsService.projects.get("all").toJS()[0].url).to.be.equal("url-1")
|
|
expect(projectsService.projects.get("recents").toJS()[0].url).to.be.equal("url-1")
|
|
|
|
it "newProject, create the wizard lightbox", () ->
|
|
projectsService.newProject()
|
|
|
|
expect(mocks.lightboxFactory.create).to.have.been.calledWith("tg-lb-create-project", {
|
|
"class": "wizard-create-project"
|
|
})
|
|
|
|
it "bulkUpdateProjectsOrder and then fetch projects again", () ->
|
|
projects_order = [
|
|
{"id": 8},
|
|
{"id": 2},
|
|
{"id": 3},
|
|
{"id": 9},
|
|
{"id": 1},
|
|
{"id": 4},
|
|
{"id": 10},
|
|
{"id": 5},
|
|
{"id": 6},
|
|
{"id": 7},
|
|
{"id": 11},
|
|
{"id": 12},
|
|
]
|
|
|
|
thenStub = sinon.stub()
|
|
|
|
mocks.resources.projects.bulkUpdateOrder = sinon.stub()
|
|
mocks.resources.projects.bulkUpdateOrder.withArgs(projects_order).returns({
|
|
then: thenStub
|
|
})
|
|
|
|
projectsService.fetchProjects = sinon.stub()
|
|
|
|
projectsService.bulkUpdateProjectsOrder(projects_order)
|
|
|
|
thenStub.callArg(0)
|
|
|
|
expect(projectsService.fetchProjects).to.have.been.calledOnce
|