diff --git a/app/modules/feedback/feedback.service.coffee b/app/modules/feedback/feedback.service.coffee index 86b8d6f9..06f3e5f5 100644 --- a/app/modules/feedback/feedback.service.coffee +++ b/app/modules/feedback/feedback.service.coffee @@ -3,7 +3,6 @@ class FeedbackService extends taiga.Service constructor: (@lightboxFactory) -> - sendFeedback: -> @lightboxFactory.create("tg-lb-feedback", { "class": "lightbox lightbox-feedback lightbox-generic-form" diff --git a/app/modules/feedback/feedback.service.spec.coffee b/app/modules/feedback/feedback.service.spec.coffee new file mode 100644 index 00000000..da067961 --- /dev/null +++ b/app/modules/feedback/feedback.service.spec.coffee @@ -0,0 +1,38 @@ +describe "tgFeedbackService", -> + feedbackService = provide = null + mocks = {} + + _mockTgLightboxFactory = () -> + mocks.tgLightboxFactory = { + create: sinon.stub() + } + + provide.value "tgLightboxFactory", mocks.tgLightboxFactory + + _inject = (callback) -> + inject (_tgFeedbackService_) -> + feedbackService = _tgFeedbackService_ + callback() if callback + + _mocks = () -> + module ($provide) -> + provide = $provide + _mockTgLightboxFactory() + return null + + _setup = -> + _mocks() + + beforeEach -> + module "taigaFeedback" + _setup() + _inject() + + it "work in progress filled", () -> + expect(mocks.tgLightboxFactory.create.callCount).to.be.equal(0) + feedbackService.sendFeedback() + expect(mocks.tgLightboxFactory.create.callCount).to.be.equal(1) + params = { + "class": "lightbox lightbox-feedback lightbox-generic-form" + } + expect(mocks.tgLightboxFactory.create.calledWith("tg-lb-feedback", params)).to.be.true() diff --git a/app/modules/home/duties/duty.directive.spec.coffee b/app/modules/home/duties/duty.directive.spec.coffee index 71909cbc..88ceb7b7 100644 --- a/app/modules/home/duties/duty.directive.spec.coffee +++ b/app/modules/home/duties/duty.directive.spec.coffee @@ -1,4 +1,4 @@ -describe "homeDirective", () -> +describe "dutyDirective", () -> scope = compile = provide = null mockTgProjectsService = null mockTgNavUrls = null @@ -47,7 +47,7 @@ describe "homeDirective", () -> scope = $rootScope.$new() compile = $compile - it "duty directive content", () -> + it "duty directive scope content", () -> scope.duty = { project: 1 ref: 1 diff --git a/app/modules/home/projects/home-project-list-directive.spec.coffee b/app/modules/home/projects/home-project-list-directive.spec.coffee new file mode 100644 index 00000000..1ee02cbe --- /dev/null +++ b/app/modules/home/projects/home-project-list-directive.spec.coffee @@ -0,0 +1,65 @@ +describe "homeProjectListDirective", () -> + scope = compile = provide = null + mockTgProjectsService = null + template = "
" + recents = [] + + createDirective = () -> + elm = compile(template)(scope) + return elm + + _mockTgProjectsService = () -> + mockTgProjectsService = { + newProject: sinon.stub() + projects: { + get: sinon.stub() + } + } + provide.value "tgProjectsService", mockTgProjectsService + + _mockTranslateFilter = () -> + mockTranslateFilter = (value) -> + return value + provide.value "translateFilter", mockTranslateFilter + + _mocks = () -> + module ($provide) -> + provide = $provide + _mockTgProjectsService() + _mockTranslateFilter() + return null + + beforeEach -> + module "templates" + module "taigaHome" + + _mocks() + + inject ($rootScope, $compile) -> + scope = $rootScope.$new() + compile = $compile + + recents = Immutable.fromJS([ + { + id:1 + }, + { + id: 2 + } + ]) + + it "home project list directive scope content", () -> + mockTgProjectsService.projects.get + .withArgs("recents") + .returns(recents) + + elm = createDirective() + scope.$apply() + expect(elm.isolateScope().vm.projects.size).to.be.equal(2) + + it "home project list directive newProject", () -> + elm = createDirective() + scope.$apply() + expect(mockTgProjectsService.newProject.callCount).to.be.equal(0) + elm.isolateScope().vm.newProject() + expect(mockTgProjectsService.newProject.callCount).to.be.equal(1) diff --git a/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.directive.spec.coffee b/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.directive.spec.coffee new file mode 100644 index 00000000..90420887 --- /dev/null +++ b/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.directive.spec.coffee @@ -0,0 +1,58 @@ +describe "dropdownProjectListDirective", () -> + scope = compile = provide = null + mockTgProjectsService = null + template = "" + recents = [] + + createDirective = () -> + elm = compile(template)(scope) + return elm + + _mockTgProjectsService = () -> + mockTgProjectsService = { + newProject: sinon.stub() + projects: { + get: sinon.stub() + } + } + provide.value "tgProjectsService", mockTgProjectsService + + _mockTranslateFilter = () -> + mockTranslateFilter = (value) -> + return value + provide.value "translateFilter", mockTranslateFilter + + _mocks = () -> + module ($provide) -> + provide = $provide + _mockTgProjectsService() + _mockTranslateFilter() + return null + + beforeEach -> + module "templates" + module "taigaNavigationBar" + + _mocks() + + inject ($rootScope, $compile) -> + scope = $rootScope.$new() + compile = $compile + + recents = Immutable.fromJS([ + { + id:1 + }, + { + id: 2 + } + ]) + + it "dropdown project list directive scope content", () -> + mockTgProjectsService.projects.get + .withArgs("recents") + .returns(recents) + + elm = createDirective() + scope.$apply() + expect(elm.isolateScope().vm.projects.size).to.be.equal(2) diff --git a/app/modules/navigation-bar/dropdown-user/dropdown-user.directive.spec.coffee b/app/modules/navigation-bar/dropdown-user/dropdown-user.directive.spec.coffee new file mode 100644 index 00000000..f4994de2 --- /dev/null +++ b/app/modules/navigation-bar/dropdown-user/dropdown-user.directive.spec.coffee @@ -0,0 +1,99 @@ +describe "dropdownUserDirective", () -> + scope = compile = provide = null + mockTgAuth = null + mockTgConfig = null + mockTgLocation = null + mockTgNavUrls = null + mockTgFeedbackService = null + template = "" + + createDirective = () -> + elm = compile(template)(scope) + return elm + + _mockTranslateFilter = () -> + mockTranslateFilter = (value) -> + return value + provide.value "translateFilter", mockTranslateFilter + + _mockTgAuth = () -> + mockTgAuth = { + getUser: sinon.stub() + logout: sinon.stub() + } + provide.value "$tgAuth", mockTgAuth + + _mockTgConfig = () -> + mockTgConfig = { + get: sinon.stub() + } + provide.value "$tgConfig", mockTgConfig + + _mockTgLocation = () -> + mockTgLocation = { + path: sinon.stub() + } + provide.value "$tgLocation", mockTgLocation + + _mockTgNavUrls = () -> + mockTgNavUrls = { + resolve: sinon.stub() + } + provide.value "$tgNavUrls", mockTgNavUrls + + _mockTgFeedbackService = () -> + mockTgFeedbackService = { + sendFeedback: sinon.stub() + } + provide.value "tgFeedbackService", mockTgFeedbackService + + _mocks = () -> + module ($provide) -> + provide = $provide + _mockTranslateFilter() + _mockTgAuth() + _mockTgConfig() + _mockTgLocation() + _mockTgNavUrls() + _mockTgFeedbackService() + return null + + beforeEach -> + module "templates" + module "taigaNavigationBar" + + _mocks() + + inject ($rootScope, $compile) -> + scope = $rootScope.$new() + compile = $compile + + it "dropdown user directive scope content", () -> + mockTgAuth.getUser.withArgs().returns({id: 66}) + mockTgConfig.get.withArgs("feedbackEnabled").returns(true) + elm = createDirective() + scope.$apply() + + vm = elm.isolateScope().vm + expect(vm.user.id).to.be.equal(66) + expect(vm.isFeedbackEnabled).to.be.equal(true) + + it "dropdown user log out", () -> + mockTgNavUrls.resolve.withArgs("login").returns("/login") + elm = createDirective() + scope.$apply() + vm = elm.isolateScope().vm + expect(mockTgAuth.logout.callCount).to.be.equal(0) + expect(mockTgLocation.path.callCount).to.be.equal(0) + vm.logout() + expect(mockTgAuth.logout.callCount).to.be.equal(1) + expect(mockTgLocation.path.callCount).to.be.equal(1) + expect(mockTgLocation.path.calledWith("/login")).to.be.true() + + it "dropdown user send feedback", () -> + elm = createDirective() + scope.$apply() + vm = elm.isolateScope().vm + expect(mockTgFeedbackService.sendFeedback.callCount).to.be.equal(0) + vm.sendFeedback() + expect(mockTgFeedbackService.sendFeedback.callCount).to.be.equal(1) diff --git a/app/modules/navigation-bar/navigation-bar.directive.spec.coffee b/app/modules/navigation-bar/navigation-bar.directive.spec.coffee new file mode 100644 index 00000000..8e909f54 --- /dev/null +++ b/app/modules/navigation-bar/navigation-bar.directive.spec.coffee @@ -0,0 +1,66 @@ +describe "navigationBarDirective", () -> + scope = compile = provide = null + mockTgProjectsService = null + template = "" + recents = [] + + createDirective = () -> + elm = compile(template)(scope) + return elm + + _mockTgProjectsService = () -> + mockTgProjectsService = { + newProject: sinon.stub() + projects: { + get: sinon.stub() + } + } + provide.value "tgProjectsService", mockTgProjectsService + + _mockTranslateFilter = () -> + mockTranslateFilter = (value) -> + return value + provide.value "translateFilter", mockTranslateFilter + + _mockTgDropdownProjectListDirective = () -> + provide.factory 'tgDropdownProjectListDirective', () -> {} + + _mockTgDropdownUserDirective = () -> + provide.factory 'tgDropdownUserDirective', () -> {} + + _mocks = () -> + module ($provide) -> + provide = $provide + _mockTgProjectsService() + _mockTranslateFilter() + _mockTgDropdownProjectListDirective() + _mockTgDropdownUserDirective() + return null + + beforeEach -> + module "templates" + module "taigaNavigationBar" + + _mocks() + + inject ($rootScope, $compile) -> + scope = $rootScope.$new() + compile = $compile + + recents = Immutable.fromJS([ + { + id:1 + }, + { + id: 2 + } + ]) + + it "navigation bar directive scope content", () -> + mockTgProjectsService.projects.get + .withArgs("recents") + .returns(recents) + + elm = createDirective() + scope.$apply() + expect(elm.isolateScope().vm.projects.size).to.be.equal(2) diff --git a/app/modules/projects/projects.service.coffee b/app/modules/projects/projects.service.coffee index 11c41624..ba109f6c 100644 --- a/app/modules/projects/projects.service.coffee +++ b/app/modules/projects/projects.service.coffee @@ -24,9 +24,6 @@ class ProjectsService extends taiga.Service _.map projects, (project) => project.url = @projectUrl.get(project) - - console.log project.memberships - project.colorized_tags = [] if project.tags