From a4dac9eca7f123137a34fa9f0d5b3ebfd8fd302a Mon Sep 17 00:00:00 2001 From: Michel Felipe Date: Fri, 22 Jul 2016 14:44:02 -0300 Subject: [PATCH] Added unit tests and minor refactories --- src/app/account/register-component.html | 2 +- src/app/account/register.component.spec.ts | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/app/account/register.component.ts | 7 ++++--- src/app/account/register.controller.ts | 2 +- src/lib/ng-noosfero-api/http/register.service.spec.ts | 39 +++++++++++++++++++++++++++++++++++++++ src/lib/ng-noosfero-api/http/register.service.ts | 2 +- src/lib/ng-noosfero-api/interfaces/environment.ts | 19 +++++++++++++++++-- src/spec/mocks.ts | 17 ++++++++++++++++- 8 files changed, 131 insertions(+), 9 deletions(-) create mode 100644 src/app/account/register.component.spec.ts create mode 100644 src/lib/ng-noosfero-api/http/register.service.spec.ts diff --git a/src/app/account/register-component.html b/src/app/account/register-component.html index bc2609c..a6590bb 100644 --- a/src/app/account/register-component.html +++ b/src/app/account/register-component.html @@ -51,7 +51,7 @@
- +
    diff --git a/src/app/account/register.component.spec.ts b/src/app/account/register.component.spec.ts new file mode 100644 index 0000000..dff6240 --- /dev/null +++ b/src/app/account/register.component.spec.ts @@ -0,0 +1,52 @@ +import { ComponentTestHelper, createClass } from "../../spec/component-test-helper"; +import * as helpers from "../../spec/helpers"; +import { RegisterComponent } from "./register.component"; +// import {RegisterService} from "../../lib/ng-noosfero-api/http/register.service" + + +describe("Register Component", () => { + const htmlTemplate: string = ''; + + let helper: ComponentTestHelper; + let registerService = helpers.mocks.registerService; + let stateService = jasmine.createSpyObj("$state", ["transitionTo"]); + let notificationService = helpers.mocks.notificationService; + notificationService.success = jasmine.createSpy('success'); + notificationService.error = jasmine.createSpy('error'); + + + let account: any = { + id: 1, + login: 'test', + email: 'test@email.com', + password: 'xxx', + passwordConfirmation: 'xxx' + }; + + beforeEach(() => { + angular.mock.module('templates'); + angular.mock.module('ngSanitize'); + angular.mock.module('ngMessages'); + angular.mock.module('ngPassword'); + }); + + beforeEach((done) => { + let cls = createClass({ + template: htmlTemplate, + directives: [RegisterComponent], + providers: [ + helpers.createProviderToValue('$state', stateService), + helpers.createProviderToValue('$uibModal', helpers.mocks.$modal), + helpers.createProviderToValue('RegisterService', registerService), + helpers.createProviderToValue('NotificationService', notificationService), + helpers.createProviderToValue('EnvironmentService', helpers.mocks.environmentService) + ] + }); + helper = new ComponentTestHelper(cls, done); + }); + + it('register page was rendered', () => { + expect(helper.debugElement.query('div.register-page').length).toEqual(1); + }); + +}); diff --git a/src/app/account/register.component.ts b/src/app/account/register.component.ts index 110fdc5..2a0b528 100644 --- a/src/app/account/register.component.ts +++ b/src/app/account/register.component.ts @@ -26,15 +26,16 @@ export class RegisterComponent { private $scope: ng.IScope, public registerService: RegisterService, private notificationService: NotificationService, - private environmentService: EnvironmentService, + private environmentService: EnvironmentService ) { this.account = {}; this.environment = environmentService.getCurrentEnvironment(); } signup() { - if (this.account.password === this.account.password_confirmation) { + if (this.account.password === this.account.passwordConfirmation) { this.registerService.createAccount(this.account).then((response) => { + if (response.status === 201) { this.$state.transitionTo('main.environment'); this.notificationService.success({ title: "account.register.success.title", message: "account.register.success.message" }); @@ -47,7 +48,7 @@ export class RegisterComponent { } } - isInvalid(field: Object): Object { + isInvalid(field: any): any { return { 'has-error': field['$touched'] && field['$invalid'] }; } diff --git a/src/app/account/register.controller.ts b/src/app/account/register.controller.ts index 71fa4c4..3e5c6bd 100644 --- a/src/app/account/register.controller.ts +++ b/src/app/account/register.controller.ts @@ -8,7 +8,7 @@ export class RegisterController { constructor( private $log: ng.ILogService, - private $stateParams: any, + private $stateParams: any ) { } closeTerms() { diff --git a/src/lib/ng-noosfero-api/http/register.service.spec.ts b/src/lib/ng-noosfero-api/http/register.service.spec.ts new file mode 100644 index 0000000..e41abe6 --- /dev/null +++ b/src/lib/ng-noosfero-api/http/register.service.spec.ts @@ -0,0 +1,39 @@ +import { RegisterService } from "./register.service"; + +describe("Services", () => { + + describe("Register Service", () => { + + let $httpBackend: ng.IHttpBackendService; + let registerService: RegisterService; + let $rootScope: ng.IRootScopeService; + let user: any = { + id: 1, + login: 'test', + email: 'test@email.com' + }; + + beforeEach(angular.mock.module("main", ($translateProvider: angular.translate.ITranslateProvider) => { + $translateProvider.translations('en', {}); + })); + + beforeEach(inject((_$httpBackend_: ng.IHttpBackendService, _RegisterService_: RegisterService, _$rootScope_: ng.IRootScopeService) => { + $httpBackend = _$httpBackend_; + registerService = _RegisterService_; + $rootScope = _$rootScope_; + })); + + describe("Succesfull requests", () => { + + it("should creaet a new account", (done) => { + + $httpBackend.expectPOST(`/api/v1/register?email=${user.email}&id=${user.id}&login=${user.login}`).respond(201, [{ login: "test" }]); + registerService.createAccount(user).then((response: restangular.IResponse) => { + expect(response.data[0].login).toEqual("test"); + done(); + }); + $httpBackend.flush(); + }); + }); + }); +}); diff --git a/src/lib/ng-noosfero-api/http/register.service.ts b/src/lib/ng-noosfero-api/http/register.service.ts index c25dad5..b3ca222 100644 --- a/src/lib/ng-noosfero-api/http/register.service.ts +++ b/src/lib/ng-noosfero-api/http/register.service.ts @@ -1,5 +1,5 @@ import { Injectable, Inject } from "ng-forward"; -import {RestangularService} from "./restangular_service"; +import { RestangularService } from "./restangular_service"; @Injectable() @Inject("Restangular") diff --git a/src/lib/ng-noosfero-api/interfaces/environment.ts b/src/lib/ng-noosfero-api/interfaces/environment.ts index 590a3a0..3c04964 100644 --- a/src/lib/ng-noosfero-api/interfaces/environment.ts +++ b/src/lib/ng-noosfero-api/interfaces/environment.ts @@ -5,7 +5,7 @@ namespace noosfero { * @name noofero.Environment * @description * A representation of a Noosfero Environment. - */ + */ export interface Environment extends RestModel { /** * @ngdoc property @@ -23,6 +23,21 @@ namespace noosfero { * @returns {string} The Environment layout (e.g. default, rightbar) */ layout_template: string; + + /** + * @ngdoc property + * @name signup_intro + * @propertyOf noofero.Environment + * @returns {string} The Environment signup introduction HTML (e.g. Welcome to Noosfero...!!) + */ + signup_intro: string; + + /** + * @ngdoc property + * @name host + * @propertyOf noofero.Environment + * @returns {string} The Environment default domain address with 'http://' prefix (e.g. http://localhost) + */ + host: string; } } - diff --git a/src/spec/mocks.ts b/src/spec/mocks.ts index 6d357bb..0b64599 100644 --- a/src/spec/mocks.ts +++ b/src/spec/mocks.ts @@ -40,6 +40,11 @@ export var mocks: any = { return this.modalInstance; } }, + registerService: { + createAccount: (user: noosfero.User) => { + return Promise.resolve({ status: 201 }); + } + }, authService: { loginSuccess: { event: Function, @@ -145,6 +150,15 @@ export var mocks: any = { return mocks.promiseResultTemplate({ people: {} }); + }, + getCurrentEnvironment: (): any => { + return { + id: 1, + settings: {}, + layout_template: '', + signup_intro: 'Welcome to Noosfero', + host: 'http://localhost' + }; } }, profileService: { @@ -240,6 +254,7 @@ export var mocks: any = { }, notificationService: { success: () => { }, - confirmation: () => { } + confirmation: () => { }, + error: () => { } } }; -- libgit2 0.21.2