Skip to content

Commit

Permalink
Add more type tests related to #861 (#862)
Browse files Browse the repository at this point in the history
  • Loading branch information
seratch committed Apr 7, 2021
1 parent f1e9fff commit 4365f45
Showing 1 changed file with 31 additions and 2 deletions.
33 changes: 31 additions & 2 deletions types-tests/message.test-d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { expectNotType, expectType } from 'tsd';
import { App, MessageEvent, BotMessageEvent, MessageRepliedEvent, MeMessageEvent, MessageDeletedEvent, ThreadBroadcastMessageEvent, MessageChangedEvent, EKMAccessDeniedMessageEvent } from '..';
import { expectNotType, expectType, expectError } from 'tsd';
import { App, MessageEvent, GenericMessageEvent, BotMessageEvent, MessageRepliedEvent, MeMessageEvent, MessageDeletedEvent, ThreadBroadcastMessageEvent, MessageChangedEvent, EKMAccessDeniedMessageEvent } from '..';

const app = new App({ token: 'TOKEN', signingSecret: 'Signing Secret' });

Expand All @@ -9,33 +9,62 @@ expectType<void>(
app.message(async ({ message }) => {
expectType<MessageEvent>(message);

message.channel; // the property access should compile

// The type here is still a union type of all the possible subtyped events.
// Thus, only the fields available for all the types can be resolved outside if/else statements.
expectError(message.user);

if (message.subtype === undefined) {
expectType<GenericMessageEvent>(message);
expectNotType<MessageEvent>(message);
message.user; // the property access should compile
message.channel; // the property access should compile
message.team; // the property access should compile
}
if (message.subtype === 'bot_message') {
expectType<BotMessageEvent>(message);
expectNotType<MessageEvent>(message);
message.user; // the property access should compile
message.channel; // the property access should compile
}
if (message.subtype === 'ekm_access_denied') {
expectType<EKMAccessDeniedMessageEvent>(message);
expectNotType<MessageEvent>(message);
message.user; // the property access should compile
message.channel; // the property access should compile
}
if (message.subtype === 'me_message') {
expectType<MeMessageEvent>(message);
expectNotType<MessageEvent>(message);
message.user; // the property access should compile
message.channel; // the property access should compile
}
if (message.subtype === 'message_replied') {
expectType<MessageRepliedEvent>(message);
expectNotType<MessageEvent>(message);
message.channel; // the property access should compile
message.message; // the property access should compile
}
if (message.subtype === 'message_changed') {
expectType<MessageChangedEvent>(message);
expectNotType<MessageEvent>(message);
message.channel; // the property access should compile
message.message; // the property access should compile
}
if (message.subtype === 'message_deleted') {
expectType<MessageDeletedEvent>(message);
expectNotType<MessageEvent>(message);
message.channel; // the property access should compile
message.ts; // the property access should compile
}
if (message.subtype === 'thread_broadcast') {
expectType<ThreadBroadcastMessageEvent>(message);
expectNotType<MessageEvent>(message);
message.channel; // the property access should compile
message.thread_ts; // the property access should compile
message.ts; // the property access should compile
message.root; // the property access should compile
}

await Promise.resolve(message);
Expand Down

0 comments on commit 4365f45

Please sign in to comment.