diff --git a/src/app/components/noosfero-blocks/members-block/members-block.component.js b/src/app/components/noosfero-blocks/members-block/members-block.component.js
deleted file mode 100644
index 463efbe..0000000
--- a/src/app/components/noosfero-blocks/members-block/members-block.component.js
+++ /dev/null
@@ -1,26 +0,0 @@
-(function() {
- 'use strict';
-
- angular
- .module('noosferoApp')
- .component('noosferoMembersBlock', {
- restrict: 'E',
- templateUrl: 'app/components/noosfero-blocks/members-block/members-block.html',
- bindings: {
- block: '<',
- owner: '<'
- },
- controller: MembersBlockController
- });
-
- /** @ngInject */
- function MembersBlockController(noosfero) {
- var vm = this;
- vm.members = [];
-
- noosfero.members(noosfero.profiles.one(vm.owner.id)).one().get({per_page: 6}).then(function(response) {
- vm.members = response.data.people;
- });
- }
-
-})();
diff --git a/src/app/components/noosfero-blocks/members-block/members-block.component.spec.ts b/src/app/components/noosfero-blocks/members-block/members-block.component.spec.ts
new file mode 100644
index 0000000..97ca909
--- /dev/null
+++ b/src/app/components/noosfero-blocks/members-block/members-block.component.spec.ts
@@ -0,0 +1,52 @@
+import {TestComponentBuilder} from 'ng-forward/cjs/testing/test-component-builder';
+import {Provider, Input, provide, Component} from 'ng-forward';
+
+import {MembersBlock} from './members-block.component';
+
+const htmlTemplate: string = '';
+
+const tcb = new TestComponentBuilder();
+
+describe("Members Block Component", () => {
+
+ beforeEach(angular.mock.module("templates"));
+
+ let state = jasmine.createSpyObj("state", ["go"]);
+ let providers = [
+ new Provider('truncateFilter', { useValue: () => { } }),
+ new Provider('stripTagsFilter', { useValue: () => { } }),
+ new Provider('$state', { useValue: state }),
+ new Provider('ProfileService', {
+ useValue: {
+ getProfileMembers: (profileId: number, filters: any): any => {
+ return Promise.resolve({ data: { people: [{ identifier: "person1" }] } });
+ }
+ }
+ }),
+ ];
+ @Component({ selector: 'test-container-component', template: htmlTemplate, directives: [MembersBlock], providers: providers })
+ class BlockContainerComponent {
+ block = { type: 'Block', settings: {} };
+ owner = { name: 'profile-name' };
+ constructor() {
+ }
+ }
+
+ it("get members of the block owner", done => {
+ tcb.createAsync(BlockContainerComponent).then(fixture => {
+ let recentDocumentsBlock: MembersBlock = fixture.debugElement.componentViewChildren[0].componentInstance;
+ expect(recentDocumentsBlock.members).toEqual([{ identifier: "person1" }]);
+ done();
+ });
+ });
+
+ it("render the profile image for each member", done => {
+ tcb.createAsync(BlockContainerComponent).then(fixture => {
+ let recentDocumentsBlock: MembersBlock = fixture.debugElement.componentViewChildren[0].componentInstance;
+ fixture.debugElement.getLocal("$rootScope").$apply();
+ expect(fixture.debugElement.queryAll("noosfero-profile-image").length).toEqual(1);
+ done();
+ });
+ });
+
+});
diff --git a/src/app/components/noosfero-blocks/members-block/members-block.component.ts b/src/app/components/noosfero-blocks/members-block/members-block.component.ts
new file mode 100644
index 0000000..fe22f4f
--- /dev/null
+++ b/src/app/components/noosfero-blocks/members-block/members-block.component.ts
@@ -0,0 +1,25 @@
+import {Input, Inject, Component} from "ng-forward";
+import {ProfileService} from "../../../../lib/ng-noosfero-api/http/profile.service";
+
+@Component({
+ selector: "noosfero-members-block",
+ templateUrl: 'app/components/noosfero-blocks/members-block/members-block.html',
+})
+@Inject(ProfileService)
+export class MembersBlock {
+
+ @Input() block: any;
+ @Input() owner: any;
+
+ members: any = [];
+
+ constructor(private ProfileService: ProfileService) {
+
+ }
+
+ ngOnInit() {
+ this.ProfileService.getProfileMembers(this.owner.id, { per_page: 6 }).then((response: any) => {
+ this.members = response.data.people;
+ });
+ }
+}
diff --git a/src/app/components/noosfero-blocks/members-block/members-block.html b/src/app/components/noosfero-blocks/members-block/members-block.html
index 5aac3bd..c094637 100644
--- a/src/app/components/noosfero-blocks/members-block/members-block.html
+++ b/src/app/components/noosfero-blocks/members-block/members-block.html
@@ -1,5 +1,5 @@
diff --git a/src/app/index.ts b/src/app/index.ts
index 8c42603..7419460 100644
--- a/src/app/index.ts
+++ b/src/app/index.ts
@@ -45,7 +45,6 @@ NoosferoApp.addController("AuthController", AuthController);
require("./components/noosfero-activities/activities.component.js");
require("./components/noosfero-activities/activity/activity.component.js");
-require("./components/noosfero-blocks/members-block/members-block.component.js");
require("./components/noosfero/noosfero-template.filter.js");
require("./components/noosfero/noosfero.service.js");
require("./components/noosfero/profile-image/profile-image.component.js");
diff --git a/src/app/main/main.component.ts b/src/app/main/main.component.ts
index 8af368a..d899a2e 100644
--- a/src/app/main/main.component.ts
+++ b/src/app/main/main.component.ts
@@ -9,6 +9,7 @@ import {Block} from "../components/noosfero-blocks/block.component";
import {LinkListBlock} from "../components/noosfero-blocks/link-list/link-list.component";
import {RecentDocumentsBlock} from "../components/noosfero-blocks/recent-documents/recent-documents.component";
import {ProfileImageBlock} from "../components/noosfero-blocks/profile-image/profile-image.component";
+import {MembersBlock} from "../components/noosfero-blocks/members-block/members-block.component";
import {AuthService} from "./../components/auth/auth_service";
@@ -32,7 +33,10 @@ export class MainContent {
@Component({
selector: 'main',
template: '',
- directives: [NoosferoArticleBlog, ArticleView, Boxes, Block, LinkListBlock, MainBlock, RecentDocumentsBlock, Navbar, ProfileImageBlock],
+ directives: [
+ NoosferoArticleBlog, ArticleView, Boxes, Block, LinkListBlock,
+ MainBlock, RecentDocumentsBlock, Navbar, ProfileImageBlock, MembersBlock
+ ],
providers: [AuthService, Session]
})
@StateConfig([
diff --git a/src/lib/ng-noosfero-api/http/profile.service.ts b/src/lib/ng-noosfero-api/http/profile.service.ts
new file mode 100644
index 0000000..b47d4fc
--- /dev/null
+++ b/src/lib/ng-noosfero-api/http/profile.service.ts
@@ -0,0 +1,15 @@
+import { Injectable, Inject } from "ng-forward";
+
+@Injectable()
+@Inject("Restangular")
+export class ProfileService {
+
+ constructor(private Restangular: any) {
+
+ }
+
+ getProfileMembers(profileId: number, filters: any) {
+ return this.Restangular.service('profiles').one(profileId).customGET("members", filters);
+ }
+
+}
--
libgit2 0.21.2