diff --git a/test-d/streaming.ts b/test-d/streaming.ts index 6b186bd..7ff7f95 100644 --- a/test-d/streaming.ts +++ b/test-d/streaming.ts @@ -9,4 +9,18 @@ describe('Streaming', () => { expectType(notification); }); }); + + test('params type', async () => { + const stream = new Misskey.Stream('https://misskey.test', { token: 'TOKEN' }); + // TODO: 「stream.useChannel の第二引数として受け入れる型が + // { + // otherparty?: User['id'] | null; + // group?: UserGroup['id'] | null; + // } + // になっている」というテストを行いたいけどtsdでの書き方がわからない + const messagingChannel = stream.useChannel('messaging', { otherparty: 'aaa' }); + messagingChannel.on('message', message => { + expectType(message); + }); + }); }); diff --git a/test/streaming.ts b/test/streaming.ts index 7de85ce..d346d8c 100644 --- a/test/streaming.ts +++ b/test/streaming.ts @@ -36,10 +36,40 @@ describe('Streaming', () => { server.close(); }); - /* TODO test('useChannel with parameters', async () => { + const server = new WS('wss://misskey.test/streaming'); + const stream = new Stream('https://misskey.test', { token: 'TOKEN' }); + const messagingChannelReceived: any[] = []; + const messaging = stream.useChannel('messaging', { otherparty: 'aaa' }); + messaging.on('message', payload => { + messagingChannelReceived.push(payload); + }); + await server.connected; + const msg = JSON.parse(await server.nextMessage as string); + const messagingChannelId = msg.body.id; + expect(msg.type).toEqual('connect'); + expect(msg.body.channel).toEqual('messaging'); + expect(msg.body.params).toEqual({ otherparty: 'aaa' }); + expect(messagingChannelId != null).toEqual(true); + + server.send(JSON.stringify({ + type: 'channel', + body: { + id: messagingChannelId, + type: 'message', + body: { + id: 'foo' + } + } + })); + + expect(messagingChannelReceived[0]).toEqual({ + id: 'foo' + }); + + stream.close(); + server.close(); }); - */ test('Connection#dispose', async () => { const server = new WS('wss://misskey.test/streaming');