108 lines
3.3 KiB
CoffeeScript
108 lines
3.3 KiB
CoffeeScript
describe "tgCurrentUserService", ->
|
|
currentUserService = provide = null
|
|
mocks = {}
|
|
|
|
_mockTgStorage = () ->
|
|
mocks.storageService = {
|
|
get: sinon.stub()
|
|
}
|
|
|
|
provide.value "$tgStorage", mocks.storageService
|
|
|
|
_mockProjectsService = () ->
|
|
mocks.projectsService = {
|
|
getProjectsByUserId: sinon.stub()
|
|
bulkUpdateProjectsOrder: sinon.stub()
|
|
}
|
|
|
|
provide.value "tgProjectsService", mocks.projectsService
|
|
|
|
_inject = (callback) ->
|
|
inject (_tgCurrentUserService_) ->
|
|
currentUserService = _tgCurrentUserService_
|
|
callback() if callback
|
|
|
|
_mocks = () ->
|
|
module ($provide) ->
|
|
provide = $provide
|
|
_mockTgStorage()
|
|
_mockProjectsService()
|
|
|
|
return null
|
|
|
|
_setup = ->
|
|
_mocks()
|
|
|
|
beforeEach ->
|
|
module "taigaCommon"
|
|
_setup()
|
|
_inject()
|
|
|
|
describe "get user", () ->
|
|
it "return the user if it is defined", () ->
|
|
currentUserService._user = 123
|
|
|
|
expect(currentUserService.getUser()).to.be.equal(123)
|
|
|
|
it "get user form storage if it is not defined", () ->
|
|
user = {id: 1, name: "fake1"}
|
|
|
|
currentUserService.setUser = sinon.spy()
|
|
mocks.storageService.get.withArgs("userInfo").returns(user)
|
|
|
|
_user = currentUserService.getUser()
|
|
|
|
expect(currentUserService.setUser).to.be.calledOnce
|
|
|
|
it "set user and load user info", (done) ->
|
|
user = Immutable.fromJS({id: 1, name: "fake1"})
|
|
|
|
projects = Immutable.fromJS([
|
|
{id: 1, name: "fake1"},
|
|
{id: 2, name: "fake2"},
|
|
{id: 3, name: "fake3"},
|
|
{id: 4, name: "fake4"},
|
|
{id: 5, name: "fake5"}
|
|
])
|
|
|
|
mocks.projectsService.getProjectsByUserId = sinon.stub()
|
|
mocks.projectsService.getProjectsByUserId.withArgs(user.get("id")).promise().resolve(projects)
|
|
|
|
currentUserService.setUser(user).then () ->
|
|
expect(currentUserService._user).to.be.equal(user)
|
|
expect(currentUserService.projects.get("all").size).to.be.equal(5)
|
|
expect(currentUserService.projects.get("recents").size).to.be.equal(5)
|
|
expect(currentUserService.projectsById.size).to.be.equal(5)
|
|
expect(currentUserService.projectsById.get("3").get("name")).to.be.equal("fake3")
|
|
|
|
done()
|
|
|
|
it "bulkUpdateProjectsOrder and reload projects", (done) ->
|
|
fakeData = [{id: 1, id: 2}]
|
|
|
|
currentUserService.loadProjects = sinon.spy()
|
|
|
|
mocks.projectsService.bulkUpdateProjectsOrder.withArgs(fakeData).promise().resolve()
|
|
|
|
currentUserService.bulkUpdateProjectsOrder(fakeData).then () ->
|
|
expect(currentUserService.loadProjects).to.be.callOnce
|
|
|
|
done()
|
|
|
|
it "is authenticated", () ->
|
|
currentUserService.getUser = sinon.stub()
|
|
currentUserService.getUser.returns({})
|
|
|
|
expect(currentUserService.isAuthenticated()).to.be.true
|
|
|
|
currentUserService.getUser.returns(null)
|
|
|
|
expect(currentUserService.isAuthenticated()).to.be.false
|
|
|
|
it "remove user", () ->
|
|
currentUserService._user = true
|
|
|
|
currentUserService.removeUser()
|
|
|
|
expect(currentUserService._user).to.be.null
|