Commit 0af91d992bc220279a9f65b26640e73501ac6db7

Authored by Victor Costa
1 parent 1577c09b

List roles when accept add member tasks

src/app/task/task-list/task-accept.component.spec.ts
... ... @@ -8,6 +8,7 @@ describe("Components", () => {
8 8 describe("Task Accept Component", () => {
9 9  
10 10 let task = { id: 1, type: "AddMember" };
  11 + let roleService = jasmine.createSpyObj("roleService", ["getByProfile"]);
11 12  
12 13 beforeEach(angular.mock.module("templates"));
13 14  
... ... @@ -15,7 +16,10 @@ describe("Components", () => {
15 16 return helpers.quickCreateComponent({
16 17 template: htmlTemplate,
17 18 directives: [TaskAcceptComponent],
18   - properties: { task: task }
  19 + properties: { task: task },
  20 + providers: [
  21 + helpers.createProviderToValue("RoleService", roleService)
  22 + ]
19 23 });
20 24 }
21 25  
... ...
src/app/task/types/add-member/add-member-accept.html
... ... @@ -2,7 +2,7 @@
2 2 <label>Select Roles:</label>
3 3 <div class="form-group roles">
4 4 <div class="checkbox" ng-repeat="role in ctrl.roles">
5   - <input type="checkbox"> {{role}}
  5 + <input type="checkbox"> {{role.name}}
6 6 </div>
7 7 </div>
8 8 </div>
... ...
src/app/task/types/add-member/add-member-task-accept.component.ts
1 1 import { Component, Input, Inject } from "ng-forward";
  2 +import { RoleService } from "../../../../lib/ng-noosfero-api/http/role.service";
2 3  
3 4 @Component({
4 5 selector: "add-member-task-accept",
5 6 templateUrl: "app/task/types/add-member/add-member-accept.html",
6 7 })
  8 +@Inject(RoleService)
7 9 export class AddMemberTaskAcceptComponent {
8 10  
9 11 @Input() task: noosfero.Task;
10   - roles: any;
  12 + roles: noosfero.Role[];
11 13  
12   - constructor() {
13   - // TODO list roles from API
14   - this.roles = ["Profile Administrator", "Member", "Moderator"];
15   - }
  14 + constructor(private roleService: RoleService) { }
16 15  
  16 + ngOnInit() {
  17 + if (!this.task.target) return;
  18 + this.roleService.getByProfile(this.task.target.id).then((result: noosfero.RestResult<noosfero.Role[]>) => {
  19 + this.roles = result.data;
  20 + });
  21 + }
17 22 }
... ...
src/lib/ng-noosfero-api/http/role.service.spec.ts 0 → 100644
... ... @@ -0,0 +1,33 @@
  1 +import { RoleService } from "./role.service";
  2 +
  3 +describe("Services", () => {
  4 +
  5 + describe("Role Service", () => {
  6 +
  7 + let $httpBackend: ng.IHttpBackendService;
  8 + let roleService: RoleService;
  9 +
  10 + beforeEach(angular.mock.module("main", ($translateProvider: angular.translate.ITranslateProvider) => {
  11 + $translateProvider.translations('en', {});
  12 + }));
  13 +
  14 + beforeEach(inject((_$httpBackend_: ng.IHttpBackendService, _RoleService_: RoleService) => {
  15 + $httpBackend = _$httpBackend_;
  16 + roleService = _RoleService_;
  17 + }));
  18 +
  19 +
  20 + describe("Succesfull requests", () => {
  21 +
  22 + it("list organization roles", (done) => {
  23 + $httpBackend.expectGET(`/api/v1/profiles/1/roles`).respond(200, { roles: [{ id: 1 }] });
  24 + roleService.getByProfile(1).then((result: noosfero.RestResult<noosfero.Role[]>) => {
  25 + expect(result.data).toEqual([{ id: 1 }]);
  26 + done();
  27 + });
  28 + $httpBackend.flush();
  29 + });
  30 + });
  31 +
  32 + });
  33 +});
... ...
src/lib/ng-noosfero-api/http/role.service.ts 0 → 100644
... ... @@ -0,0 +1,27 @@
  1 +import { Injectable, Inject } from "ng-forward";
  2 +import { RestangularService } from "./restangular_service";
  3 +
  4 +@Injectable()
  5 +@Inject("Restangular", "$q", "$log")
  6 +export class RoleService extends RestangularService<noosfero.Role> {
  7 +
  8 + constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService) {
  9 + super(Restangular, $q, $log);
  10 + }
  11 +
  12 + getResourcePath() {
  13 + return "roles";
  14 + }
  15 +
  16 + getDataKeys() {
  17 + return {
  18 + singular: 'role',
  19 + plural: 'roles'
  20 + };
  21 + }
  22 +
  23 + getByProfile(profileId: number, params: any = {}) {
  24 + return this.list(this.restangularService.one("profiles", profileId), params);
  25 + }
  26 +
  27 +}
... ...
src/lib/ng-noosfero-api/http/task.service.spec.ts
... ... @@ -21,7 +21,7 @@ describe(&quot;Services&quot;, () =&gt; {
21 21 describe("Succesfull requests", () => {
22 22  
23 23 it("list pending tasks", (done) => {
24   - $httpBackend.expectGET(`/api/v1/tasks?all_pending=true`).respond(200, { tasks: [{ id: 1 }] });
  24 + $httpBackend.expectGET(`/api/v1/tasks?all_pending=true&status=1`).respond(200, { tasks: [{ id: 1 }] });
25 25 taskService.getAllPending().then((result: noosfero.RestResult<noosfero.Task[]>) => {
26 26 expect(result.data).toEqual([{ id: 1 }]);
27 27 done();
... ...
src/lib/ng-noosfero-api/http/task.service.ts
... ... @@ -22,6 +22,7 @@ export class TaskService extends RestangularService&lt;noosfero.Task&gt; {
22 22  
23 23 getAllPending(params: any = {}) {
24 24 params['all_pending'] = true;
  25 + params['status'] = 1;
25 26 return this.list(null, params);
26 27 }
27 28  
... ...
src/lib/ng-noosfero-api/interfaces/role.ts 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +namespace noosfero {
  2 + /**
  3 + * @ngdoc interface
  4 + * @name noosfero.Role
  5 + * @description
  6 + * A representation of a Role in Noosfero.
  7 + */
  8 + export interface Role extends RestModel {
  9 + name: string;
  10 + key: string;
  11 + }
  12 +}
... ...
src/lib/ng-noosfero-api/interfaces/task.ts
... ... @@ -9,5 +9,6 @@ namespace noosfero {
9 9 type: string;
10 10 accept_details: boolean;
11 11 reject_details: boolean;
  12 + target: noosfero.Profile | noosfero.Environment;
12 13 }
13 14 }
... ...