import { describe, it, expect, beforeEach, afterEach } from 'bun:test'
import { SearchService } from '../../search-service'
import { SlackAPIClient } from '../../slack-api-client'
import { LoggingService } from '../../logging-service'
const originalEnv = process.env
describe('メッセージ検索フローの統合テスト', () => {
let slackClient: SlackAPIClient
let searchService: SearchService
let loggingService: LoggingService
beforeEach(() => {
// テストごとに環境変数をクリア
process.env = { ...originalEnv }
loggingService = new LoggingService()
slackClient = new SlackAPIClient(loggingService)
searchService = new SearchService(slackClient, loggingService)
})
afterEach(() => {
// 環境変数を元に戻す
process.env = originalEnv
})
describe('Search Service と Slack API Client の統合テスト', () => {
beforeEach(() => {
const token = 'xoxb-test-token-1234567890-1234567890123-AbCdEfGhIjKlMnOpQrStUvWx'
slackClient.initializeClient(token)
})
it('Search Service が Slack API Client を正しく呼び出す', async () => {
// メソッドが存在することを確認
expect(typeof searchService.searchMessages).toBe('function')
expect(typeof slackClient.searchMessages).toBe('function')
})
it('検索クエリが Search Service から Slack API Client に正しく渡される', async () => {
// 統合テストでは、実際の API 呼び出しは行わない
// メソッドの存在とインターフェースの整合性を確認
expect(searchService).toBeDefined()
expect(slackClient).toBeDefined()
})
})
describe('エンドツーエンドの検索リクエストフローのテスト', () => {
beforeEach(() => {
const token = 'xoxb-test-token-1234567890-1234567890123-AbCdEfGhIjKlMnOpQrStUvWx'
slackClient.initializeClient(token)
})
it('検索リクエストが正しい形式で処理される', async () => {
// 検索オプションの形式を確認
const options = {
query: 'test query',
limit: 10,
channelIds: ['C1234567890'],
teamId: 'T1234567890',
}
// メソッドが存在することを確認
expect(typeof searchService.searchMessages).toBe('function')
})
it('検索結果が正しい形式で返却される', async () => {
// 検索結果の形式を確認
// 実際の API 呼び出しは統合テストで行う
expect(searchService).toBeDefined()
})
})
})