From 9ed2e3abf2f89f30d043c5d08e5df5fc6683c0fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Thu, 4 Aug 2016 17:59:51 +0200 Subject: [PATCH] Tests EPICS dashboard --- .../project-menu.controller.spec.coffee | 7 +- .../epic-row/epic-row.controller.coffee | 27 +- .../epic-row/epic-row.controller.spec.coffee | 240 ++++++++++++++++++ .../epic-row/epic-row.directive.coffee | 4 + .../epics/dashboard/epic-row/epic-row.jade | 7 +- .../epics/dashboard/epic-row/epic-row.scss | 4 +- .../epics-dashboard.controller.coffee | 4 +- .../epics-dashboard.controller.spec.coffee | 142 +++++++++++ .../epics/dashboard/epics-dashboard.jade | 2 +- .../epics-table/epics-table.controller.coffee | 1 - .../epics-table.controller.spec.coffee | 64 +++++ .../epics-table/epics-table.directive.coffee | 4 + app/modules/home/home.service.spec.coffee | 2 +- 13 files changed, 482 insertions(+), 26 deletions(-) create mode 100644 app/modules/epics/dashboard/epic-row/epic-row.controller.spec.coffee create mode 100644 app/modules/epics/dashboard/epics-dashboard.controller.spec.coffee create mode 100644 app/modules/epics/dashboard/epics-table/epics-table.controller.spec.coffee diff --git a/app/modules/components/project-menu/project-menu.controller.spec.coffee b/app/modules/components/project-menu/project-menu.controller.spec.coffee index 2e3e1829..65601c88 100644 --- a/app/modules/components/project-menu/project-menu.controller.spec.coffee +++ b/app/modules/components/project-menu/project-menu.controller.spec.coffee @@ -111,6 +111,7 @@ describe "ProjectMenu", -> menu = ctrl.menu.toJS() expect(menu).to.be.eql({ + epics: false, backlog: false, kanban: false, issues: false, @@ -119,11 +120,12 @@ describe "ProjectMenu", -> it "all options enabled", () -> project = Immutable.fromJS({ + is_epics_activated: true, is_backlog_activated: true, is_kanban_activated: true, is_issues_activated: true, is_wiki_activated: true, - my_permissions: ["view_us", "view_issues", "view_wiki_pages"] + my_permissions: ["view_epics", "view_us", "view_issues", "view_wiki_pages"] }) mocks.projectService.project = project @@ -136,6 +138,7 @@ describe "ProjectMenu", -> menu = ctrl.menu.toJS() expect(menu).to.be.eql({ + epics: true, backlog: true, kanban: true, issues: true, @@ -144,6 +147,7 @@ describe "ProjectMenu", -> it "all options disabled because the user doesn't have permissions", () -> project = Immutable.fromJS({ + is_epics_activated: true, is_backlog_activated: true, is_kanban_activated: true, is_issues_activated: true, @@ -161,6 +165,7 @@ describe "ProjectMenu", -> menu = ctrl.menu.toJS() expect(menu).to.be.eql({ + epics: false, backlog: false, kanban: false, issues: false, diff --git a/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee b/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee index ae0d0cc0..33c30bf4 100644 --- a/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee +++ b/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee @@ -27,40 +27,40 @@ class EpicRowController constructor: (@rs, @confirm) -> @.displayUserStories = false - @._calculateProgressBar() @.displayAssignedTo = false + @.loadingStatus = false _calculateProgressBar: () -> if @.epic.getIn(['status_extra_info', 'is_closed']) == true @.percentage = "100%" else - opened = @.epic.getIn(['user_stories_counts', 'opened']) - closed = @.epic.getIn(['user_stories_counts', 'closed']) - total = opened + closed - if total == 0 + @.opened = @.epic.getIn(['user_stories_counts', 'opened']) + @.closed = @.epic.getIn(['user_stories_counts', 'closed']) + @.total = @.opened + @.closed + if @.total == 0 @.percentage = "0%" else - @.percentage = "#{closed * 100 / total}%" + @.percentage = "#{@.closed * 100 / @.total}%" updateEpicStatus: (status) -> - id = @.epic.get('id') - version = @.epic.get('version') + @.loadingStatus = true + @.displayStatusList = false patch = { 'status': status, - 'version': version + 'version': @.epic.get('version') } onSuccess = => + @.loadingStatus = false @.onUpdateEpic() onError = (data) => @confirm.notify('error') - return @rs.epics.patch(id, patch).then(onSuccess, onError) + return @rs.epics.patch(@.epic.get('id'), patch).then(onSuccess, onError) requestUserStories: (epic) -> - if @.displayUserStories == false - id = @.epic.get('id') + if !@.displayUserStories onSuccess = (data) => @.epicStories = data @@ -69,7 +69,7 @@ class EpicRowController onError = (data) => @confirm.notify('error') - return @rs.userstories.listInEpic(id).then(onSuccess, onError) + return @rs.userstories.listInEpic(@.epic.get('id')).then(onSuccess, onError) else @.displayUserStories = false @@ -83,7 +83,6 @@ class EpicRowController onSuccess = => @.onUpdateEpic() - @confirm.notify('success') onError = (data) => @confirm.notify('error') diff --git a/app/modules/epics/dashboard/epic-row/epic-row.controller.spec.coffee b/app/modules/epics/dashboard/epic-row/epic-row.controller.spec.coffee new file mode 100644 index 00000000..6205a6df --- /dev/null +++ b/app/modules/epics/dashboard/epic-row/epic-row.controller.spec.coffee @@ -0,0 +1,240 @@ +### +# Copyright (C) 2014-2015 Taiga Agile LLC +# +# 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 . +# +# File: epic-row.controller.spec.coffee +### + +describe "EpicRow", -> + epicRowCtrl = null + provide = null + controller = null + mocks = {} + + _mockTgResources = () -> + mocks.tgResources = { + epics: { + patch: sinon.stub() + }, + userstories: { + listInEpic: sinon.stub() + } + } + + provide.value "tgResources", mocks.tgResources + + _mockTgConfirm = () -> + mocks.tgConfirm = { + notify: sinon.stub() + } + + provide.value "$tgConfirm", mocks.tgConfirm + + _mocks = () -> + module ($provide) -> + provide = $provide + _mockTgResources() + _mockTgConfirm() + + return null + + beforeEach -> + module "taigaEpics" + + _mocks() + + inject ($controller) -> + controller = $controller + + EpicRowCtrl = controller "EpicRowCtrl" + EpicRowCtrl.displayUserStories = false + EpicRowCtrl.displayAssignedTo = false + EpicRowCtrl.loadingStatus = false + + it "calculate progress bar in open US", () -> + + EpicRowCtrl = controller "EpicRowCtrl" + + EpicRowCtrl.epic = Immutable.fromJS({ + status_extra_info: { + is_closed: false + } + user_stories_counts: { + opened: 10, + closed: 10 + } + }) + + EpicRowCtrl._calculateProgressBar() + expect(EpicRowCtrl.opened).to.be.equal(10) + expect(EpicRowCtrl.closed).to.be.equal(10) + expect(EpicRowCtrl.total).to.be.equal(20) + expect(EpicRowCtrl.percentage).to.be.equal("50%") + + it "calculate progress bar in zero US", () -> + EpicRowCtrl = controller "EpicRowCtrl" + EpicRowCtrl.epic = Immutable.fromJS({ + status_extra_info: { + is_closed: false + } + user_stories_counts: { + opened: 0, + closed: 0 + } + }) + EpicRowCtrl._calculateProgressBar() + expect(EpicRowCtrl.opened).to.be.equal(0) + expect(EpicRowCtrl.closed).to.be.equal(0) + expect(EpicRowCtrl.total).to.be.equal(0) + expect(EpicRowCtrl.percentage).to.be.equal("0%") + + it "calculate progress bar in zero US", () -> + EpicRowCtrl = controller "EpicRowCtrl" + EpicRowCtrl.epic = Immutable.fromJS({ + status_extra_info: { + is_closed: true + } + }) + EpicRowCtrl._calculateProgressBar() + expect(EpicRowCtrl.percentage).to.be.equal("100%") + + it "Update Epic Status Success", (done) -> + EpicRowCtrl = controller "EpicRowCtrl" + + EpicRowCtrl.epic = Immutable.fromJS({ + id: 1, + version: 1 + }) + + EpicRowCtrl.patch = { + 'status': 'new', + 'version': EpicRowCtrl.epic.get('version') + } + + EpicRowCtrl.loadingStatus = true + EpicRowCtrl.onUpdateEpic = sinon.stub() + + promise = mocks.tgResources.epics.patch.withArgs(EpicRowCtrl.epic.get('id'), EpicRowCtrl.patch).promise().resolve() + + status = "new" + EpicRowCtrl.updateEpicStatus(status).then () -> + expect(EpicRowCtrl.loadingStatus).to.be.false + expect(EpicRowCtrl.displayStatusList).to.be.false + expect(EpicRowCtrl.onUpdateEpic).to.be.called + done() + + it "Update Epic Status Error", (done) -> + EpicRowCtrl = controller "EpicRowCtrl" + + EpicRowCtrl.epic = Immutable.fromJS({ + id: 1, + version: 1 + }) + + EpicRowCtrl.patch = { + 'status': 'new', + 'version': EpicRowCtrl.epic.get('version') + } + + EpicRowCtrl.loadingStatus = true + EpicRowCtrl.onUpdateEpic = sinon.stub() + + promise = mocks.tgResources.epics.patch.withArgs(EpicRowCtrl.epic.get('id'), EpicRowCtrl.patch).promise().reject(new Error('error')) + + status = "new" + EpicRowCtrl.updateEpicStatus(status).then () -> + expect(mocks.tgConfirm.notify).have.been.calledWith('error') + done() + + it "display User Stories", (done) -> + EpicRowCtrl = controller "EpicRowCtrl" + + EpicRowCtrl.displayUserStories = false + EpicRowCtrl.epic = Immutable.fromJS({ + id: 1 + }) + data = true + + promise = mocks.tgResources.userstories.listInEpic.withArgs(EpicRowCtrl.epic.get('id')).promise().resolve(data) + + EpicRowCtrl.requestUserStories(EpicRowCtrl.epic).then () -> + expect(EpicRowCtrl.displayUserStories).to.be.true + expect(EpicRowCtrl.epicStories).is.equal(data) + done() + + it "display User Stories error", (done) -> + EpicRowCtrl = controller "EpicRowCtrl" + EpicRowCtrl.displayUserStories = false + + EpicRowCtrl.epic = Immutable.fromJS({ + id: 1 + }) + + promise = mocks.tgResources.userstories.listInEpic.withArgs(EpicRowCtrl.epic.get('id')).promise().reject(new Error('error')) + + EpicRowCtrl.requestUserStories(EpicRowCtrl.epic).then () -> + expect(mocks.tgConfirm.notify).have.been.calledWith('error') + done() + + it "DO NOT display User Stories", () -> + EpicRowCtrl = controller "EpicRowCtrl" + EpicRowCtrl.displayUserStories = true + + EpicRowCtrl.epic = Immutable.fromJS({ + id: 1 + }) + EpicRowCtrl.requestUserStories(EpicRowCtrl.epic) + expect(EpicRowCtrl.displayUserStories).to.be.false + + it "On remove assigned", () -> + EpicRowCtrl = controller "EpicRowCtrl" + EpicRowCtrl.epic = Immutable.fromJS({ + id: 1, + version: 1 + }) + EpicRowCtrl.patch = { + 'assigned_to': null, + 'version': EpicRowCtrl.epic.get('version') + } + EpicRowCtrl.onUpdateEpic = sinon.stub() + + promise = mocks.tgResources.epics.patch.withArgs(EpicRowCtrl.epic.get('id'), EpicRowCtrl.patch).promise().resolve() + + EpicRowCtrl.onRemoveAssigned().then () -> + expect(EpicRowCtrl.onUpdateEpic).to.have.been.called + + it "On assign to", (done) -> + EpicRowCtrl = controller "EpicRowCtrl" + EpicRowCtrl.epic = Immutable.fromJS({ + id: 1, + version: 1 + }) + id = EpicRowCtrl.epic.get('id') + version = EpicRowCtrl.epic.get('version') + member = { + id: 1 + } + EpicRowCtrl.patch = { + assigned_to: member.id + version: EpicRowCtrl.epic.get('version') + } + + EpicRowCtrl.onUpdateEpic = sinon.stub() + + promise = mocks.tgResources.epics.patch.withArgs(id, EpicRowCtrl.patch).promise().resolve(member) + EpicRowCtrl.onAssignTo(member).then () -> + expect(EpicRowCtrl.onUpdateEpic).to.have.been.called + expect(mocks.tgConfirm.notify).have.been.calledWith('success') + done() diff --git a/app/modules/epics/dashboard/epic-row/epic-row.directive.coffee b/app/modules/epics/dashboard/epic-row/epic-row.directive.coffee index ecf94d4d..70fbb8e3 100644 --- a/app/modules/epics/dashboard/epic-row/epic-row.directive.coffee +++ b/app/modules/epics/dashboard/epic-row/epic-row.directive.coffee @@ -21,7 +21,11 @@ module = angular.module('taigaEpics') EpicRowDirective = () -> + link = (scope, el, attrs, ctrl) -> + ctrl._calculateProgressBar() + return { + link: link, templateUrl:"epics/dashboard/epic-row/epic-row.html", controller: "EpicRowCtrl", controllerAs: "vm", diff --git a/app/modules/epics/dashboard/epic-row/epic-row.jade b/app/modules/epics/dashboard/epic-row/epic-row.jade index c6ff107a..1644ab12 100644 --- a/app/modules/epics/dashboard/epic-row/epic-row.jade +++ b/app/modules/epics/dashboard/epic-row/epic-row.jade @@ -44,18 +44,19 @@ span {{vm.epic.getIn(['status_extra_info', 'name'])}} .status( ng-if="vm.column.status && vm.permissions.canEdit" - ng-mouseleave="displayStatusList = false" + ng-mouseleave="vm.displayStatusList = false" ) button( - ng-click="displayStatusList = true" + ng-click="vm.displayStatusList = true" ng-style="{'color': vm.epic.getIn(['status_extra_info', 'color'])}" + tg-loading="vm.loadingStatus" ) span {{vm.epic.getIn(['status_extra_info', 'name'])}} tg-svg( svg-icon="icon-arrow-down" ) - ul.epic-statuses(ng-show="displayStatusList") + ul.epic-statuses(ng-if="vm.displayStatusList") li( ng-repeat="status in vm.project.epic_statuses | orderBy:'order'" ng-click="vm.updateEpicStatus(status.id)" diff --git a/app/modules/epics/dashboard/epic-row/epic-row.scss b/app/modules/epics/dashboard/epic-row/epic-row.scss index 7760f8e0..3cf55907 100644 --- a/app/modules/epics/dashboard/epic-row/epic-row.scss +++ b/app/modules/epics/dashboard/epic-row/epic-row.scss @@ -19,8 +19,8 @@ background: rgba($red-light, .5); } &.is-closed { - .name { - color: $gray-light; + .name a { + color: lighten($gray-light, 15%); text-decoration: line-through; } } diff --git a/app/modules/epics/dashboard/epics-dashboard.controller.coffee b/app/modules/epics/dashboard/epics-dashboard.controller.coffee index 9e2e6a36..26c2edbf 100644 --- a/app/modules/epics/dashboard/epics-dashboard.controller.coffee +++ b/app/modules/epics/dashboard/epics-dashboard.controller.coffee @@ -32,10 +32,9 @@ class EpicsDashboardController constructor: (@rs, @resources, @params, @errorHandlingService, @lightboxFactory, @lightboxService, @confirm) -> @.sectionName = "Epics" - @._loadProject() @.createEpic = false - _loadProject: () -> + loadProject: () -> return @rs.projects.getBySlug(@params.pslug).then (project) => if not project.is_epics_activated @errorHandlingService.permissionDenied() @@ -43,7 +42,6 @@ class EpicsDashboardController @.loadEpics() loadEpics: () -> - console.log 'reload' projectId = @.project.id return @resources.epics.list(projectId).then (epics) => @.epics = epics diff --git a/app/modules/epics/dashboard/epics-dashboard.controller.spec.coffee b/app/modules/epics/dashboard/epics-dashboard.controller.spec.coffee new file mode 100644 index 00000000..12b98e64 --- /dev/null +++ b/app/modules/epics/dashboard/epics-dashboard.controller.spec.coffee @@ -0,0 +1,142 @@ +### +# Copyright (C) 2014-2015 Taiga Agile LLC +# +# 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 . +# +# File: epic-row.controller.spec.coffee +### + +describe "EpicsDashboard", -> + EpicsDashboardCtrl = null + provide = null + controller = null + mocks = {} + + _mockTgResources = () -> + mocks.tgResources = { + projects: { + getBySlug: sinon.stub() + } + } + + provide.value "$tgResources", mocks.tgResources + + _mockTgResourcesNew = () -> + mocks.tgResourcesNew = { + epics: { + list: sinon.stub() + } + } + + provide.value "tgResources", mocks.tgResourcesNew + + _mockTgConfirm = () -> + mocks.tgConfirm = { + notify: sinon.stub() + } + + provide.value "$tgConfirm", mocks.tgConfirm + + _mockRouteParams = () -> + mocks.routeparams = { + pslug: sinon.stub() + } + + provide.value "$routeParams", mocks.routeparams + + _mockTgErrorHandlingService = () -> + mocks.tgErrorHandlingService = { + permissionDenied: sinon.stub() + } + + provide.value "tgErrorHandlingService", mocks.tgErrorHandlingService + + _mockTgLightboxFactory = () -> + mocks.tgLightboxFactory = { + create: sinon.stub() + } + + provide.value "tgLightboxFactory", mocks.tgLightboxFactory + + _mockLightboxService = () -> + mocks.lightboxService = { + closeAll: sinon.stub() + } + + provide.value "lightboxService", mocks.lightboxService + + _mockTgConfirm = () -> + mocks.tgConfirm = { + notify: sinon.stub() + } + + provide.value "$tgConfirm", mocks.tgConfirm + + _mocks = () -> + module ($provide) -> + provide = $provide + _mockTgResources() + _mockTgResourcesNew() + _mockRouteParams() + _mockTgErrorHandlingService() + _mockTgLightboxFactory() + _mockLightboxService() + _mockTgConfirm() + + return null + + beforeEach -> + module "taigaEpics" + + _mocks() + + inject ($controller) -> + controller = $controller + + EpicsDashboardCtrl = controller "EpicsDashboardCtrl" + + it "load projects", (done) -> + EpicsDashboardCtrl = controller "EpicsDashboardCtrl" + params = mocks.routeparams.pslug + EpicsDashboardCtrl.loadEpics = sinon.stub() + project = { + is_epics_activated: false + } + promise = mocks.tgResources.projects.getBySlug.withArgs(params).promise().resolve(project) + EpicsDashboardCtrl.loadProject().then () -> + expect(mocks.tgErrorHandlingService.permissionDenied).have.been.called + expect(EpicsDashboardCtrl.project).is.equal(project) + expect(EpicsDashboardCtrl.loadEpics).have.been.called + done() + + it "load epics", (done) -> + EpicsDashboardCtrl = controller "EpicsDashboardCtrl" + EpicsDashboardCtrl.project = { + id: 1 + } + epics = { + id: 1 + } + promise = mocks.tgResourcesNew.epics.list.withArgs(EpicsDashboardCtrl.project.id).promise().resolve(epics) + EpicsDashboardCtrl.loadEpics().then () -> + expect(EpicsDashboardCtrl.epics).is.equal(epics) + done() + + it "on create epic", () -> + EpicsDashboardCtrl = controller "EpicsDashboardCtrl" + EpicsDashboardCtrl.loadEpics = sinon.stub() + EpicsDashboardCtrl._onCreateEpic() + expect(mocks.lightboxService.closeAll).have.been.called + expect(mocks.tgConfirm.notify).have.been.calledWith("success") + expect(EpicsDashboardCtrl.loadEpics).have.been.called diff --git a/app/modules/epics/dashboard/epics-dashboard.jade b/app/modules/epics/dashboard/epics-dashboard.jade index 50abb268..dd9f88ee 100644 --- a/app/modules/epics/dashboard/epics-dashboard.jade +++ b/app/modules/epics/dashboard/epics-dashboard.jade @@ -1,4 +1,4 @@ -.wrapper() +.wrapper(ng-init="vm.loadProject()") tg-project-menu section.main(role="main") header.header-with-actions diff --git a/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee b/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee index 6f02f06f..ecc9ae69 100644 --- a/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee +++ b/app/modules/epics/dashboard/epics-table/epics-table.controller.coffee @@ -34,7 +34,6 @@ class EpicsTableController status: true, progress: true } - @._checkPermissions() toggleEpicTableOptions: () -> @.displayOptions = !@.displayOptions diff --git a/app/modules/epics/dashboard/epics-table/epics-table.controller.spec.coffee b/app/modules/epics/dashboard/epics-table/epics-table.controller.spec.coffee new file mode 100644 index 00000000..95f19644 --- /dev/null +++ b/app/modules/epics/dashboard/epics-table/epics-table.controller.spec.coffee @@ -0,0 +1,64 @@ +### +# Copyright (C) 2014-2015 Taiga Agile LLC +# +# 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 . +# +# File: epic-row.controller.spec.coffee +### + +describe "EpicTable", -> + epicTableCtrl = null + provide = null + controller = null + mocks = {} + + _mocks = () -> + module ($provide) -> + provide = $provide + + return null + + beforeEach -> + module "taigaEpics" + + _mocks() + + inject ($controller) -> + controller = $controller + + it "toggle table options", () -> + epicTableCtrl = controller "EpicsTableCtrl" + epicTableCtrl.displayOptions = true + epicTableCtrl.toggleEpicTableOptions() + expect(epicTableCtrl.displayOptions).to.be.false + + it "can edit", () -> + epicTableCtrl = controller "EpicsTableCtrl" + epicTableCtrl.project = { + my_permissions: [ + 'modify_epic' + ] + } + epicTableCtrl._checkPermissions() + expect(epicTableCtrl.permissions.canEdit).to.be.true + + it "can NOT edit", () -> + epicTableCtrl = controller "EpicsTableCtrl" + epicTableCtrl.project = { + my_permissions: [ + 'modify_us' + ] + } + epicTableCtrl._checkPermissions() + expect(epicTableCtrl.permissions.canEdit).to.be.false diff --git a/app/modules/epics/dashboard/epics-table/epics-table.directive.coffee b/app/modules/epics/dashboard/epics-table/epics-table.directive.coffee index 6d89296e..39827f77 100644 --- a/app/modules/epics/dashboard/epics-table/epics-table.directive.coffee +++ b/app/modules/epics/dashboard/epics-table/epics-table.directive.coffee @@ -21,7 +21,11 @@ module = angular.module('taigaEpics') EpicsTableDirective = () -> + link = (scope, el, attrs, ctrl) -> + ctrl._checkPermissions() + return { + link: link, templateUrl:"epics/dashboard/epics-table/epics-table.html", controller: "EpicsTableCtrl", controllerAs: "vm", diff --git a/app/modules/home/home.service.spec.coffee b/app/modules/home/home.service.spec.coffee index 000477e9..a547feb8 100644 --- a/app/modules/home/home.service.spec.coffee +++ b/app/modules/home/home.service.spec.coffee @@ -72,7 +72,7 @@ describe "tgHome", -> _setup() _inject() - it.only "get work in progress by user", (done) -> + it "get work in progress by user", (done) -> userId = 3 project1 = {id: 1, name: "fake1", slug: "project-1"}