Browse Source

♻️ refactor(test): update test cases to match new manager initialization pattern

- 修改sttManager创建方式,要求传入rtmManager实例
- 移除全局sttManager和rtmManager变量定义,改为局部变量
- 删除多余的rtmManager.join调用,统一在创建sttManager时关联
- 增加注释说明RTM管理器需要先加入频道的前置条件
- 调整测试用例中的管理器初始化顺序,确保依赖关系正确
yourname 2 tháng trước cách đây
mục cha
commit
35981c8c82

+ 12 - 17
packages/stt-sdk-core/tests/compatibility/compatibility.test.ts

@@ -1,12 +1,9 @@
 import { describe, test, expect, beforeEach, afterEach, vi } from 'vitest'
 import { SttSdk } from '../../src/core/stt-sdk'
-import type { ISttManagerAdapter, IRtmManagerAdapter } from '../../src/types'
 import { SttError } from '../../src/core/stt-error'
 
 describe('SDK Compatibility Test', () => {
   let sdk: SttSdk
-  let sttManager: ISttManagerAdapter
-  let rtmManager: IRtmManagerAdapter
 
   beforeEach(() => {
     sdk = new SttSdk()
@@ -36,7 +33,8 @@ describe('SDK Compatibility Test', () => {
       logLevel: 'info',
     })
 
-    sttManager = sdk.createSttManager()
+    const rtmManager = sdk.createRtmManager()
+    const sttManager = sdk.createSttManager(rtmManager)
 
     // 验证管理器具有兼容的API
     expect(sttManager).toHaveProperty('init')
@@ -60,7 +58,7 @@ describe('SDK Compatibility Test', () => {
       logLevel: 'info',
     })
 
-    rtmManager = sdk.createRtmManager()
+    const rtmManager = sdk.createRtmManager()
 
     // 验证管理器具有兼容的API
     expect(rtmManager).toHaveProperty('join')
@@ -84,7 +82,8 @@ describe('SDK Compatibility Test', () => {
       logLevel: 'info',
     })
 
-    sttManager = sdk.createSttManager()
+    const rtmManager = sdk.createRtmManager()
+    const sttManager = sdk.createSttManager(rtmManager)
 
     await sttManager.init({
       userId: 'test-user',
@@ -105,7 +104,8 @@ describe('SDK Compatibility Test', () => {
       logLevel: 'info',
     })
 
-    sttManager = sdk.createSttManager()
+    const rtmManager = sdk.createRtmManager()
+    const sttManager = sdk.createSttManager(rtmManager)
     await sttManager.init({
       userId: 'test-user',
       channel: 'test-channel',
@@ -146,8 +146,9 @@ describe('SDK Compatibility Test', () => {
       logLevel: 'info',
     })
 
-    rtmManager = sdk.createRtmManager()
+    const rtmManager = sdk.createRtmManager()
 
+    // RTM管理器需要先加入频道
     await rtmManager.join({
       channel: 'test-channel',
       userId: 'test-user',
@@ -209,8 +210,8 @@ describe('SDK Compatibility Test', () => {
       logLevel: 'info',
     })
 
-    sttManager = sdk.createSttManager()
-    rtmManager = sdk.createRtmManager()
+    const rtmManager = sdk.createRtmManager()
+    const sttManager = sdk.createSttManager(rtmManager)
 
     await sttManager.init({
       userId: 'test-user',
@@ -218,12 +219,6 @@ describe('SDK Compatibility Test', () => {
       userName: 'Test User',
     })
 
-    await rtmManager.join({
-      channel: 'test-channel',
-      userId: 'test-user',
-      userName: 'Test User',
-    })
-
     // 销毁管理器
     await sttManager.destroy()
     await rtmManager.destroy()
@@ -241,8 +236,8 @@ describe('SDK Compatibility Test', () => {
       certificate: 'test-certificate',
       logLevel: 'info',
     })
-    const sttManager = sdk.createSttManager()
     const rtmManager = sdk.createRtmManager()
+    const sttManager = sdk.createSttManager(rtmManager)
 
     // 2. 验证属性访问模式(如 window.sttManager.property)
     expect(typeof sttManager.userId).toBe('string')

+ 18 - 37
packages/stt-sdk-core/tests/compatibility/integration.test.ts

@@ -1,12 +1,9 @@
 import { describe, test, expect, beforeEach, afterEach, vi } from 'vitest'
 import { SttSdk } from '../../src/core/stt-sdk'
-import type { ISttManagerAdapter, IRtmManagerAdapter } from '../../src/types'
 
 // 模拟现有应用的使用模式
 describe('Integration Test - Existing Application Pattern', () => {
   let sdk: SttSdk
-  let sttManager: ISttManagerAdapter
-  let rtmManager: IRtmManagerAdapter
 
   beforeEach(async () => {
     // 模拟现有应用的初始化过程
@@ -16,20 +13,10 @@ describe('Integration Test - Existing Application Pattern', () => {
       certificate: 'test-certificate',
       logLevel: 'info',
     })
-
-    // 创建管理器实例(模拟现有应用的模式)
-    sttManager = sdk.createSttManager()
-    rtmManager = sdk.createRtmManager()
-
-    // 模拟将管理器挂载到window对象(现有应用的做法)
-    ;(globalThis as any).sttManager = sttManager
-    ;(globalThis as any).rtmManager = rtmManager
   })
 
   afterEach(async () => {
     await sdk.destroy()
-    ;(globalThis as any).sttManager = undefined
-    ;(globalThis as any).rtmManager = undefined
   })
 
   test('Should work with existing application initialization pattern', async () => {
@@ -38,6 +25,10 @@ describe('Integration Test - Existing Application Pattern', () => {
     const channel = 'test-channel-456'
     const userName = 'Test User'
 
+    // 创建管理器实例
+    const rtmManager = sdk.createRtmManager()
+    const sttManager = sdk.createSttManager(rtmManager)
+
     // 初始化管理器(模拟现有应用的模式)
     await sttManager.init({
       userId,
@@ -45,12 +36,6 @@ describe('Integration Test - Existing Application Pattern', () => {
       userName,
     })
 
-    await rtmManager.join({
-      channel,
-      userId,
-      userName,
-    })
-
     // 验证管理器状态
     expect(sttManager.isInitialized).toBe(true)
     expect(sttManager.userId).toBe(userId)
@@ -63,18 +48,15 @@ describe('Integration Test - Existing Application Pattern', () => {
 
   test('Should handle transcription lifecycle like existing application', async () => {
     // 模拟现有应用的转录流程
+    const rtmManager = sdk.createRtmManager()
+    const sttManager = sdk.createSttManager(rtmManager)
+
     await sttManager.init({
       userId: 'test-user',
       channel: 'test-channel',
       userName: 'Test User',
     })
 
-    await rtmManager.join({
-      channel: 'test-channel',
-      userId: 'test-user',
-      userName: 'Test User',
-    })
-
     // 开始转录(模拟现有应用的模式)
     const languages = [
       { source: 'en', target: ['zh'] },
@@ -93,6 +75,9 @@ describe('Integration Test - Existing Application Pattern', () => {
   })
 
   test('Should handle RTM operations like existing application', async () => {
+    const rtmManager = sdk.createRtmManager()
+
+    // RTM管理器需要先加入频道
     await rtmManager.join({
       channel: 'test-channel',
       userId: 'test-user',
@@ -122,6 +107,7 @@ describe('Integration Test - Existing Application Pattern', () => {
 
   test('Should provide event system compatible with existing application', () => {
     // 模拟现有应用的事件监听模式
+    const rtmManager = sdk.createRtmManager()
     const sttDataChangedHandler = vi.fn()
     const languagesChangedHandler = vi.fn()
     const errorHandler = vi.fn()
@@ -149,18 +135,15 @@ describe('Integration Test - Existing Application Pattern', () => {
 
   test('Should handle destruction like existing application', async () => {
     // 模拟现有应用的销毁流程
+    const rtmManager = sdk.createRtmManager()
+    const sttManager = sdk.createSttManager(rtmManager)
+
     await sttManager.init({
       userId: 'test-user',
       channel: 'test-channel',
       userName: 'Test User',
     })
 
-    await rtmManager.join({
-      channel: 'test-channel',
-      userId: 'test-user',
-      userName: 'Test User',
-    })
-
     // 销毁管理器(模拟现有应用的模式)
     await sttManager.destroy()
     await rtmManager.destroy()
@@ -172,6 +155,8 @@ describe('Integration Test - Existing Application Pattern', () => {
 
   test('Should maintain property access patterns from existing application', () => {
     // 模拟现有应用的属性访问模式
+    const rtmManager = sdk.createRtmManager()
+    const sttManager = sdk.createSttManager(rtmManager)
 
     // 直接属性访问(如 window.sttManager.userId)
     expect(typeof (sttManager as any).userId).toBe('string')
@@ -190,6 +175,8 @@ describe('Integration Test - Existing Application Pattern', () => {
 
   test('Should handle error scenarios like existing application', async () => {
     // 测试错误处理兼容性
+    const rtmManager = sdk.createRtmManager()
+    const sttManager = sdk.createSttManager(rtmManager)
 
     // 未初始化时调用方法应该抛出错误
     await expect(sttManager.startTranscription({ languages: [] })).rejects.toThrow()
@@ -203,12 +190,6 @@ describe('Integration Test - Existing Application Pattern', () => {
       userName: 'Test User',
     })
 
-    await rtmManager.join({
-      channel: 'test-channel',
-      userId: 'test-user',
-      userName: 'Test User',
-    })
-
     // 现在应该可以正常工作(需要提供有效的语言)
     await expect(
       sttManager.startTranscription({ languages: [{ source: 'en', target: ['zh'] }] })

+ 7 - 5
packages/stt-sdk-core/tests/core/stt-sdk.test.ts

@@ -53,15 +53,17 @@ describe('SttSdk', () => {
     it('should create STT manager when SDK is initialized', async () => {
       await sdk.initialize({ appId: 'test-app-id', certificate: 'test-certificate' })
 
-      const manager = sdk.createSttManager()
+      const rtmManager = sdk.createRtmManager()
+      const manager = sdk.createSttManager(rtmManager)
 
       expect(manager).toBeDefined()
       expect(sdk.sttManagerCount).toBe(1)
     })
 
     it('should throw error when SDK is not initialized', () => {
-      expect(() => sdk.createSttManager()).toThrow(SttError)
-      expect(() => sdk.createSttManager()).toThrow(
+      const rtmManager = {} as any
+      expect(() => sdk.createSttManager(rtmManager)).toThrow(SttError)
+      expect(() => sdk.createSttManager(rtmManager)).toThrow(
         'SDK must be initialized before creating managers'
       )
     })
@@ -90,8 +92,8 @@ describe('SttSdk', () => {
       await sdk.initialize({ appId: 'test-app-id', certificate: 'test-certificate' })
 
       // 创建管理器以测试销毁功能
-      sdk.createSttManager()
-      sdk.createRtmManager()
+      const rtmManager = sdk.createRtmManager()
+      sdk.createSttManager(rtmManager)
 
       await sdk.destroy()