Commit 8c7b12aa8b8c987c39c5b7e178df0f4ef932af06

Authored by Leandro Santos
1 parent 9cb82c98

refactoring communities block

src/app/layout/blocks/communities-block/communities-block.component.spec.ts
... ... @@ -1,51 +0,0 @@
1   -import {TestComponentBuilder} from 'ng-forward/cjs/testing/test-component-builder';
2   -import {Provider, Input, provide, Component} from 'ng-forward';
3   -
4   -import {CommunitiesBlockComponent} from './communities-block.component';
5   -
6   -const htmlTemplate: string = '<noosfero-communities-block [block]="ctrl.block" [owner]="ctrl.owner"></noosfero-communities-block>';
7   -
8   -const tcb = new TestComponentBuilder();
9   -
10   -describe("Components", () => {
11   - describe("Communities Block Component", () => {
12   -
13   - beforeEach(angular.mock.module("templates"));
14   -
15   - let state = jasmine.createSpyObj("state", ["go"]);
16   - let providers = [
17   - new Provider('truncateFilter', { useValue: () => { } }),
18   - new Provider('stripTagsFilter', { useValue: () => { } }),
19   - new Provider('$state', { useValue: state }),
20   - new Provider('CommunityService', {
21   - useValue: {
22   - getByOwner: (owner: any, params: any): any => {
23   - return Promise.resolve({ data: [{ identifier: "community1" }] });
24   - }
25   - }
26   - }),
27   - ];
28   - @Component({ selector: 'test-container-component', template: htmlTemplate, directives: [CommunitiesBlockComponent], providers: providers })
29   - class BlockContainerComponent {
30   - block = { type: 'Block', settings: {} };
31   - owner = { name: 'profile-name' };
32   - }
33   -
34   - it("get communities", done => {
35   - tcb.createAsync(BlockContainerComponent).then(fixture => {
36   - let block: CommunitiesBlockComponent = fixture.debugElement.componentViewChildren[0].componentInstance;
37   - expect(block.profiles).toEqual([{ identifier: "community1" }]);
38   - done();
39   - });
40   - });
41   -
42   - it("render the profile image for each community", done => {
43   - tcb.createAsync(BlockContainerComponent).then(fixture => {
44   - fixture.debugElement.getLocal("$rootScope").$apply();
45   - expect(fixture.debugElement.queryAll("noosfero-profile-image").length).toEqual(1);
46   - done();
47   - });
48   - });
49   -
50   - });
51   -});
src/app/layout/blocks/communities-block/communities-block.component.ts
... ... @@ -1,24 +0,0 @@
1   -import {Input, Inject, Component} from "ng-forward";
2   -import {CommunityService} from "../../../../lib/ng-noosfero-api/http/community.service";
3   -
4   -@Component({
5   - selector: "noosfero-communities-block",
6   - templateUrl: 'app/layout/blocks/communities-block/communities-block.html',
7   -})
8   -@Inject(CommunityService)
9   -export class CommunitiesBlockComponent {
10   -
11   - @Input() block: noosfero.Block;
12   - @Input() owner: noosfero.Profile;
13   -
14   - profiles: any = [];
15   -
16   - constructor(private communityService: CommunityService) { }
17   -
18   - ngOnInit() {
19   - let limit: number = ((this.block && this.block.settings) ? this.block.settings.limit : null) || 5;
20   - this.communityService.getByOwner(this.owner, { limit: limit }).then((result: noosfero.RestResult<noosfero.Community[]>) => {
21   - this.profiles = result.data;
22   - });
23   - }
24   -}
src/app/layout/blocks/communities-block/communities-block.html
... ... @@ -1,5 +0,0 @@
1   -<div class="communities-block">
2   - <a ng-repeat="profile in ctrl.profiles" ui-sref="main.profile.home({profile: profile.identifier})" class="profile">
3   - <noosfero-profile-image [profile]="profile"></noosfero-profile-image>
4   - </a>
5   -</div>
src/app/layout/blocks/communities-block/communities-block.scss
... ... @@ -1,16 +0,0 @@
1   -.communities-block {
2   - .profile {
3   - margin: 10px;
4   - img, i.profile-image {
5   - width: 60px;
6   - }
7   - img {
8   - display: inline-block;
9   - vertical-align: top;
10   - }
11   - i.profile-image {
12   - text-align: center;
13   - font-size: 4.5em;
14   - }
15   - }
16   -}
src/app/layout/blocks/communities/communities-block.component.spec.ts 0 → 100644
... ... @@ -0,0 +1,51 @@
  1 +import {TestComponentBuilder} from 'ng-forward/cjs/testing/test-component-builder';
  2 +import {Provider, Input, provide, Component} from 'ng-forward';
  3 +
  4 +import {CommunitiesBlockComponent} from './communities-block.component';
  5 +
  6 +const htmlTemplate: string = '<noosfero-communities-block [block]="ctrl.block" [owner]="ctrl.owner"></noosfero-communities-block>';
  7 +
  8 +const tcb = new TestComponentBuilder();
  9 +
  10 +describe("Components", () => {
  11 + describe("Communities Block Component", () => {
  12 +
  13 + beforeEach(angular.mock.module("templates"));
  14 +
  15 + let state = jasmine.createSpyObj("state", ["go"]);
  16 + let providers = [
  17 + new Provider('truncateFilter', { useValue: () => { } }),
  18 + new Provider('stripTagsFilter', { useValue: () => { } }),
  19 + new Provider('$state', { useValue: state }),
  20 + new Provider('CommunityService', {
  21 + useValue: {
  22 + getByOwner: (owner: any, params: any): any => {
  23 + return Promise.resolve({ data: [{ identifier: "community1" }] });
  24 + }
  25 + }
  26 + }),
  27 + ];
  28 + @Component({ selector: 'test-container-component', template: htmlTemplate, directives: [CommunitiesBlockComponent], providers: providers })
  29 + class BlockContainerComponent {
  30 + block = { type: 'Block', settings: {} };
  31 + owner = { name: 'profile-name' };
  32 + }
  33 +
  34 + it("get communities", done => {
  35 + tcb.createAsync(BlockContainerComponent).then(fixture => {
  36 + let block: CommunitiesBlockComponent = fixture.debugElement.componentViewChildren[0].componentInstance;
  37 + expect(block.profiles).toEqual([{ identifier: "community1" }]);
  38 + done();
  39 + });
  40 + });
  41 +
  42 + it("render the profile image for each community", done => {
  43 + tcb.createAsync(BlockContainerComponent).then(fixture => {
  44 + fixture.debugElement.getLocal("$rootScope").$apply();
  45 + expect(fixture.debugElement.queryAll("noosfero-profile-image").length).toEqual(1);
  46 + done();
  47 + });
  48 + });
  49 +
  50 + });
  51 +});
