angular-cn/packages/upgrade/static/testing/test/mocks.ts

77 lines
2.0 KiB
TypeScript

/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import {Inject, Injectable, NgModule} from '@angular/core';
import {downgradeInjectable} from '@angular/upgrade/static';
import * as ng from '../../../src/common/src/angular1';
/*
* This mock application code contains the following services and their dependencies:
*
* shoppingCart (AngularJS)
* -> Inventory (Angular - downgraded)
* -> serverRequest (AngularJS - upgraded)
* -> Logger (Angular - downgraded)
*
* This allows us to test two scenarios:
* * AngularJS -> Angular -> AngularJS
* * Angular -> AngularJS -> Angular
*/
/* START: Angular bits */
@Injectable()
export class Logger {
warn() {}
}
@Injectable()
export class Inventory {
constructor(@Inject('serverRequest') public serverRequest: any) {}
}
export function serverRequestFactory(i: ng.IInjectorService) {
return i.get('serverRequest');
}
@NgModule({
providers: [
Logger,
Inventory,
{provide: 'serverRequest', useFactory: serverRequestFactory, deps: ['$injector']},
]
})
export class AppModule {
}
/* END: Angular bits */
/* START: AngularJS bits */
export const serverRequestInstance: {logger?: Logger} = {};
export const shoppingCartInstance: {inventory?: Inventory} = {};
export function defineAppModule() {
ng.module_('app', [])
.factory('logger', downgradeInjectable(Logger))
.factory('inventory', downgradeInjectable(Inventory))
.factory(
'serverRequest',
[
'logger',
function(logger: Logger) {
serverRequestInstance.logger = logger;
return serverRequestInstance;
}
])
.factory('shoppingCart', [
'inventory',
function(inventory: Inventory) {
shoppingCartInstance.inventory = inventory;
return shoppingCartInstance;
}
]);
}
/* END: AngularJS bits */