Commit 21a269630a5562edd1c88701555fca232f6d9354
1 parent
b3bfce0b
Exists in
master
and in
1 other branch
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 | 19 | new Provider('$state', { useValue: state }), |
| 20 | 20 | new Provider('CommunityService', { |
| 21 | 21 | useValue: { |
| 22 | - list: (profileId: number, params: any): any => { | |
| 22 | + getByOwner: (owner: any, params: any): any => { | |
| 23 | 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 | 17 | |
| 18 | 18 | ngOnInit() { |
| 19 | 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 | 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 | 19 | |
| 20 | 20 | describe("Succesfull requests", () => { |
| 21 | 21 | |
| 22 | - it("should list communities", (done) => { | |
| 22 | + it("should list environment communities", (done) => { | |
| 23 | 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 | 25 | expect(result.data).toEqual([{ name: "community1" }]); |
| 26 | 26 | done(); |
| 27 | 27 | }); |
| 28 | 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 | 1 | import { Injectable, Inject } from "ng-forward"; |
| 2 | 2 | import {RestangularService} from "./restangular_service"; |
| 3 | +import {PersonService} from "./person.service"; | |
| 3 | 4 | |
| 4 | 5 | @Injectable() |
| 5 | -@Inject("Restangular", "$q", "$log") | |
| 6 | +@Inject("Restangular", "$q", "$log", PersonService) | |
| 6 | 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 | 10 | super(Restangular, $q, $log); |
| 10 | 11 | } |
| 11 | 12 | |
| ... | ... | @@ -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 @@ |
| 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 | +} | ... | ... |