Skip to content

Commit 84d7178

Browse files
fix(websockets) fix broken unit tests
1 parent 844a69e commit 84d7178

8 files changed

Lines changed: 73 additions & 70 deletions

packages/microservices/test/listeners-controller.spec.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ describe('ListenersController', () => {
3939
);
4040
rpcContextCreator = sinon.createStubInstance(RpcContextCreator) as any;
4141
proxySpy = sinon.spy();
42-
(rpcContextCreator as any).create.callsFake(()=>proxySpy);
42+
(rpcContextCreator as any).create.callsFake(() => proxySpy);
4343
instance = new ListenersController(
4444
new ClientsContainer(),
4545
rpcContextCreator,
@@ -55,7 +55,7 @@ describe('ListenersController', () => {
5555
};
5656
});
5757

58-
describe('bindPatternHandlers', () => {
58+
describe('registerPatternHandlers', () => {
5959
const handlers = [
6060
{ pattern: 'test', targetCallback: 'tt' },
6161
{ pattern: 'test2', targetCallback: '2' },
@@ -66,13 +66,13 @@ describe('ListenersController', () => {
6666
});
6767
it(`should call "addHandler" method of server for each pattern handler`, () => {
6868
explorer.expects('explore').returns(handlers);
69-
instance.bindPatternHandlers(new InstanceWrapper(), server, '');
69+
instance.registerPatternHandlers(new InstanceWrapper(), server, '');
7070
expect(addSpy.calledTwice).to.be.true;
7171
});
7272
describe('when request scoped', () => {
7373
it(`should call "addHandler" with deffered proxy`, () => {
7474
explorer.expects('explore').returns(handlers);
75-
instance.bindPatternHandlers(
75+
instance.registerPatternHandlers(
7676
new InstanceWrapper({ scope: Scope.REQUEST }),
7777
server,
7878
'',
@@ -93,8 +93,10 @@ describe('ListenersController', () => {
9393
handle: handleSpy,
9494
} as any),
9595
);
96-
97-
sinon.stub((instance as any), 'registerRequestProvider').callsFake(() => ({} as any));
96+
97+
sinon
98+
.stub(instance as any, 'registerRequestProvider')
99+
.callsFake(() => ({} as any));
98100
});
99101

100102
describe('when "loadPerContext" resolves', () => {
@@ -107,19 +109,21 @@ describe('ListenersController', () => {
107109
const wrapper = new InstanceWrapper({ instance: { [methodKey]: {} } });
108110

109111
it('should pass all arguments to the proxy chain', async () => {
110-
sinon.stub(injector, 'loadPerContext').callsFake(() => Promise.resolve({}));
112+
sinon
113+
.stub(injector, 'loadPerContext')
114+
.callsFake(() => Promise.resolve({}));
111115
const handler = instance.createRequestScopedHandler(
112116
wrapper,
113117
pattern,
114118
module,
115119
moduleKey,
116120
methodKey,
117121
);
118-
await handler("data", "metadata");
122+
await handler('data', 'metadata');
119123

120124
expect(proxySpy.called).to.be.true;
121-
expect(proxySpy.getCall(0).args[0]).to.be.eql("data");
122-
expect(proxySpy.getCall(0).args[1]).to.be.eql("metadata");
125+
expect(proxySpy.getCall(0).args[0]).to.be.eql('data');
126+
expect(proxySpy.getCall(0).args[1]).to.be.eql('metadata');
123127
});
124128
});
125129

@@ -165,7 +169,7 @@ describe('ListenersController', () => {
165169
});
166170
});
167171

168-
describe('bindClientsToProperties', () => {
172+
describe('assignClientsToProperties', () => {
169173
class TestClass {}
170174

171175
it('should bind all clients to properties', () => {
@@ -184,7 +188,7 @@ describe('ListenersController', () => {
184188
instance,
185189
'assignClientToInstance',
186190
);
187-
instance.bindClientsToProperties(controller);
191+
instance.assignClientsToProperties(controller);
188192

189193
expect(assignClientToInstanceSpy.calledOnce).to.be.true;
190194
});

packages/websockets/socket-module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export class SocketModule<HttpServer = any> {
8686
if (!adapter) {
8787
return;
8888
}
89-
const servers = this.socketsContainer.getAllServers();
89+
const servers = this.socketsContainer.getAllSocketEventHosts();
9090
await Promise.all(
9191
iterate(servers.values())
9292
.filter(({ server }) => server)

packages/websockets/socket-server-provider.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,44 +16,44 @@ export class SocketServerProvider {
1616
options: T,
1717
port: number,
1818
): SocketEventsHost {
19-
const observableServer = this.socketsContainer.getServerByPort(port);
20-
return observableServer
21-
? this.createWithNamespace(options, port, observableServer)
19+
const socketEventsHost = this.socketsContainer.getSocketEventsHostByPort(
20+
port,
21+
);
22+
return socketEventsHost
23+
? this.createWithNamespace(options, port, socketEventsHost)
2224
: this.createSocketServer(options, port);
2325
}
2426

2527
private createSocketServer<T extends GatewayMetadata>(
2628
options: T,
2729
port: number,
2830
): SocketEventsHost {
29-
const { namespace, server, ...opt } = options as any;
31+
const { namespace, server, ...partialOptions } = options as any;
3032
const adapter = this.applicationConfig.getIoAdapter();
31-
const ioServer = adapter.create(port, opt);
33+
const ioServer = adapter.create(port, partialOptions);
3234
const observableSocket = SocketEventsHostFactory.create(ioServer);
3335

34-
this.socketsContainer.addServer(null, port, observableSocket);
36+
this.socketsContainer.addSocketEventsHost(null, port, observableSocket);
3537
return this.createWithNamespace(options, port, observableSocket);
3638
}
3739

3840
private createWithNamespace<T extends GatewayMetadata>(
3941
options: T,
4042
port: number,
41-
observableSocket: SocketEventsHost,
43+
socketEventsHost: SocketEventsHost,
4244
): SocketEventsHost {
4345
const { namespace } = options;
4446
if (!namespace) {
45-
return observableSocket;
47+
return socketEventsHost;
4648
}
4749
const namespaceServer = this.getServerOfNamespace(
4850
options,
4951
port,
50-
observableSocket.server,
51-
);
52-
const observableNamespaceSocket = SocketEventsHostFactory.create(
53-
namespaceServer,
52+
socketEventsHost.server,
5453
);
55-
this.socketsContainer.addServer(namespace, port, observableNamespaceSocket);
56-
return observableNamespaceSocket;
54+
const eventsHost = SocketEventsHostFactory.create(namespaceServer);
55+
this.socketsContainer.addSocketEventsHost(namespace, port, eventsHost);
56+
return eventsHost;
5757
}
5858

5959
private getServerOfNamespace<TOptions extends GatewayMetadata, TServer = any>(
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
import { SocketEventsHost } from './interfaces';
22

33
export class SocketsContainer {
4-
private readonly observableServers = new Map<
4+
private readonly socketEventHosts = new Map<
55
string | RegExp,
66
SocketEventsHost
77
>();
88

9-
public getAllServers(): Map<string | RegExp, SocketEventsHost> {
10-
return this.observableServers;
9+
public getAllSocketEventHosts(): Map<string | RegExp, SocketEventsHost> {
10+
return this.socketEventHosts;
1111
}
1212

13-
public getServerByPort(port: number): SocketEventsHost {
14-
return this.observableServers.get(`${port}`);
13+
public getSocketEventsHostByPort(port: number): SocketEventsHost {
14+
return this.socketEventHosts.get(`${port}`);
1515
}
1616

17-
public addServer(
17+
public addSocketEventsHost(
1818
namespace: string | RegExp,
1919
port: number,
20-
server: SocketEventsHost,
20+
host: SocketEventsHost,
2121
) {
22-
this.observableServers.set(
22+
this.socketEventHosts.set(
2323
namespace ? `${namespace}:${port}` : `${port}`,
24-
server,
24+
host,
2525
);
2626
}
2727

2828
public clear() {
29-
this.observableServers.clear();
29+
this.socketEventHosts.clear();
3030
}
3131
}
Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import * as sinon from 'sinon';
21
import { expect } from 'chai';
3-
import { SocketsContainer } from '../container';
2+
import * as sinon from 'sinon';
3+
import { SocketsContainer } from '../sockets-container';
44

55
describe('SocketsContainer', () => {
66
const namespace = 'test';
@@ -13,37 +13,37 @@ describe('SocketsContainer', () => {
1313
setSpy = sinon.spy();
1414
getSpy = sinon.spy();
1515
instance = new SocketsContainer();
16-
(<any>instance)['observableServers'] = {
16+
(instance as any).socketEventHosts = {
1717
get: getSpy,
1818
set: setSpy,
1919
};
2020
});
21-
describe('getSocketServer', () => {
22-
it(`should call "observableServers" get method with expected arguments`, () => {
23-
instance.getServerByPort(port);
21+
describe('getSocketEventsHostByPort', () => {
22+
it(`should call "socketEventHosts" get method with expected arguments`, () => {
23+
instance.getSocketEventsHostByPort(port);
2424
expect(getSpy.calledWith({ namespace, port }));
2525
});
2626
});
27-
describe('storeObservableServer', () => {
28-
it(`should call "observableServers" set method with expected arguments`, () => {
27+
describe('addSocketEventsHost', () => {
28+
it(`should call "socketEventHosts" set method with expected arguments`, () => {
2929
const server = {};
30-
instance.addServer(namespace, port, <any>server);
30+
instance.addSocketEventsHost(namespace, port, server as any);
3131
expect(setSpy.calledWith({ namespace, port }, server));
3232
});
3333
});
34-
describe('getAllServers', () => {
35-
it('should return "observableServers"', () => {
34+
describe('getAllSocketEventHosts', () => {
35+
it('should return "socketEventHosts"', () => {
3636
const collection = ['test'];
37-
(instance as any).observableServers = collection;
38-
expect(instance.getAllServers()).to.be.eq(collection);
37+
(instance as any).socketEventHosts = collection;
38+
expect(instance.getAllSocketEventHosts()).to.be.eq(collection);
3939
});
4040
});
4141
describe('clear', () => {
42-
it('should clear servers collection', () => {
42+
it('should clear hosts collection', () => {
4343
const collection = { clear: sinon.spy() };
44-
(instance as any).observableServers = collection;
44+
(instance as any).socketEventHosts = collection;
4545
instance.clear();
4646
expect(collection.clear.called).to.be.true;
4747
});
48-
})
48+
});
4949
});

packages/websockets/test/observable-socket.spec.ts renamed to packages/websockets/test/socket-events-host-factory.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { expect } from 'chai';
2-
import { ObservableSocket } from '../observable-socket';
32
import { ReplaySubject, Subject } from 'rxjs';
3+
import { SocketEventsHostFactory } from '../socket-events-host-factory';
44

5-
describe('ObservableSocket', () => {
5+
describe('SocketEventsHostFactory', () => {
66
describe('create', () => {
77
it(`should return expected observable socket object`, () => {
88
const server = { test: 'test' };
9-
const result = ObservableSocket.create(server);
9+
const result = SocketEventsHostFactory.create(server);
1010

1111
expect(result).to.have.keys('init', 'connection', 'disconnect', 'server');
1212
expect(result.init instanceof ReplaySubject).to.be.true;

packages/websockets/test/socket-server-provider.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { ApplicationConfig } from '@nestjs/core/application-config';
22
import { expect } from 'chai';
33
import * as sinon from 'sinon';
4-
import { SocketsContainer } from '../container';
54
import { SocketServerProvider } from '../socket-server-provider';
5+
import { SocketsContainer } from '../sockets-container';
66
import { AbstractWsAdapter } from './../adapters/ws-adapter';
77

88
class NoopAdapter extends AbstractWsAdapter {
@@ -35,15 +35,15 @@ describe('SocketServerProvider', () => {
3535
});
3636
it(`should returns stored server`, () => {
3737
const server = { test: 'test' };
38-
mockContainer.expects('getServerByPort').returns(server);
38+
mockContainer.expects('getSocketEventsHostByPort').returns(server);
3939

4040
const result = instance.scanForSocketServer({ namespace: null }, port);
4141

4242
expect(createSocketServerSpy.called).to.be.false;
4343
expect(result).to.eq(server);
4444
});
4545
it(`should call "createSocketServer" when server is not stored already`, () => {
46-
mockContainer.expects('getServerByPort').returns(null);
46+
mockContainer.expects('getSocketEventsHostByPort').returns(null);
4747

4848
instance.scanForSocketServer({ namespace }, port);
4949
expect(createSocketServerSpy.called).to.be.true;

packages/websockets/test/web-sockets-controller.spec.ts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ describe('WebSocketsController', () => {
4848
);
4949
});
5050
describe('mergeGatewayAndServer', () => {
51-
let subscribeObservableServer: sinon.SinonSpy;
51+
let subscribeToServerEvents: sinon.SinonSpy;
5252

5353
@WebSocketGateway('test' as any)
5454
class InvalidGateway {}
@@ -57,8 +57,8 @@ describe('WebSocketsController', () => {
5757
class DefaultGateway {}
5858

5959
beforeEach(() => {
60-
subscribeObservableServer = sinon.spy();
61-
(instance as any).subscribeObservableServer = subscribeObservableServer;
60+
subscribeToServerEvents = sinon.spy();
61+
(instance as any).subscribeToServerEvents = subscribeToServerEvents;
6262
});
6363
it('should throws "InvalidSocketPortException" when port is not a number', () => {
6464
Reflect.defineMetadata(PORT_METADATA, 'test', InvalidGateway);
@@ -70,21 +70,20 @@ describe('WebSocketsController', () => {
7070
),
7171
).throws(InvalidSocketPortException);
7272
});
73-
it('should call "subscribeObservableServer" with default values when metadata is empty', () => {
73+
it('should call "subscribeToServerEvents" with default values when metadata is empty', () => {
7474
const gateway = new DefaultGateway();
7575
instance.mergeGatewayAndServer(gateway, DefaultGateway, '');
76-
expect(subscribeObservableServer.calledWith(gateway, {}, 0, '')).to.be
77-
.true;
76+
expect(subscribeToServerEvents.calledWith(gateway, {}, 0, '')).to.be.true;
7877
});
79-
it('should call "subscribeObservableServer" when metadata is valid', () => {
78+
it('should call "subscribeToServerEvents" when metadata is valid', () => {
8079
const gateway = new Test();
8180
instance.mergeGatewayAndServer(gateway, Test, '');
8281
expect(
83-
subscribeObservableServer.calledWith(gateway, { namespace }, port, ''),
82+
subscribeToServerEvents.calledWith(gateway, { namespace }, port, ''),
8483
).to.be.true;
8584
});
8685
});
87-
describe('subscribeObservableServer', () => {
86+
describe('subscribeToServerEvents', () => {
8887
let explorer: GatewayMetadataExplorer,
8988
mockExplorer: sinon.SinonMock,
9089
gateway,
@@ -112,11 +111,11 @@ describe('WebSocketsController', () => {
112111
(instance as any).subscribeEvents = subscribeEvents;
113112
});
114113
it('should call "hookServerToProperties" with expected arguments', () => {
115-
instance.subscribeObservableServer(gateway, namespace, port, '');
114+
instance.subscribeToServerEvents(gateway, namespace, port, '');
116115
expect(hookServerToProperties.calledWith(gateway, server.server));
117116
});
118117
it('should call "subscribeEvents" with expected arguments', () => {
119-
instance.subscribeObservableServer(gateway, namespace, port, '');
118+
instance.subscribeToServerEvents(gateway, namespace, port, '');
120119
expect(subscribeEvents.calledWith(gateway, handlers, server));
121120
});
122121
});

0 commit comments

Comments
 (0)