diff --git a/src/service/command/meme/clang.ts b/src/service/command/meme/clang.ts new file mode 100644 index 00000000..0b62b076 --- /dev/null +++ b/src/service/command/meme/clang.ts @@ -0,0 +1,13 @@ +import type { MemeTemplate } from '../../../model/meme-template.js'; + +export const clang: MemeTemplate = { + commandNames: ['clang', 'c'], + description: '〜の天才\n9つの〜を操る', + flagsKeys: [], + optionsKeys: [], + errorMessage: 'エラーの天才\n9つの引数エラーを操る', + generate(args) { + const [option1, option2] = args.body.split(' '); + return `${option1}の天才\n9つの${option2}を操る`; + } +}; diff --git a/src/service/command/meme/index.ts b/src/service/command/meme/index.ts index fc492ead..7d63818e 100644 --- a/src/service/command/meme/index.ts +++ b/src/service/command/meme/index.ts @@ -1,3 +1,4 @@ +import { clang } from './clang.js'; import { dousurya } from './dousurya.js'; import { hukueki } from './hukueki.js'; import { kenjou } from './kenjou.js'; @@ -25,5 +26,6 @@ export const memes = [ koume, ojaru, nine, - tsureteike + tsureteike, + clang ]; diff --git a/src/service/command/meme/test/clang.test.ts b/src/service/command/meme/test/clang.test.ts new file mode 100644 index 00000000..d83ce47f --- /dev/null +++ b/src/service/command/meme/test/clang.test.ts @@ -0,0 +1,36 @@ +import { describe, expect, it } from 'vitest'; + +import { parseStringsOrThrow } from '../../../../adaptor/proxy/command/schema.js'; +import { createMockMessage } from '../../command-message.js'; +import { Meme } from '../../meme.js'; + +describe('meme', () => { + const responder = new Meme(); + + it('use case of clang', async () => { + await responder.on( + createMockMessage( + parseStringsOrThrow(['clang', 'GitHub', 'ラベル'], responder.schema), + (message) => { + expect(message).toStrictEqual({ + description: 'GitHubの天才\n9つのラベルを操る' + }); + } + ) + ); + }); + + it('args null (clang)', async () => { + await responder.on( + createMockMessage( + parseStringsOrThrow(['clang'], responder.schema), + (message) => { + expect(message).toStrictEqual({ + title: '引数が不足してるみたいだ。', + description: 'エラーの天才\n9つの引数エラーを操る' + }); + } + ) + ); + }); +});