refactoring RouteBuilderFactory into service

This commit is contained in:
alecmerdler 2017-01-21 22:09:22 -08:00
parent edd7314624
commit 2a59014f0b
7 changed files with 56 additions and 6 deletions

View file

@ -3,7 +3,7 @@ import { quayConfig } from './quay.config';
import quayPages from './quay-pages.module'; import quayPages from './quay-pages.module';
import quayRun from './quay.run'; import quayRun from './quay.run';
import { ViewArrayFactory } from './services/view-array/view-array.factory'; import { ViewArrayFactory } from './services/view-array/view-array.factory';
import { routeBuilderFactory } from './route-builder/route-builder.service.impl'; import RouteBuilderFactory from './services/route-builder/route-builder.factory';
import NAME_PATTERNS from './constants/name-patterns.constant'; import NAME_PATTERNS from './constants/name-patterns.constant';
import { routeConfig } from './quay.routes'; import { routeConfig } from './quay.routes';
import { CONFIG } from './constants/quay-config.constant'; import { CONFIG } from './constants/quay-config.constant';
@ -51,7 +51,7 @@ export default angular
.config(routeConfig) .config(routeConfig)
.constant('NAME_PATTERNS', NAME_PATTERNS) .constant('NAME_PATTERNS', NAME_PATTERNS)
.constant('CONFIG', CONFIG) .constant('CONFIG', CONFIG)
.factory('RouteBuilder', routeBuilderFactory) .service('RouteBuilderFactory', RouteBuilderFactory)
.service('ViewArrayFactory', ViewArrayFactory) .service('ViewArrayFactory', ViewArrayFactory)
.run(quayRun) .run(quayRun)
.name; .name;

View file

@ -1,17 +1,18 @@
import { RouteBuilder } from './route-builder/route-builder.service'; import RouteBuilderFactory from './services/route-builder/route-builder.factory';
import { RouteBuilder } from './services/route-builder/route-builder.service';
import pages from './constants/pages.constant'; import pages from './constants/pages.constant';
routeConfig.$inject = [ routeConfig.$inject = [
'pages', 'pages',
'RouteBuilderProvider', 'RouteBuilderFactoryProvider',
'$routeProvider', '$routeProvider',
'$locationProvider', '$locationProvider',
]; ];
export function routeConfig( export function routeConfig(
pages: any, pages: any,
RouteBuilderProvider: any, RouteBuilderFactoryProvider: any,
$routeProvider: ng.route.IRouteProvider, $routeProvider: ng.route.IRouteProvider,
$locationProvider: ng.ILocationProvider) { $locationProvider: ng.ILocationProvider) {
$locationProvider.html5Mode(true); $locationProvider.html5Mode(true);
@ -23,7 +24,7 @@ export function routeConfig(
var layoutProfile: string = 'layout'; var layoutProfile: string = 'layout';
var routeBuilder: RouteBuilder = new RouteBuilderProvider.$get()($routeProvider, pages, [ var routeBuilder: RouteBuilder = RouteBuilderFactoryProvider.$get().create($routeProvider, pages, [
// Start with the old pages (if we asked for it). // Start with the old pages (if we asked for it).
{id: 'old-layout', templatePath: '/static/partials/'}, {id: 'old-layout', templatePath: '/static/partials/'},

View file

@ -0,0 +1,35 @@
import RouteBuilderFactory from './route-builder.factory';
import { RouteBuilder } from "static/js/services/route-builder/route-builder.service";
describe("Factory: RouteBuilderFactory", () => {
var routeBuilderFactory: RouteBuilderFactory;
var routeProviderMock;
var pagesMock;
var profiles;
var currentProfile;
beforeEach(() => {
profiles = [
{id: 'old-layout', templatePath: '/static/partials/'},
{id: 'layout', templatePath: '/static/partials/'}
];
currentProfile = 'layout';
routeProviderMock = jasmine.createSpyObj('routeProvider', ['otherwise', 'when']);
pagesMock = jasmine.createSpyObj('pagesMock', ['get', 'create']);
routeBuilderFactory = new RouteBuilderFactory();
});
describe("constructor", () => {
});
describe("create", () => {
it("returns a RouteBuilder instance", () => {
var routeBuilder: RouteBuilder = routeBuilderFactory.create(routeProviderMock, pagesMock, profiles, currentProfile);
expect(routeBuilder).toBeDefined();
});
});
});

View file

@ -0,0 +1,14 @@
import { RouteBuilder } from './route-builder.service';
import { RouteBuilderImpl } from './route-builder.service.impl';
export default class RouteBuilderFactory {
constructor() {
}
public create(routeProvider, pages, profiles, currentProfile): RouteBuilder {
return new RouteBuilderImpl(routeProvider, pages, profiles, currentProfile);
}
}