Commit 21a269630a5562edd1c88701555fca232f6d9354
1 parent
b3bfce0b
Exists in
master
and in
30 other branches
Filter communities based on the owner in communities block
Showing
5 changed files
with
75 additions
and
7 deletions
Show diff stats
src/app/layout/blocks/communities-block/communities-block.component.spec.ts
| @@ -19,7 +19,7 @@ describe("Components", () => { | @@ -19,7 +19,7 @@ describe("Components", () => { | ||
| 19 | new Provider('$state', { useValue: state }), | 19 | new Provider('$state', { useValue: state }), |
| 20 | new Provider('CommunityService', { | 20 | new Provider('CommunityService', { |
| 21 | useValue: { | 21 | useValue: { |
| 22 | - list: (profileId: number, params: any): any => { | 22 | + getByOwner: (owner: any, params: any): any => { |
| 23 | return Promise.resolve({ data: [{ identifier: "community1" }] }); | 23 | return Promise.resolve({ data: [{ identifier: "community1" }] }); |
| 24 | } | 24 | } |
| 25 | } | 25 | } |
src/app/layout/blocks/communities-block/communities-block.component.ts
| @@ -17,8 +17,7 @@ export class CommunitiesBlockComponent { | @@ -17,8 +17,7 @@ export class CommunitiesBlockComponent { | ||
| 17 | 17 | ||
| 18 | ngOnInit() { | 18 | ngOnInit() { |
| 19 | let limit: number = ((this.block && this.block.settings) ? this.block.settings.limit : null) || 5; | 19 | let limit: number = ((this.block && this.block.settings) ? this.block.settings.limit : null) || 5; |
| 20 | - | ||
| 21 | - this.communityService.list(null, { limit: limit }).then((result: noosfero.RestResult<noosfero.Community[]>) => { | 20 | + this.communityService.getByOwner(this.owner, { limit: limit }).then((result: noosfero.RestResult<noosfero.Community[]>) => { |
| 22 | this.profiles = result.data; | 21 | this.profiles = result.data; |
| 23 | }); | 22 | }); |
| 24 | } | 23 | } |
src/lib/ng-noosfero-api/http/community.service.spec.ts
| @@ -19,14 +19,42 @@ describe("Services", () => { | @@ -19,14 +19,42 @@ describe("Services", () => { | ||
| 19 | 19 | ||
| 20 | describe("Succesfull requests", () => { | 20 | describe("Succesfull requests", () => { |
| 21 | 21 | ||
| 22 | - it("should list communities", (done) => { | 22 | + it("should list environment communities", (done) => { |
| 23 | $httpBackend.expectGET(`/api/v1/communities`).respond(200, { communities: [{ name: "community1" }] }); | 23 | $httpBackend.expectGET(`/api/v1/communities`).respond(200, { communities: [{ name: "community1" }] }); |
| 24 | - communityService.list().then((result: noosfero.RestResult<noosfero.Community[]>) => { | 24 | + communityService.getByEnvironment().then((result: noosfero.RestResult<noosfero.Community[]>) => { |
| 25 | expect(result.data).toEqual([{ name: "community1" }]); | 25 | expect(result.data).toEqual([{ name: "community1" }]); |
| 26 | done(); | 26 | done(); |
| 27 | }); | 27 | }); |
| 28 | $httpBackend.flush(); | 28 | $httpBackend.flush(); |
| 29 | }); | 29 | }); |
| 30 | + | ||
| 31 | + it("should list person communities", (done) => { | ||
| 32 | + $httpBackend.expectGET(`/api/v1/people/1/communities`).respond(200, { communities: [{ name: "community1" }] }); | ||
| 33 | + let person = <any>{ id: 1 }; | ||
| 34 | + communityService.getByPerson(person).then((result: noosfero.RestResult<noosfero.Community[]>) => { | ||
| 35 | + expect(result.data).toEqual([{ name: "community1" }]); | ||
| 36 | + done(); | ||
| 37 | + }); | ||
| 38 | + $httpBackend.flush(); | ||
| 39 | + }); | ||
| 40 | + | ||
| 41 | + it("should list owner communities when it is an environment", (done) => { | ||
| 42 | + $httpBackend.expectGET(`/api/v1/communities`).respond(200, { communities: [{ name: "community1" }] }); | ||
| 43 | + let owner = <any>{ id: 1 }; | ||
| 44 | + communityService.getByOwner(owner).then((result: noosfero.RestResult<noosfero.Community[]>) => { | ||
| 45 | + done(); | ||
| 46 | + }); | ||
| 47 | + $httpBackend.flush(); | ||
| 48 | + }); | ||
| 49 | + | ||
| 50 | + it("should list owner communities when it is an person", (done) => { | ||
| 51 | + $httpBackend.expectGET(`/api/v1/people/1/communities`).respond(200, { communities: [{ name: "community1" }] }); | ||
| 52 | + let owner = <any>{ id: 1, type: "Person" }; | ||
| 53 | + communityService.getByOwner(owner).then((result: noosfero.RestResult<noosfero.Community[]>) => { | ||
| 54 | + done(); | ||
| 55 | + }); | ||
| 56 | + $httpBackend.flush(); | ||
| 57 | + }); | ||
| 30 | }); | 58 | }); |
| 31 | 59 | ||
| 32 | }); | 60 | }); |
src/lib/ng-noosfero-api/http/community.service.ts
| 1 | import { Injectable, Inject } from "ng-forward"; | 1 | import { Injectable, Inject } from "ng-forward"; |
| 2 | import {RestangularService} from "./restangular_service"; | 2 | import {RestangularService} from "./restangular_service"; |
| 3 | +import {PersonService} from "./person.service"; | ||
| 3 | 4 | ||
| 4 | @Injectable() | 5 | @Injectable() |
| 5 | -@Inject("Restangular", "$q", "$log") | 6 | +@Inject("Restangular", "$q", "$log", PersonService) |
| 6 | export class CommunityService extends RestangularService<noosfero.Community> { | 7 | export class CommunityService extends RestangularService<noosfero.Community> { |
| 7 | 8 | ||
| 8 | - constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService) { | 9 | + constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService, protected personService: PersonService) { |
| 9 | super(Restangular, $q, $log); | 10 | super(Restangular, $q, $log); |
| 10 | } | 11 | } |
| 11 | 12 | ||
| @@ -20,4 +21,21 @@ export class CommunityService extends RestangularService<noosfero.Community> { | @@ -20,4 +21,21 @@ export class CommunityService extends RestangularService<noosfero.Community> { | ||
| 20 | }; | 21 | }; |
| 21 | } | 22 | } |
| 22 | 23 | ||
| 24 | + getByOwner(owner: any, params?: any) { | ||
| 25 | + // TODO see a better way to verify the owner type | ||
| 26 | + if (owner.type == "Person") { | ||
| 27 | + return this.getByPerson(owner, params); | ||
| 28 | + } else { | ||
| 29 | + return this.getByEnvironment(params); | ||
| 30 | + } | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + getByEnvironment(params?: any) { | ||
| 34 | + return this.list(null, params); | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + getByPerson(person: noosfero.Person, params?: any) { | ||
| 38 | + let personElement = this.personService.getElement(person.id); | ||
| 39 | + return this.list(personElement, params); | ||
| 40 | + } | ||
| 23 | } | 41 | } |
| @@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
| 1 | +import { Injectable, Inject } from "ng-forward"; | ||
| 2 | +import {RestangularService} from "./restangular_service"; | ||
| 3 | + | ||
| 4 | +@Injectable() | ||
| 5 | +@Inject("Restangular", "$q", "$log") | ||
| 6 | +export class PersonService extends RestangularService<noosfero.Person> { | ||
| 7 | + | ||
| 8 | + constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService) { | ||
| 9 | + super(Restangular, $q, $log); | ||
| 10 | + } | ||
| 11 | + | ||
| 12 | + getResourcePath() { | ||
| 13 | + return "people"; | ||
| 14 | + } | ||
| 15 | + | ||
| 16 | + getDataKeys() { | ||
| 17 | + return { | ||
| 18 | + singular: 'person', | ||
| 19 | + plural: 'people' | ||
| 20 | + }; | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | +} |