... ...
src/app/layout/blocks/communities/communities-block.component.ts 0 → 100644
... ... @@ -0,0 +1,24 @@
  1 +import {Input, Inject, Component} from "ng-forward";
  2 +import {CommunityService} from "../../../../lib/ng-noosfero-api/http/community.service";
  3 +
  4 +@Component({
  5 + selector: "noosfero-communities-block",
  6 + templateUrl: 'app/layout/blocks/communities/communities-block.html',
  7 +})
  8 +@Inject(CommunityService)
  9 +export class CommunitiesBlockComponent {
  10 +
  11 + @Input() block: noosfero.Block;
  12 + @Input() owner: noosfero.Profile;
  13 +
  14 + profiles: any = [];
  15 +
  16 + constructor(private communityService: CommunityService) { }
  17 +
  18 + ngOnInit() {
  19 + let limit: number = ((this.block && this.block.settings) ? this.block.settings.limit : null) || 5;
  20 + this.communityService.getByOwner(this.owner, { limit: limit }).then((result: noosfero.RestResult<noosfero.Community[]>) => {
  21 + this.profiles = result.data;
  22 + });
  23 + }
  24 +}
... ...
src/app/layout/blocks/communities/communities-block.html 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +<div class="communities-block">
  2 + <a ng-repeat="profile in ctrl.profiles" ui-sref="main.profile.home({profile: profile.identifier})" class="profile">
  3 + <noosfero-profile-image [profile]="profile"></noosfero-profile-image>
  4 + </a>
  5 +</div>
... ...
src/app/layout/blocks/communities/communities-block.scss 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +.communities-block {
  2 + .profile {
  3 + margin: 10px;
  4 + img, i.profile-image {
  5 + width: 60px;
  6 + }
  7 + img {
  8 + display: inline-block;
  9 + vertical-align: top;
  10 + }
  11 + i.profile-image {
  12 + text-align: center;
  13 + font-size: 4.5em;
  14 + }
  15 + }
  16 +}
... ...
src/app/layout/blocks/communities/index.ts 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +/* Module Index Entry - generated using the script npm run generate-index */
  2 +export * from "./communities-block.component";
... ...
src/app/main/main.component.ts
... ... @@ -16,7 +16,7 @@ import {ProfileImageBlockComponent} from &quot;../layout/blocks/profile-image-block/p
16 16 import {RawHTMLBlockComponent} from "../layout/blocks/raw-html/raw-html.component";
17 17  
18 18 import {MembersBlockComponent} from "./../layout/blocks/members-block/members-block.component";
19   -import {CommunitiesBlockComponent} from "./../layout/blocks/communities-block/communities-block.component";
  19 +import {CommunitiesBlockComponent} from "./../layout/blocks/communities/communities-block.component";
20 20 import {NoosferoTemplate} from "../shared/pipes/noosfero-template.filter";
21 21 import {DateFormat} from "../shared/pipes/date-format.filter";
22 22  
... ... @@ -79,11 +79,11 @@ export class EnvironmentContent {
79 79 * NoosferoTemplate, DateFormat, RawHTMLBlock
80 80 * @description
81 81 * The Main controller for the Noosfero Angular Theme application.
82   - *
  82 + *
83 83 * The main route '/' is defined as the URL for this controller, which routes
84 84 * requests to the {@link main.MainContentComponent} controller and also, the '/profile' route,
85   - * which routes requests to the {@link profile.Profile} controller. See {@link profile.Profile}
86   - * for more details on how various Noosfero profiles are rendered.
  85 + * which routes requests to the {@link profile.Profile} controller. See {@link profile.Profile}
  86 + * for more details on how various Noosfero profiles are rendered.
87 87 */
88 88 @Component({
89 89 selector: 'main',
... ...