diff --git a/src/app/article/article-default-view-component.spec.ts b/src/app/article/article-default-view-component.spec.ts index 3cb7d19..20dc084 100644 --- a/src/app/article/article-default-view-component.spec.ts +++ b/src/app/article/article-default-view-component.spec.ts @@ -65,16 +65,36 @@ describe("Components", () => { expect(state.transitionTo).toHaveBeenCalled(); }); + it("hide button to delete article when user doesn't have permission", () => { + expect(helper.find(".article-toolbar .delete-article").attr('style')).toEqual("display: none; "); + }); + + it("hide button to edit article when user doesn't have permission", () => { + expect(helper.find(".article-toolbar .edit-article").attr('style')).toEqual("display: none; "); + }); + + it("show button to edit article when user has permission", () => { + (helper.component['article'])['permissions'] = ['allow_edit']; + helper.detectChanges(); + expect(helper.find(".article-toolbar .edit-article").attr('style')).toEqual(''); + }); + + it("show button to delete article when user has permission", () => { + (helper.component['article'])['permissions'] = ['allow_delete']; + helper.detectChanges(); + expect(helper.find(".article-toolbar .delete-article").attr('style')).toEqual(''); + }); + /** * Execute the delete method on the target component */ function doDeleteArticle() { // Create a mock for the notification service confirmation - spyOn(helper.component.notificationService, 'confirmation').and.callFake(function (params: Function) { + spyOn(helper.component.notificationService, 'confirmation').and.callFake(function(params: Function) { }); // Create a mock for the ArticleService removeArticle method - spyOn(helper.component.articleService, 'remove').and.callFake(function (param: noosfero.Article) { + spyOn(helper.component.articleService, 'remove').and.callFake(function(param: noosfero.Article) { return { catch: () => { } diff --git a/src/app/article/article-default-view.component.ts b/src/app/article/article-default-view.component.ts index 51bd71a..39541bc 100644 --- a/src/app/article/article-default-view.component.ts +++ b/src/app/article/article-default-view.component.ts @@ -6,6 +6,7 @@ import {ArticleToolbarHotspotComponent} from "../hotspot/article-toolbar-hotspot import {ArticleContentHotspotComponent} from "../hotspot/article-content-hotspot.component"; import {ArticleService} from "./../../lib/ng-noosfero-api/http/article.service"; import { NotificationService } from "./../shared/services/notification.service"; +import {PermissionDirective} from '../shared/components/permission/permission.directive'; /** * @ngdoc controller @@ -16,7 +17,8 @@ import { NotificationService } from "./../shared/services/notification.service"; */ @Component({ selector: 'noosfero-default-article', - templateUrl: 'app/article/article.html' + templateUrl: 'app/article/article.html', + directives: [PermissionDirective] }) @Inject("$state", ArticleService, NotificationService) export class ArticleDefaultViewComponent { diff --git a/src/app/article/article.html b/src/app/article/article.html index 123a264..876ad3c 100644 --- a/src/app/article/article.html +++ b/src/app/article/article.html @@ -4,13 +4,15 @@
- - {{"article.actions.edit" | translate}} - - - {{"article.actions.delete" | translate}} - - +
+ + {{"article.actions.edit" | translate}} + + + {{"article.actions.delete" | translate}} + + +
diff --git a/src/app/article/content-viewer/navbar-actions.html b/src/app/article/content-viewer/navbar-actions.html index fac7f40..72f9c01 100644 --- a/src/app/article/content-viewer/navbar-actions.html +++ b/src/app/article/content-viewer/navbar-actions.html @@ -1,4 +1,4 @@ -