diff --git a/src/app/task/task-list/task-accept.component.spec.ts b/src/app/task/task-list/task-accept.component.spec.ts index 42921cc..33491e5 100644 --- a/src/app/task/task-list/task-accept.component.spec.ts +++ b/src/app/task/task-list/task-accept.component.spec.ts @@ -8,6 +8,7 @@ describe("Components", () => { describe("Task Accept Component", () => { let task = { id: 1, type: "AddMember" }; + let roleService = jasmine.createSpyObj("roleService", ["getByProfile"]); beforeEach(angular.mock.module("templates")); @@ -15,7 +16,10 @@ describe("Components", () => { return helpers.quickCreateComponent({ template: htmlTemplate, directives: [TaskAcceptComponent], - properties: { task: task } + properties: { task: task }, + providers: [ + helpers.createProviderToValue("RoleService", roleService) + ] }); } diff --git a/src/app/task/types/add-member/add-member-accept.html b/src/app/task/types/add-member/add-member-accept.html index 6aa2cce..8f961b7 100644 --- a/src/app/task/types/add-member/add-member-accept.html +++ b/src/app/task/types/add-member/add-member-accept.html @@ -2,7 +2,7 @@
- {{role}} + {{role.name}}
diff --git a/src/app/task/types/add-member/add-member-task-accept.component.ts b/src/app/task/types/add-member/add-member-task-accept.component.ts index 8994fdf..e1990e7 100644 --- a/src/app/task/types/add-member/add-member-task-accept.component.ts +++ b/src/app/task/types/add-member/add-member-task-accept.component.ts @@ -1,17 +1,22 @@ import { Component, Input, Inject } from "ng-forward"; +import { RoleService } from "../../../../lib/ng-noosfero-api/http/role.service"; @Component({ selector: "add-member-task-accept", templateUrl: "app/task/types/add-member/add-member-accept.html", }) +@Inject(RoleService) export class AddMemberTaskAcceptComponent { @Input() task: noosfero.Task; - roles: any; + roles: noosfero.Role[]; - constructor() { - // TODO list roles from API - this.roles = ["Profile Administrator", "Member", "Moderator"]; - } + constructor(private roleService: RoleService) { } + ngOnInit() { + if (!this.task.target) return; + this.roleService.getByProfile(this.task.target.id).then((result: noosfero.RestResult) => { + this.roles = result.data; + }); + } } diff --git a/src/lib/ng-noosfero-api/http/role.service.spec.ts b/src/lib/ng-noosfero-api/http/role.service.spec.ts new file mode 100644 index 0000000..d55e179 --- /dev/null +++ b/src/lib/ng-noosfero-api/http/role.service.spec.ts @@ -0,0 +1,33 @@ +import { RoleService } from "./role.service"; + +describe("Services", () => { + + describe("Role Service", () => { + + let $httpBackend: ng.IHttpBackendService; + let roleService: RoleService; + + beforeEach(angular.mock.module("main", ($translateProvider: angular.translate.ITranslateProvider) => { + $translateProvider.translations('en', {}); + })); + + beforeEach(inject((_$httpBackend_: ng.IHttpBackendService, _RoleService_: RoleService) => { + $httpBackend = _$httpBackend_; + roleService = _RoleService_; + })); + + + describe("Succesfull requests", () => { + + it("list organization roles", (done) => { + $httpBackend.expectGET(`/api/v1/profiles/1/roles`).respond(200, { roles: [{ id: 1 }] }); + roleService.getByProfile(1).then((result: noosfero.RestResult) => { + expect(result.data).toEqual([{ id: 1 }]); + done(); + }); + $httpBackend.flush(); + }); + }); + + }); +}); diff --git a/src/lib/ng-noosfero-api/http/role.service.ts b/src/lib/ng-noosfero-api/http/role.service.ts new file mode 100644 index 0000000..7b4891d --- /dev/null +++ b/src/lib/ng-noosfero-api/http/role.service.ts @@ -0,0 +1,27 @@ +import { Injectable, Inject } from "ng-forward"; +import { RestangularService } from "./restangular_service"; + +@Injectable() +@Inject("Restangular", "$q", "$log") +export class RoleService extends RestangularService { + + constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService) { + super(Restangular, $q, $log); + } + + getResourcePath() { + return "roles"; + } + + getDataKeys() { + return { + singular: 'role', + plural: 'roles' + }; + } + + getByProfile(profileId: number, params: any = {}) { + return this.list(this.restangularService.one("profiles", profileId), params); + } + +} diff --git a/src/lib/ng-noosfero-api/http/task.service.spec.ts b/src/lib/ng-noosfero-api/http/task.service.spec.ts index 07f21ce..d6f45b3 100644 --- a/src/lib/ng-noosfero-api/http/task.service.spec.ts +++ b/src/lib/ng-noosfero-api/http/task.service.spec.ts @@ -21,7 +21,7 @@ describe("Services", () => { describe("Succesfull requests", () => { it("list pending tasks", (done) => { - $httpBackend.expectGET(`/api/v1/tasks?all_pending=true`).respond(200, { tasks: [{ id: 1 }] }); + $httpBackend.expectGET(`/api/v1/tasks?all_pending=true&status=1`).respond(200, { tasks: [{ id: 1 }] }); taskService.getAllPending().then((result: noosfero.RestResult) => { expect(result.data).toEqual([{ id: 1 }]); done(); diff --git a/src/lib/ng-noosfero-api/http/task.service.ts b/src/lib/ng-noosfero-api/http/task.service.ts index 6f1e939..3282020 100644 --- a/src/lib/ng-noosfero-api/http/task.service.ts +++ b/src/lib/ng-noosfero-api/http/task.service.ts @@ -22,6 +22,7 @@ export class TaskService extends RestangularService { getAllPending(params: any = {}) { params['all_pending'] = true; + params['status'] = 1; return this.list(null, params); } diff --git a/src/lib/ng-noosfero-api/interfaces/role.ts b/src/lib/ng-noosfero-api/interfaces/role.ts new file mode 100644 index 0000000..a44978e --- /dev/null +++ b/src/lib/ng-noosfero-api/interfaces/role.ts @@ -0,0 +1,12 @@ +namespace noosfero { + /** + * @ngdoc interface + * @name noosfero.Role + * @description + * A representation of a Role in Noosfero. + */ + export interface Role extends RestModel { + name: string; + key: string; + } +} diff --git a/src/lib/ng-noosfero-api/interfaces/task.ts b/src/lib/ng-noosfero-api/interfaces/task.ts index 4882e6d..609eff5 100644 --- a/src/lib/ng-noosfero-api/interfaces/task.ts +++ b/src/lib/ng-noosfero-api/interfaces/task.ts @@ -9,5 +9,6 @@ namespace noosfero { type: string; accept_details: boolean; reject_details: boolean; + target: noosfero.Profile | noosfero.Environment; } } -- libgit2 0.21.2