From f18ccc088835a7f836b3aa2576bbdf27018339d2 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Thu, 3 Mar 2016 18:38:11 -0300 Subject: [PATCH] Migrate members block to ngforward --- src/app/components/noosfero-blocks/members-block/members-block.component.js | 26 -------------------------- src/app/components/noosfero-blocks/members-block/members-block.component.spec.ts | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/app/components/noosfero-blocks/members-block/members-block.component.ts | 25 +++++++++++++++++++++++++ src/app/components/noosfero-blocks/members-block/members-block.html | 2 +- src/app/index.ts | 1 - src/app/main/main.component.ts | 6 +++++- src/lib/ng-noosfero-api/http/profile.service.ts | 15 +++++++++++++++ 7 files changed, 98 insertions(+), 29 deletions(-) delete mode 100644 src/app/components/noosfero-blocks/members-block/members-block.component.js create mode 100644 src/app/components/noosfero-blocks/members-block/members-block.component.spec.ts create mode 100644 src/app/components/noosfero-blocks/members-block/members-block.component.ts create mode 100644 src/lib/ng-noosfero-api/http/profile.service.ts 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