Commit 632a48fda9a6aaf6ff25d346f858372a71589c1f

Authored by Leandro Santos
1 parent 4b151aa3

adding unit tests for profile iamge component and permission service

src/app/profile/image/profile-image.component.spec.ts
@@ -26,6 +26,7 @@ describe("Components", () => { @@ -26,6 +26,7 @@ describe("Components", () => {
26 beforeEach((done) => { 26 beforeEach((done) => {
27 let scope = helpers.mocks.scopeWithEvents; 27 let scope = helpers.mocks.scopeWithEvents;
28 let profileService = jasmine.createSpyObj("profileService", ["upload"]); 28 let profileService = jasmine.createSpyObj("profileService", ["upload"]);
  29 + let permissionService = jasmine.createSpyObj("permissionService", ["isAllowed"]);
29 let properties = { profile: { custom_footer: "footer" } }; 30 let properties = { profile: { custom_footer: "footer" } };
30 let cls = createClass({ 31 let cls = createClass({
31 template: htmlTemplate, 32 template: htmlTemplate,
@@ -33,6 +34,7 @@ describe("Components", () => { @@ -33,6 +34,7 @@ describe("Components", () => {
33 properties: properties, 34 properties: properties,
34 providers: [ 35 providers: [
35 helpers.createProviderToValue("ProfileService", profileService), 36 helpers.createProviderToValue("ProfileService", profileService),
  37 + helpers.createProviderToValue("PermissionService", permissionService),
36 helpers.createProviderToValue("$uibModal", helpers.mocks.$modal), 38 helpers.createProviderToValue("$uibModal", helpers.mocks.$modal),
37 helpers.createProviderToValue("$scope", scope) 39 helpers.createProviderToValue("$scope", scope)
38 ] 40 ]
@@ -64,5 +66,22 @@ describe("Components", () => { @@ -64,5 +66,22 @@ describe("Components", () => {
64 done(); 66 done();
65 }); 67 });
66 68
  69 + it("is editable be true in blocks that are editable", (done) => {
  70 + expect(helper.component.editable).toBe(true);
  71 + done();
  72 + });
  73 +
  74 + it("is not editable in editable blocks but without permission", (done) => {
  75 + helper.component['permissionService'].isAllowed = jasmine.createSpy("isAllowed").and.returnValue(false);
  76 + expect(helper.component.isEditable()).toBe(false);
  77 + done();
  78 + });
  79 +
  80 + it("is editable in editable blocks with edit permission", (done) => {
  81 + helper.component['permissionService'].isAllowed = jasmine.createSpy("isAllowed").and.returnValue(true);
  82 + expect(helper.component.isEditable()).toBe(true);
  83 + done();
  84 + });
  85 +
67 }); 86 });
68 }); 87 });
src/app/profile/image/profile-image.component.ts
@@ -16,7 +16,7 @@ import { ProfileImageEditorComponent } from "./profile-image-editor.component"; @@ -16,7 +16,7 @@ import { ProfileImageEditorComponent } from "./profile-image-editor.component";
16 }) 16 })
17 @Inject(ProfileService, PermissionService, "$uibModal", "$scope") 17 @Inject(ProfileService, PermissionService, "$uibModal", "$scope")
18 export class ProfileImageComponent { 18 export class ProfileImageComponent {
19 - 19 +
20 /** 20 /**
21 * @ngdoc property 21 * @ngdoc property
22 * @name profile 22 * @name profile
@@ -36,10 +36,7 @@ export class ProfileImageComponent { @@ -36,10 +36,7 @@ export class ProfileImageComponent {
36 36
37 @Input() editable: boolean; 37 @Input() editable: boolean;
38 38
39 - @Input() editClass: string;  
40 -  
41 picFile: any; 39 picFile: any;
42 - croppedDataUrl: any;  
43 modalInstance: any; 40 modalInstance: any;
44 41
45 constructor(private profileService: ProfileService, private permissionService: PermissionService, private $uibModal: ng.ui.bootstrap.IModalService, private $scope: ng.IScope) { 42 constructor(private profileService: ProfileService, private permissionService: PermissionService, private $uibModal: ng.ui.bootstrap.IModalService, private $scope: ng.IScope) {
@@ -64,16 +61,6 @@ export class ProfileImageComponent { @@ -64,16 +61,6 @@ export class ProfileImageComponent {
64 } 61 }
65 } 62 }
66 63
67 - private _showCamera: boolean = false;  
68 -  
69 - showChange(show: boolean) {  
70 - this._showCamera = show;  
71 - }  
72 -  
73 - showCamera() {  
74 - return this._showCamera;  
75 - }  
76 -  
77 isEditable() { 64 isEditable() {
78 return this.editable && this.permissionService.isAllowed(this.profile, 'allow_edit'); 65 return this.editable && this.permissionService.isAllowed(this.profile, 'allow_edit');
79 } 66 }
src/app/shared/services/permission.service.spec.ts 0 → 100644
@@ -0,0 +1,137 @@ @@ -0,0 +1,137 @@
  1 +import { PermissionService } from './permission.service';
  2 +
  3 +
  4 +describe("PermissionService", () => {
  5 +
  6 + // Profile TESTS
  7 + it("check if a person has no permission if there is no permissions in object", (done) => {
  8 + let permissionService: PermissionService = new PermissionService();
  9 + let target = <noosfero.Profile>{ id: 1, identifier: "some" };
  10 + expect(permissionService.isAllowed(target, null)).toBe(false);
  11 + done();
  12 + });
  13 +
  14 + it("check if a person has no permission if the permissions is null", (done) => {
  15 + let permissionService: PermissionService = new PermissionService();
  16 + let target = <noosfero.Profile>{ id: 1, identifier: "some", permissions: null };
  17 + expect(permissionService.isAllowed(target, null)).toBe(false);
  18 + done();
  19 + });
  20 +
  21 + it("check if a person has no permission if the permissions is empty", (done) => {
  22 + let permissionService: PermissionService = new PermissionService();
  23 + let target = <noosfero.Profile>{ id: 1, identifier: "some", permissions: [] };
  24 + expect(permissionService.isAllowed(target, null)).toBe(false);
  25 + done();
  26 + });
  27 +
  28 + it("check person has no permission if permissions has no element named like permission desired", (done) => {
  29 + let permissionService: PermissionService = new PermissionService();
  30 + let target = <noosfero.Profile>{ id: 1, identifier: "some", permissions: ['another_permission'] };
  31 + expect(permissionService.isAllowed(target, 'some_permission')).toBe(false);
  32 + done();
  33 + });
  34 +
  35 + it("check person has permission if permissions has the element named like permission desired", (done) => {
  36 + let permissionService: PermissionService = new PermissionService();
  37 + let target = <noosfero.Profile>{ id: 1, identifier: "some", permissions: ['some_permission'] };
  38 + expect(permissionService.isAllowed(target, 'some_permission')).toBe(true);
  39 + done();
  40 + });
  41 +
  42 + it("check person has permission if permissions has some element named like permission desired", (done) => {
  43 + let permissionService: PermissionService = new PermissionService();
  44 + let target = <noosfero.Profile>{ id: 1, identifier: "some", permissions: ['another', 'some_permission'] };
  45 + expect(permissionService.isAllowed(target, 'some_permission')).toBe(true);
  46 + done();
  47 + });
  48 +
  49 +
  50 + // Comment TESTS
  51 + it("check if a person has no permission if there is no permissions in object", (done) => {
  52 + let permissionService: PermissionService = new PermissionService();
  53 + let target = <noosfero.Comment>{ id: 1 };
  54 + expect(permissionService.isAllowed(target, null)).toBe(false);
  55 + done();
  56 + });
  57 +
  58 + it("check if a person has no permission if the permissions is null", (done) => {
  59 + let permissionService: PermissionService = new PermissionService();
  60 + let target = <noosfero.Comment>{ id: 1, permissions: null };
  61 + expect(permissionService.isAllowed(target, null)).toBe(false);
  62 + done();
  63 + });
  64 +
  65 + it("check if a person has no permission if the permissions is empty", (done) => {
  66 + let permissionService: PermissionService = new PermissionService();
  67 + let target = <noosfero.Comment>{ id: 1, permissions: [] };
  68 + expect(permissionService.isAllowed(target, null)).toBe(false);
  69 + done();
  70 + });
  71 +
  72 + it("check person has no permission if permissions has no element named like permission desired", (done) => {
  73 + let permissionService: PermissionService = new PermissionService();
  74 + let target = <noosfero.Comment>{ id: 1, permissions: ['another_permission'] };
  75 + expect(permissionService.isAllowed(target, 'some_permission')).toBe(false);
  76 + done();
  77 + });
  78 +
  79 + it("check person has permission if permissions has the element named like permission desired", (done) => {
  80 + let permissionService: PermissionService = new PermissionService();
  81 + let target = <noosfero.Comment>{ id: 1, permissions: ['some_permission'] };
  82 + expect(permissionService.isAllowed(target, 'some_permission')).toBe(true);
  83 + done();
  84 + });
  85 +
  86 + it("check person has permission if permissions has some element named like permission desired", (done) => {
  87 + let permissionService: PermissionService = new PermissionService();
  88 + let target = <noosfero.Comment>{ id: 1, permissions: ['another', 'some_permission'] };
  89 + expect(permissionService.isAllowed(target, 'some_permission')).toBe(true);
  90 + done();
  91 + });
  92 +
  93 + // Article TESTS
  94 + it("check if a person has no permission if there is no permissions in object", (done) => {
  95 + let permissionService: PermissionService = new PermissionService();
  96 + let target = <noosfero.Article>{ id: 1 };
  97 + expect(permissionService.isAllowed(target, null)).toBe(false);
  98 + done();
  99 + });
  100 +
  101 + it("check if a person has no permission if the permissions is null", (done) => {
  102 + let permissionService: PermissionService = new PermissionService();
  103 + let target = <noosfero.Article>{ id: 1, permissions: null };
  104 + expect(permissionService.isAllowed(target, null)).toBe(false);
  105 + done();
  106 + });
  107 +
  108 + it("check if a person has no permission if the permissions is empty", (done) => {
  109 + let permissionService: PermissionService = new PermissionService();
  110 + let target = <noosfero.Article>{ id: 1, permissions: [] };
  111 + expect(permissionService.isAllowed(target, null)).toBe(false);
  112 + done();
  113 + });
  114 +
  115 + it("check person has no permission if permissions has no element named like permission desired", (done) => {
  116 + let permissionService: PermissionService = new PermissionService();
  117 + let target = <noosfero.Article>{ id: 1, permissions: ['another_permission'] };
  118 + expect(permissionService.isAllowed(target, 'some_permission')).toBe(false);
  119 + done();
  120 + });
  121 +
  122 + it("check person has permission if permissions has the element named like permission desired", (done) => {
  123 + let permissionService: PermissionService = new PermissionService();
  124 + let target = <noosfero.Article>{ id: 1, permissions: ['some_permission'] };
  125 + expect(permissionService.isAllowed(target, 'some_permission')).toBe(true);
  126 + done();
  127 + });
  128 +
  129 + it("check person has permission if permissions has some element named like permission desired", (done) => {
  130 + let permissionService: PermissionService = new PermissionService();
  131 + let target = <noosfero.Article>{ id: 1, permissions: ['another', 'some_permission'] };
  132 + expect(permissionService.isAllowed(target, 'some_permission')).toBe(true);
  133 + done();
  134 + });
  135 +
  136 +
  137 +});