handle project load error in the project home

stable
Juanfran 2015-06-02 15:17:33 +02:00
parent d7683879c1
commit 4f90941e36
2 changed files with 42 additions and 25 deletions

View File

@ -3,17 +3,21 @@ class ProjectController
"tgProjectsService",
"$routeParams",
"$appTitle",
"$tgAuth"
"$tgAuth",
"tgXhrErrorService"
]
constructor: (@projectsService, @routeParams, @appTitle, @auth) ->
constructor: (@projectsService, @routeParams, @appTitle, @auth, @xhrError) ->
projectSlug = @routeParams.pslug
@.user = @auth.userData
@projectsService.getProjectBySlug(projectSlug)
@projectsService
.getProjectBySlug(projectSlug)
.then (project) =>
@appTitle.set(project.get("name"))
@.project = project
.catch (xhr) =>
@xhrError.response(xhr)
angular.module("taigaProjects").controller("Project", ProjectController)

View File

@ -31,6 +31,13 @@ describe "ProjectController", ->
pslug: "project-slug"
}
_mockXhrErrorService = () ->
mocks.xhrErrorService = {
response: sinon.spy()
}
provide.value "tgXhrErrorService", mocks.xhrErrorService
_mocks = () ->
module ($provide) ->
provide = $provide
@ -38,6 +45,7 @@ describe "ProjectController", ->
_mockRouteParams()
_mockAppTitle()
_mockAuth()
_mockXhrErrorService()
return null
@ -53,48 +61,53 @@ describe "ProjectController", ->
_inject()
it "set local user", () ->
thenStub = sinon.stub()
mocks.projectService.getProjectBySlug.withArgs("project-slug").returns({
then: thenStub
project = Immutable.fromJS({
name: "projectName"
})
mocks.projectService.getProjectBySlug.withArgs("project-slug").promise().resolve(project)
ctrl = $controller "Project",
$scope: {}
expect(ctrl.user).to.be.equal(mocks.auth.userData)
it "set page title", () ->
it "set page title", (done) ->
project = Immutable.fromJS({
name: "projectName"
})
thenStub = sinon.stub()
mocks.projectService.getProjectBySlug.withArgs("project-slug").returns({
then: thenStub
})
mocks.projectService.getProjectBySlug.withArgs("project-slug").promise().resolve(project)
ctrl = $controller("Project")
thenStub.callArg(0, project)
setTimeout ( ->
expect(mocks.appTitle.set.withArgs("projectName")).to.be.calledOnce
done()
)
expect(mocks.appTitle.set.withArgs("projectName")).to.be.calledOnce
it "set local project variable", () ->
it "set local project variable", (done) ->
project = Immutable.fromJS({
name: "projectName"
})
thenStub = sinon.stub()
mocks.projectService.getProjectBySlug.withArgs("project-slug").returns({
then: thenStub
})
mocks.projectService.getProjectBySlug.withArgs("project-slug").promise().resolve(project)
ctrl = $controller("Project")
thenStub.callArg(0, project)
setTimeout ( () ->
expect(ctrl.project).to.be.equal(project)
done()
)
expect(ctrl.project).to.be.equal(project)
it "handle project error", (done) ->
xhr = {code: 403}
mocks.projectService.getProjectBySlug.withArgs("project-slug").promise().reject(xhr)
ctrl = $controller("Project")
setTimeout (() ->
expect(mocks.xhrErrorService.response.withArgs(xhr)).to.be.calledOnce
done()
)