From 9bbf04e9c9fb35f367799f2e20bd05713cf40b2f Mon Sep 17 00:00:00 2001 From: someApprentice Date: Mon, 24 Sep 2018 23:00:37 +0700 Subject: [PATCH 1/3] Added providers injector --- modules/socket-engine/src/main.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/socket-engine/src/main.ts b/modules/socket-engine/src/main.ts index 0a9faad39..bf2adaed4 100644 --- a/modules/socket-engine/src/main.ts +++ b/modules/socket-engine/src/main.ts @@ -26,11 +26,12 @@ export interface SocketEngineResponse { export function startSocketEngine( moduleOrFactory: Type<{}> | NgModuleFactory<{}>, + providers: StaticProvider[] = [], host = 'localhost', port = 9090 ): Promise { return new Promise((resolve, _reject) => { - const engine = new CommonEngine(moduleOrFactory); + const engine = new CommonEngine(moduleOrFactory, providers); const server = net.createServer(socket => { socket.on('data', async buff => { From e0aac7543dfc8190396265c89f1384a1544b82e9 Mon Sep 17 00:00:00 2001 From: someApprentice Date: Fri, 28 Sep 2018 19:32:34 +0700 Subject: [PATCH 2/3] fixed the build erros --- modules/socket-engine/src/main.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/socket-engine/src/main.ts b/modules/socket-engine/src/main.ts index bf2adaed4..3fe5d4473 100644 --- a/modules/socket-engine/src/main.ts +++ b/modules/socket-engine/src/main.ts @@ -7,7 +7,7 @@ */ import { ɵCommonEngine as CommonEngine, ɵRenderOptions as RenderOptions } from '@nguniversal/common/engine'; -import { NgModuleFactory, Type } from '@angular/core'; +import { NgModuleFactory, Type, StaticProvider } from '@angular/core'; import * as net from 'net'; export interface SocketEngineServer { From b32158937194ee733ce347336163799057c5dcaf Mon Sep 17 00:00:00 2001 From: someApprentice Date: Sat, 29 Sep 2018 19:12:40 +0700 Subject: [PATCH 3/3] Added a small unit test --- modules/socket-engine/spec/index.spec.ts | 26 +++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/modules/socket-engine/spec/index.spec.ts b/modules/socket-engine/spec/index.spec.ts index f9e7447f1..f8d067b51 100644 --- a/modules/socket-engine/spec/index.spec.ts +++ b/modules/socket-engine/spec/index.spec.ts @@ -1,6 +1,6 @@ import { ServerModule } from '@angular/platform-server'; -import { NgModule, Component } from '@angular/core'; +import { NgModule, Component, Inject, InjectionToken } from '@angular/core'; import 'zone.js'; import { BrowserModule } from '@angular/platform-browser'; @@ -88,4 +88,28 @@ describe('test runner', () => { expect(result.error).toBeUndefined(); done(); }); + it('should be able to inject some token', async(done) => { + const SOME_TOKEN = new InjectionToken('SOME_TOKEN'); + const someValue = {message: 'value' + new Date()}; + @Component({ + selector: 'root', + template: `message:{{_someToken.message}}` + }) + class MockComponent {constructor(@Inject(SOME_TOKEN) public readonly _someToken: any) {}} + const appModule = makeTestingModule('', MockComponent); + const server = await startSocketEngine(appModule, [{provide: SOME_TOKEN, useValue: someValue}]); + + const client = net.createConnection(9090, 'localhost', () => { + const renderOptions = {id: 1, url: '/path', + document: ''} as SocketEngineRenderOptions; + client.write(JSON.stringify(renderOptions)); + }); + + client.on('data', data => { + const res = JSON.parse(data.toString()) as SocketEngineResponse; + server.close(); + expect(res.html).toContain(someValue.message); + done(); + }); + }); });