diff --git a/src/app/profile/data/profile-data.component.spec.ts b/src/app/profile/data/profile-data.component.spec.ts new file mode 100644 index 0000000..6b9c620 --- /dev/null +++ b/src/app/profile/data/profile-data.component.spec.ts @@ -0,0 +1,57 @@ +import * as helpers from "./../../../spec/helpers"; + +import {Injectable, Provider, provide} from "ng-forward"; +import {providers} from 'ng-forward/cjs/testing/providers'; + +import {ComponentFixture} from 'ng-forward/cjs/testing/test-component-builder'; + +import {ProfileDataComponent} from "./profile-data.component"; +import {TranslateProfile} from '../../shared/pipes/translate-profile.filter'; + +let templateHtml = ''; + +describe('Profile data component', () => { + + let profileMock = { + id: 1, + identifier: 'profile-test', + type: 'Person' + }; + + beforeEach(() => { + + angular.mock.module("templates"); + angular.mock.module("angularMoment"); + + providers((provide: any) => { + return helpers.provideFilters('TranslateProfile', 'translateFilter') + }); + }); + + let buildComponent = (): Promise => { + return helpers.quickCreateComponent({ + directives: [ProfileDataComponent], + template: templateHtml, + properties: { + profile: profileMock + } + }); + }; + + it('renders profile-data directive', () => { + buildComponent().then((fixture: ComponentFixture) => { + expect(fixture.debugElement.query('div.table-responsive').length).toEqual(1); + expect(fixture.debugElement.query('span.label-info').length).toEqual(1); + }); + }); + + it('renders profile-data directive with custom fields', () => { + profileMock.additional_data = { + 'Address': 'Street A, Number 102' + }; + + buildComponent().then((fixture: ComponentFixture) => { + expect(fixture.debugElement.query('div.profile-custom-fields').length).toEqual(1); + }); + }); +}); diff --git a/src/app/profile/data/profile-data.html b/src/app/profile/data/profile-data.html index 70f8e4c..4bdba86 100644 --- a/src/app/profile/data/profile-data.html +++ b/src/app/profile/data/profile-data.html @@ -22,7 +22,7 @@ -
+

{{"profile.others_info" | translate}}

diff --git a/src/lib/ng-noosfero-api/interfaces/profile.ts b/src/lib/ng-noosfero-api/interfaces/profile.ts index 5ac6764..6c3e316 100644 --- a/src/lib/ng-noosfero-api/interfaces/profile.ts +++ b/src/lib/ng-noosfero-api/interfaces/profile.ts @@ -31,6 +31,20 @@ namespace noosfero { */ type: string; + /** + * @ngdoc property + * @name name + * @propertyOf noofero.Profile + * @returns {string} The name of Profile (e.g.: "Mr. Janson", etc.) + */ name: string; + + /** + * @ngdoc property + * @name additional_data + * @propertyOf noofero.Profile + * @returns {string} A key => value custom fields data of Profile (e.g.: "{'Address':'Street A, Number 102...'}") + */ + additional_data?: any; } -} \ No newline at end of file +} diff --git a/src/spec/helpers.ts b/src/spec/helpers.ts index 4b93500..838562e 100644 --- a/src/spec/helpers.ts +++ b/src/spec/helpers.ts @@ -5,9 +5,9 @@ import {Injectable, Inject, Provider, Input, provide, Component} from 'ng-forwar export var ngforward = { - providers: providers, - TestComponentBuilder: TestComponentBuilder, - ComponentFixture: ComponentFixture + providers: providers, + TestComponentBuilder: TestComponentBuilder, + ComponentFixture: ComponentFixture }; export interface ComponentFixtureTemplate { @@ -21,11 +21,19 @@ export let tcb: TestComponentBuilder = new TestComponentBuilder(); export function quickCreateComponent({ providers = [], directives = [], - template = '
' + template = '
', + properties = {}, }): Promise { @Component({ selector: 'test', template, directives, providers }) - class Test { } + class Test { + + constructor() { + Object.keys(properties).forEach((key) => { + this[key] = properties[key]; + }); + } + } return tcb.createAsync(Test); } -- libgit2 0.21.2