Skip to content

Commit

Permalink
Merge pull request #3362 from icfantv/ng2_test_and_downgrades
Browse files Browse the repository at this point in the history
feat(all): ng2 test, service, and component work
  • Loading branch information
icfantv committed Mar 7, 2017
2 parents 2b7b9fd + ae18078 commit ad006ca
Show file tree
Hide file tree
Showing 81 changed files with 203 additions and 177 deletions.
88 changes: 40 additions & 48 deletions app/scripts/app.module.ts
Original file line number Diff line number Diff line change
@@ -1,59 +1,52 @@
import {NgModule} from '@angular/core';
import {NgModule, Type} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {UpgradeModule} from '@angular/upgrade/static';
// import {UpgradeModule, downgradeInjectable} from '@angular/upgrade/static';
// import {AUTHENTICATION_SERVICE, AuthenticationService} from './modules/core/authentication/authentication.service';
// declare let angular: any;
import {UpgradeModule, downgradeInjectable, downgradeComponent} from '@angular/upgrade/static';
declare let angular: any;

// import {SPINNAKER_DOWNGRADES, SPINNAKER_COMPONENT_DOWNGRADES} from './modules';
import {SPINNAKER_DOWNGRADES, SPINNAKER_COMPONENT_DOWNGRADES} from './modules';

// const providers: Type<any>[] = [];
// export const DOWNGRADED_MODULE_NAMES: string[] = [];
// SPINNAKER_DOWNGRADES.forEach((item) => {
// DOWNGRADED_MODULE_NAMES.push(item.moduleName);
// providers.push(item.moduleClass);
// angular.module(item.moduleName, []).factory(item.injectionName, downgradeInjectable(item.moduleClass));
// });
//
// const declarations: Type<any>[] = [];
// export const DOWNGRADED_COMPONENT_MODULE_NAMES: string[] = [];
// SPINNAKER_COMPONENT_DOWNGRADES.forEach((item) => {
// DOWNGRADED_COMPONENT_MODULE_NAMES.push(item.moduleName);
// declarations.push(item.moduleClass);
//
// // ng2 AoT requires we specify the inputs/outputs for downgraded components because the metadata is lost at runtime
// const component: any = {
// component: item.moduleClass
// };
// if (item.inputs) {
// component.inputs = item.inputs;
// }
// if (item.outputs) {
// component.outputs = item.outputs;
// }
//
// angular.module(item.moduleName, []).directive(item.injectionName, downgradeComponent(component) as ng.IDirectiveFactory);
// });
const providers: Type<any>[] = [];
export const DOWNGRADED_MODULE_NAMES: string[] = [];
SPINNAKER_DOWNGRADES.forEach((item) => {
DOWNGRADED_MODULE_NAMES.push(item.moduleName);
providers.push(item.moduleClass);
angular.module(item.moduleName, []).factory(item.injectionName, downgradeInjectable(item.moduleClass));
});

// angular.module(AUTHENTICATION_SERVICE, []).factory('authenticationService', downgradeInjectable(AuthenticationService));
const declarations: Type<any>[] = [];
export const DOWNGRADED_COMPONENT_MODULE_NAMES: string[] = [];
SPINNAKER_COMPONENT_DOWNGRADES.forEach((item) => {
DOWNGRADED_COMPONENT_MODULE_NAMES.push(item.moduleName);
declarations.push(item.moduleClass);

// ng2 AoT requires we specify the inputs/outputs for downgraded components because the metadata is lost at runtime
const component: any = {
component: item.moduleClass
};
if (item.inputs) {
component.inputs = item.inputs;
}
if (item.outputs) {
component.outputs = item.outputs;
}

angular.module(item.moduleName, []).directive(item.injectionName, downgradeComponent(component) as ng.IDirectiveFactory);
});

