Commit 5b219f8d09a2a9bef904a62f7b3686e33073a723
1 parent
d7dd90d7
Exists in
master
and in
1 other branch
Added unit test to profile-data directive and refactor quickComponent helper method
Showing
4 changed files
with
86 additions
and
7 deletions
Show diff stats
@@ -0,0 +1,57 @@ | @@ -0,0 +1,57 @@ | ||
1 | +import * as helpers from "./../../../spec/helpers"; | ||
2 | + | ||
3 | +import {Injectable, Provider, provide} from "ng-forward"; | ||
4 | +import {providers} from 'ng-forward/cjs/testing/providers'; | ||
5 | + | ||
6 | +import {ComponentFixture} from 'ng-forward/cjs/testing/test-component-builder'; | ||
7 | + | ||
8 | +import {ProfileDataComponent} from "./profile-data.component"; | ||
9 | +import {TranslateProfile} from '../../shared/pipes/translate-profile.filter'; | ||
10 | + | ||
11 | +let templateHtml = '<profile-data [profile]="ctrl.profile"></profile-data>'; | ||
12 | + | ||
13 | +describe('Profile data component', () => { | ||
14 | + | ||
15 | + let profileMock = <noosfero.Profile>{ | ||
16 | + id: 1, | ||
17 | + identifier: 'profile-test', | ||
18 | + type: 'Person' | ||
19 | + }; | ||
20 | + | ||
21 | + beforeEach(() => { | ||
22 | + | ||
23 | + angular.mock.module("templates"); | ||
24 | + angular.mock.module("angularMoment"); | ||
25 | + | ||
26 | + providers((provide: any) => { | ||
27 | + return <any>helpers.provideFilters('TranslateProfile', 'translateFilter') | ||
28 | + }); | ||
29 | + }); | ||
30 | + | ||
31 | + let buildComponent = (): Promise<ComponentFixture> => { | ||
32 | + return helpers.quickCreateComponent({ | ||
33 | + directives: [ProfileDataComponent], | ||
34 | + template: templateHtml, | ||
35 | + properties: { | ||
36 | + profile: profileMock | ||
37 | + } | ||
38 | + }); | ||
39 | + }; | ||
40 | + | ||
41 | + it('renders profile-data directive', () => { | ||
42 | + buildComponent().then((fixture: ComponentFixture) => { | ||
43 | + expect(fixture.debugElement.query('div.table-responsive').length).toEqual(1); | ||
44 | + expect(fixture.debugElement.query('span.label-info').length).toEqual(1); | ||
45 | + }); | ||
46 | + }); | ||
47 | + | ||
48 | + it('renders profile-data directive with custom fields', () => { | ||
49 | + profileMock.additional_data = { | ||
50 | + 'Address': 'Street A, Number 102' | ||
51 | + }; | ||
52 | + | ||
53 | + buildComponent().then((fixture: ComponentFixture) => { | ||
54 | + expect(fixture.debugElement.query('div.profile-custom-fields').length).toEqual(1); | ||
55 | + }); | ||
56 | + }); | ||
57 | +}); |
src/app/profile/data/profile-data.html
@@ -22,7 +22,7 @@ | @@ -22,7 +22,7 @@ | ||
22 | </div> | 22 | </div> |
23 | 23 | ||
24 | <!-- Custom Fields --> | 24 | <!-- Custom Fields --> |
25 | -<div class="main-box clearfix"> | 25 | +<div class="main-box clearfix profile-custom-fields" ng-if="ctrl.profile.additional_data"> |
26 | <header class="main-box-header clearfix"> | 26 | <header class="main-box-header clearfix"> |
27 | <h2>{{"profile.others_info" | translate}}</h2> | 27 | <h2>{{"profile.others_info" | translate}}</h2> |
28 | </header> | 28 | </header> |
src/lib/ng-noosfero-api/interfaces/profile.ts
@@ -31,6 +31,20 @@ namespace noosfero { | @@ -31,6 +31,20 @@ namespace noosfero { | ||
31 | */ | 31 | */ |
32 | type: string; | 32 | type: string; |
33 | 33 | ||
34 | + /** | ||
35 | + * @ngdoc property | ||
36 | + * @name name | ||
37 | + * @propertyOf noofero.Profile | ||
38 | + * @returns {string} The name of Profile (e.g.: "Mr. Janson", etc.) | ||
39 | + */ | ||
34 | name: string; | 40 | name: string; |
41 | + | ||
42 | + /** | ||
43 | + * @ngdoc property | ||
44 | + * @name additional_data | ||
45 | + * @propertyOf noofero.Profile | ||
46 | + * @returns {string} A key => value custom fields data of Profile (e.g.: "{'Address':'Street A, Number 102...'}") | ||
47 | + */ | ||
48 | + additional_data?: any; | ||
35 | } | 49 | } |
36 | -} | ||
37 | \ No newline at end of file | 50 | \ No newline at end of file |
51 | +} |
src/spec/helpers.ts
@@ -5,9 +5,9 @@ import {Injectable, Inject, Provider, Input, provide, Component} from 'ng-forwar | @@ -5,9 +5,9 @@ import {Injectable, Inject, Provider, Input, provide, Component} from 'ng-forwar | ||
5 | 5 | ||
6 | 6 | ||
7 | export var ngforward = { | 7 | export var ngforward = { |
8 | - providers: providers, | ||
9 | - TestComponentBuilder: TestComponentBuilder, | ||
10 | - ComponentFixture: ComponentFixture | 8 | + providers: providers, |
9 | + TestComponentBuilder: TestComponentBuilder, | ||
10 | + ComponentFixture: ComponentFixture | ||
11 | }; | 11 | }; |
12 | 12 | ||
13 | export interface ComponentFixtureTemplate { | 13 | export interface ComponentFixtureTemplate { |
@@ -21,11 +21,19 @@ export let tcb: TestComponentBuilder = new TestComponentBuilder(); | @@ -21,11 +21,19 @@ export let tcb: TestComponentBuilder = new TestComponentBuilder(); | ||
21 | export function quickCreateComponent({ | 21 | export function quickCreateComponent({ |
22 | providers = [], | 22 | providers = [], |
23 | directives = [], | 23 | directives = [], |
24 | - template = '<div></div>' | 24 | + template = '<div></div>', |
25 | + properties = {}, | ||
25 | }): Promise<ComponentFixture> { | 26 | }): Promise<ComponentFixture> { |
26 | 27 | ||
27 | @Component({ selector: 'test', template, directives, providers }) | 28 | @Component({ selector: 'test', template, directives, providers }) |
28 | - class Test { } | 29 | + class Test { |
30 | + | ||
31 | + constructor() { | ||
32 | + Object.keys(properties).forEach((key) => { | ||
33 | + this[key] = properties[key]; | ||
34 | + }); | ||
35 | + } | ||
36 | + } | ||
29 | 37 | ||
30 | return tcb.createAsync(Test); | 38 | return tcb.createAsync(Test); |
31 | } | 39 | } |