2018-03-13 05:15:40 +00:00
|
|
|
// tslint:disable-next-line:no-implicit-dependencies
|
2019-01-31 01:52:18 +00:00
|
|
|
import { expect, tap } from '@pushrocks/tapbundle';
|
2018-03-07 21:22:15 +00:00
|
|
|
import * as smartuniverse from '../ts/index';
|
|
|
|
|
2018-03-20 07:16:54 +00:00
|
|
|
import { Observable } from 'rxjs';
|
|
|
|
|
2018-03-13 05:15:40 +00:00
|
|
|
let testUniverse: smartuniverse.Universe;
|
2019-04-22 21:11:51 +00:00
|
|
|
let testClientUniverse: smartuniverse.ClientUniverse;
|
2019-04-28 10:42:08 +00:00
|
|
|
let testClientUniverse2: smartuniverse.ClientUniverse;
|
2018-05-28 10:07:25 +00:00
|
|
|
let testClientChannel: smartuniverse.ClientUniverseChannel;
|
2018-03-08 22:42:46 +00:00
|
|
|
|
2019-04-28 10:42:08 +00:00
|
|
|
const testServerData = {
|
|
|
|
serverAddress: 'http://localhost:8765'
|
|
|
|
};
|
|
|
|
|
2019-04-11 16:50:43 +00:00
|
|
|
const testChannelData = {
|
|
|
|
channelName: 'awesomeTestChannel',
|
2019-08-13 13:48:20 +00:00
|
|
|
channelPass: 'awesomeChannelPass'
|
2019-04-22 11:06:01 +00:00
|
|
|
};
|
2019-04-11 16:50:43 +00:00
|
|
|
|
2018-03-07 21:22:15 +00:00
|
|
|
tap.test('first test', async () => {
|
2018-03-13 05:15:40 +00:00
|
|
|
testUniverse = new smartuniverse.Universe({
|
2018-03-20 07:16:54 +00:00
|
|
|
messageExpiryInMilliseconds: 1000
|
2018-03-13 05:15:40 +00:00
|
|
|
});
|
2018-03-07 21:22:15 +00:00
|
|
|
});
|
|
|
|
|
2018-03-13 05:15:40 +00:00
|
|
|
tap.test('add a message to the SmartUniverse', async () => {
|
2019-04-11 16:50:43 +00:00
|
|
|
await testUniverse.start(8765);
|
2018-03-20 07:16:54 +00:00
|
|
|
});
|
2018-03-13 05:15:40 +00:00
|
|
|
|
|
|
|
// testing message handling
|
|
|
|
tap.test('create smartuniverse client', async () => {
|
2019-04-22 21:11:51 +00:00
|
|
|
testClientUniverse = new smartuniverse.ClientUniverse({
|
2019-04-28 10:42:08 +00:00
|
|
|
serverAddress: testServerData.serverAddress
|
2018-03-15 00:05:13 +00:00
|
|
|
});
|
2019-04-22 21:11:51 +00:00
|
|
|
expect(testClientUniverse).to.be.instanceof(smartuniverse.ClientUniverse);
|
2018-05-28 10:07:25 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
tap.test('should add a channel to the universe', async () => {
|
2019-09-01 15:04:25 +00:00
|
|
|
testUniverse.addChannel(testChannelData.channelName, testChannelData.channelPass);
|
2019-04-22 21:23:36 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
tap.test('should add the same channel to the client universe in the same way', async () => {
|
2019-08-13 16:43:33 +00:00
|
|
|
testClientUniverse.addChannel(testChannelData.channelName, testChannelData.channelPass);
|
2018-05-28 10:07:25 +00:00
|
|
|
});
|
|
|
|
|
2019-08-13 13:48:20 +00:00
|
|
|
tap.test('should start the ClientUniverse', async () => {
|
|
|
|
await testClientUniverse.start();
|
2019-09-01 15:04:25 +00:00
|
|
|
});
|
2019-08-13 13:48:20 +00:00
|
|
|
|
2018-05-28 10:07:25 +00:00
|
|
|
tap.test('should get a observable correctly', async () => {
|
2019-08-13 16:41:27 +00:00
|
|
|
testClientChannel = testClientUniverse.getChannel(testChannelData.channelName);
|
2018-05-28 10:07:25 +00:00
|
|
|
expect(testClientChannel).to.be.instanceof(smartuniverse.ClientUniverseChannel);
|
2018-03-20 07:16:54 +00:00
|
|
|
});
|
2018-03-13 05:15:40 +00:00
|
|
|
|
2018-03-15 00:16:16 +00:00
|
|
|
tap.test('should send a message correctly', async () => {
|
2019-09-01 15:04:25 +00:00
|
|
|
await testClientUniverse.getChannel(testChannelData.channelName).sendMessage({
|
2019-08-12 15:23:10 +00:00
|
|
|
messageText: 'hello'
|
2018-03-20 07:16:54 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2019-04-24 16:20:31 +00:00
|
|
|
tap.test('universe should contain the sent message', async () => {
|
|
|
|
expect(testUniverse.universeCache.messageMap.getArray()[0].messageText).to.equal('hello');
|
|
|
|
});
|
|
|
|
|
2019-04-28 10:42:08 +00:00
|
|
|
tap.test('a second client should be able to subscibe', async () => {
|
|
|
|
testClientUniverse2 = new smartuniverse.ClientUniverse({
|
|
|
|
serverAddress: testServerData.serverAddress
|
|
|
|
});
|
|
|
|
|
|
|
|
testClientUniverse2.addChannel(testChannelData.channelName, testChannelData.channelPass);
|
2019-09-10 16:03:46 +00:00
|
|
|
await testClientUniverse2.start();
|
2019-04-28 10:42:08 +00:00
|
|
|
});
|
|
|
|
|
2019-09-10 16:03:46 +00:00
|
|
|
tap.test('should receive a message correctly', async (tools) => {
|
|
|
|
const done = tools.defer();
|
|
|
|
const testChannel = testClientUniverse.getChannel(testChannelData.channelName);
|
|
|
|
const testChannel2 = testClientUniverse2.getChannel(testChannelData.channelName);
|
2019-09-10 17:36:10 +00:00
|
|
|
const subscription = testChannel2.subscribe(messageArg => {
|
2019-09-17 13:40:54 +00:00
|
|
|
if (messageArg.messageText === 'hellothere') {
|
|
|
|
console.log('Yay##########');
|
|
|
|
done.resolve();
|
|
|
|
}
|
2019-09-10 16:03:46 +00:00
|
|
|
});
|
|
|
|
await testChannel.sendMessage({
|
|
|
|
messageText: 'hellothere'
|
|
|
|
});
|
|
|
|
await done.promise;
|
|
|
|
});
|
2018-03-15 00:16:16 +00:00
|
|
|
|
2019-09-17 11:57:34 +00:00
|
|
|
interface IDemoReqRes {
|
|
|
|
method: 'demo',
|
|
|
|
request: {
|
|
|
|
wowso: string;
|
|
|
|
};
|
|
|
|
response: {
|
|
|
|
hereso: string;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
tap.test('ReactionRequest and ReactionResponse should work', async () => {
|
|
|
|
const reactionResponse = new smartuniverse.ReactionResponse<IDemoReqRes>({
|
2019-09-17 12:01:24 +00:00
|
|
|
channels: [testUniverse.getChannel(testChannelData.channelName)],
|
2019-09-17 11:57:34 +00:00
|
|
|
funcDef: async reqData => {
|
|
|
|
console.log(reqData);
|
|
|
|
return {
|
|
|
|
hereso: 'Hello there'
|
|
|
|
};
|
|
|
|
},
|
|
|
|
method: 'demo'
|
|
|
|
});
|
|
|
|
const reactionRequest = new smartuniverse.ReactionRequest<IDemoReqRes>({
|
|
|
|
method: 'demo'
|
|
|
|
});
|
|
|
|
const reactionResult = await reactionRequest.fire([testClientUniverse2.getChannel(testChannelData.channelName)], {
|
|
|
|
wowso: 'wowza'
|
|
|
|
});
|
|
|
|
const result = await reactionResult.getFirstResult();
|
|
|
|
console.log(result);
|
|
|
|
});
|
|
|
|
|
2019-09-17 13:40:54 +00:00
|
|
|
tap.test('should disconnect the client correctly', async (tools) => {
|
2019-09-09 22:39:18 +00:00
|
|
|
await testClientUniverse.stop();
|
2019-09-17 13:40:54 +00:00
|
|
|
await testClientUniverse2.stop();
|
2018-04-13 13:45:48 +00:00
|
|
|
});
|
2018-03-27 22:38:32 +00:00
|
|
|
|
2019-09-17 13:40:54 +00:00
|
|
|
tap.test('should end the server correctly', async (tools) => {
|
2018-03-13 05:15:40 +00:00
|
|
|
await testUniverse.stopServer();
|
2018-03-20 07:16:54 +00:00
|
|
|
});
|
2018-03-13 05:15:40 +00:00
|
|
|
|
2018-03-07 21:22:15 +00:00
|
|
|
tap.start();
|