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", "tgProjectsService",
"$routeParams", "$routeParams",
"$appTitle", "$appTitle",
"$tgAuth" "$tgAuth",
"tgXhrErrorService"
] ]
constructor: (@projectsService, @routeParams, @appTitle, @auth) -> constructor: (@projectsService, @routeParams, @appTitle, @auth, @xhrError) ->
projectSlug = @routeParams.pslug projectSlug = @routeParams.pslug
@.user = @auth.userData @.user = @auth.userData
@projectsService.getProjectBySlug(projectSlug) @projectsService
.getProjectBySlug(projectSlug)
.then (project) => .then (project) =>
@appTitle.set(project.get("name")) @appTitle.set(project.get("name"))
@.project = project @.project = project
.catch (xhr) =>
@xhrError.response(xhr)
angular.module("taigaProjects").controller("Project", ProjectController) angular.module("taigaProjects").controller("Project", ProjectController)

View File

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