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 @@
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