@NgModule({
imports: [
BrowserModule,
UpgradeModule
],
// declarations: [
// ...declarations
// ],
// entryComponents: [
// ...declarations
// ],
// providers: [
// ...providers
// ]
// providers: [
// AuthenticationService
// ]
declarations: [
...declarations
],
entryComponents: [
...declarations
],
providers: [
...providers
]
})
export class SpinnakerModule {
constructor(private upgrade: UpgradeModule) {}
Expand Down Expand Up @@ -86,5 +79,4 @@ export class SpinnakerModule {
// AuthenticationService
// ]
// })
// export class AuthenticationModule {
// }
// export class AuthenticationModule {}
15 changes: 5 additions & 10 deletions app/scripts/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@
import 'ts-helpers';
import * as angular from 'angular';
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
// import {UpgradeModule} from '@angular/upgrade/static';

// import {DOWNGRADED_MODULE_NAMES, DOWNGRADED_COMPONENT_MODULE_NAMES, SpinnakerModule} from './app.module';
import {SpinnakerModule} from './app.module';
import {DOWNGRADED_MODULE_NAMES, DOWNGRADED_COMPONENT_MODULE_NAMES, SpinnakerModule} from './app.module';
import {APPENGINE_MODULE} from './modules/appengine/appengine.module';
import {AUTHENTICATION_SERVICE} from './modules/core/authentication/authentication.service';

Expand All @@ -26,9 +24,9 @@ module.exports = angular.module('netflix.spinnaker', [
require('./modules/openstack/openstack.module.js'),
require('./modules/docker/docker.module.js'),
APPENGINE_MODULE,
AUTHENTICATION_SERVICE
// ...DOWNGRADED_MODULE_NAMES,
// ...DOWNGRADED_COMPONENT_MODULE_NAMES
AUTHENTICATION_SERVICE,
...DOWNGRADED_MODULE_NAMES,
...DOWNGRADED_COMPONENT_MODULE_NAMES
]);

const events: any = {
Expand Down Expand Up @@ -63,8 +61,5 @@ const twilightZone = Zone.current.fork({
});

twilightZone.run(() => {
platformBrowserDynamic().bootstrapModule(SpinnakerModule)/*.then(platformRef => {
const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
upgrade.bootstrap(document.body, ['netflix.spinnaker']);
})*/;
platformBrowserDynamic().bootstrapModule(SpinnakerModule);
});
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div modal-page ng-controller="awsDeployInitializerCtrl as deployInitializerCtrl">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div ng-if="state.loaded">
<div class="modal-header">
<h3>Template Selection</h3>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<div modal-page>
<task-monitor monitor="taskMonitor"></task-monitor>
<form role="form" name="form">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>Edit Advanced Settings for {{serverGroup.name}}</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<div modal-page class="confirmation-modal">
<task-monitor monitor="taskMonitor"></task-monitor>
<form role="form">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>Resize {{serverGroup.name}}</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<div modal-page class="confirmation-modal">
<task-monitor monitor="taskMonitor"></task-monitor>
<form role="form">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>Rollback {{serverGroup.name}}</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div modal-page class="scaling-policy-modal form-inline">
<task-monitor monitor="ctrl.taskMonitor"></task-monitor>
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>{{ctrl.action}} scaling policy</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<div modal-page class="confirmation-modal">
<task-monitor monitor="taskMonitor"></task-monitor>
<form role="form">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>Modify Scaling Processes for {{serverGroup.name}}</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<div modal-page>
<task-monitor monitor="taskMonitor"></task-monitor>
<form role="form" name="form">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>Edit Scheduled Actions for {{serverGroup.name}}</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<div modal-page>
<task-monitor monitor="$ctrl.taskMonitor"></task-monitor>
<form role="form" name="form">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>Edit Security Groups for {{$ctrl.serverGroup.name}}</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div modal-page>
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>Select Load Balancer</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div modal-page ng-controller="azureDeployInitializerCtrl as deployInitializerCtrl">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div ng-if="state.loaded">
<div class="modal-header">
<h3>Template Selection</h3>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div modal-page ng-controller="cfDeployInitializerCtrl as deployInitializerCtrl">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div ng-if="state.loaded">
<div class="modal-header">
<h3>Template Selection</h3>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<div modal-page>
<task-monitor monitor="taskMonitor"></task-monitor>
<form role="form">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>Resize {{serverGroup.name}}</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<div modal-page class="confirmation-modal">
<task-monitor monitor="taskMonitor"></task-monitor>
<form role="form" ng-if="!ctrl.submitting">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>Rollback {{serverGroup.name}}</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div modal-page class="flex-fill">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3>Edit Application Links</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div class="modal-page">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3 data-purpose="modal-header">Edit Application</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div class="modal-page">
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3 data-purpose="modal-header">New Application</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div modal-page>
<task-monitor monitor="ctrl.taskMonitor"></task-monitor>
<modal-close dismiss="$dismiss()"></modal-close>
<modal-close (dismiss)="$dismiss()"></modal-close>
<div class="modal-header">
<h3 data-purpose="modal-header">Page {{ctrl.application.name}} Owner</h3>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
'use strict';

import {AUTHENTICATION_INTERCEPTOR_SERVICE} from './authentication.interceptor.service';
import {AUTHENTICATION_INITIALIZER_SERVICE, AuthenticationInitializer} from './authentication.initializer.service';
import {REDIRECT_SERVICE} from './redirect.service';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import {IDeckRootScope} from 'core/domain/deckRootScope';
import {RedirectService} from './redirect.service';
import {AuthenticationService} from './authentication.service';
import {AUTHENTICATION} from './authentication.module';
// import {TEST_UPGRADE_MODULE} from 'core/authentication/TestUpgradeModule';
// import {TestBed} from '@angular/core/testing';

declare let window: any;
describe('authenticationProvider: application startup', function () {
Expand All @@ -14,7 +12,6 @@ describe('authenticationProvider: application startup', function () {
window.spinnakerSettings.authEnabled = true;
});

// beforeEach(mock.module(AUTHENTICATION, TEST_UPGRADE_MODULE));
beforeEach(mock.module(AUTHENTICATION));

let authenticationService: AuthenticationService,
Expand All @@ -25,12 +22,6 @@ describe('authenticationProvider: application startup', function () {
$location: ng.ILocationService,
$rootScope: IDeckRootScope;

// beforeEach(() => {
// TestBed.configureTestingModule({
// providers: [AuthenticationService]
// });
// });

beforeEach(
mock.inject(
(_authenticationService_: AuthenticationService,
Expand Down Expand Up @@ -77,13 +68,10 @@ describe('authenticationProvider: application startup', function () {
$http.flush();

const callback = encodeURIComponent($location.absUrl());

expect($rootScope.authenticating).toBe(true);
expect(authenticationService.getAuthenticatedUser().name).toBe('[anonymous]');
expect(authenticationService.getAuthenticatedUser().authenticated).toBe(false);
expect(redirectUrl).toBe(`${settings.gateUrl}/auth/redirect?to=${callback}`);

});
});

});
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {destroyPlatform} from '@angular/core';

import {AuthenticationService, IUser} from './authentication.service';

describe('authenticationService', function() {
describe('authenticationService', function () {

beforeEach(() => destroyPlatform());
afterEach(() => destroyPlatform());
Expand All @@ -12,23 +12,19 @@ describe('authenticationService', function() {
authenticationService = new AuthenticationService();
});

describe('setAuthenticatedUser', function() {
it('sets name, authenticated flag', function() {
describe('setAuthenticatedUser', function () {
it('sets name, authenticated flag', function () {
let user: IUser = authenticationService.getAuthenticatedUser();
expect(user.name).toBe('[anonymous]');
expect(user.authenticated).toBe(false);
authenticationService.setAuthenticatedUser({
name: 'kato@example.com',
authenticated: false,
roles: ['roleA', 'RoleB']
});

authenticationService.setAuthenticatedUser({name: 'kato@example.com', authenticated: false});
user = authenticationService.getAuthenticatedUser();
expect(user.name).toBe('kato@example.com');
expect(user.authenticated).toBe(true);
expect(user.roles).toEqual(['roleA', 'RoleB']);
});

it('disregards falsy values', function() {
it('disregards falsy values', function () {
const user: IUser = authenticationService.getAuthenticatedUser();

expect(user.name).toBe('[anonymous]');
Expand All @@ -38,10 +34,7 @@ describe('authenticationService', function() {
expect(user.name).toBe('[anonymous]');
expect(user.authenticated).toBe(false);

authenticationService.setAuthenticatedUser({
name: '',
authenticated: false
});
authenticationService.setAuthenticatedUser({name: '', authenticated: false});
expect(user.name).toBe('[anonymous]');
expect(user.authenticated).toBe(false);
});
Expand All @@ -52,10 +45,7 @@ describe('authenticationService', function() {
let firedEvents = 0;
authenticationService.onAuthentication(() => firedEvents++);
authenticationService.onAuthentication(() => firedEvents++);
authenticationService.setAuthenticatedUser({
name: 'foo@bar.com',
authenticated: false
});
authenticationService.setAuthenticatedUser({name: 'foo@bar.com', authenticated: false});
expect(authenticationService.getAuthenticatedUser().name).toBe('foo@bar.com');
expect(firedEvents).toBe(2);
});
Expand Down

0 comments on commit ad006ca

Please sign in to comment.