9433cfb9创建于 2025年12月31日历史提交
const PAGE_PATH = '/pages/API/event-bus/event-bus'
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
const isIos = platformInfo.startsWith('ios')

describe('event-bus', () => {
  if (isIos) {
  	it('skip ios', () => {
  		expect(1).toBe(1)
  	})
  	return
  }
  let page
  beforeAll(async () => {
    page = await program.reLaunch(PAGE_PATH)
    await page.waitFor('view')
  })

  it('on', async () => {
    await page.callMethod('clear')
    await page.callMethod('on')
    await page.callMethod('emit')
    const l1 = (await page.data()).log.length
    expect(l1).toBe(1)
    await page.callMethod('clear')
    await page.callMethod('emit')
    const l2 = (await page.data()).log.length
    expect(l2).toBe(1)
    await page.callMethod('clear')
    await page.callMethod('on')
    await page.callMethod('emit')
    const l3 = (await page.data()).log.length
    expect(l3).toBe(2)
    await page.callMethod('clear')
    await page.callMethod('off')
    await page.callMethod('emit')
    const l4 = (await page.data()).log.length
    expect(l4).toBe(1)
    await page.callMethod('clear')
    await page.callMethod('off')
    await page.callMethod('emit')
    const l5 = (await page.data()).log.length
    expect(l5).toBe(0)
  })

  it('once', async () => {
    await page.callMethod('clear')
    await page.callMethod('once')
    await page.callMethod('emit')
    const l1 = (await page.data()).log.length
    expect(l1).toBe(1)
    await page.callMethod('clear')
    await page.callMethod('emit')
    const l2 = (await page.data()).log.length
    expect(l2).toBe(0)
    await page.callMethod('clear')
    await page.callMethod('once')
    await page.callMethod('off')
    await page.callMethod('emit')
    const l3 = (await page.data()).log.length
    expect(l3).toBe(0)
  })

  it('emit object params', async () => {
    await page.callMethod('onObj')
    await page.callMethod('emitWithObj')
    const objArg = await page.data('objArg')
    expect(objArg.a).toBe(1)
    expect(objArg.b).toBe(2)
  })

  it('off-all', async () => {
    await page.callMethod('clear')
    await page.callMethod('on')
    await page.callMethod('on2')
    await page.callMethod('emit')
    const l1 = (await page.data()).log.length
    expect(l1).toBe(2)

    await page.callMethod('clear')
    const l2 = (await page.data()).log.length
    expect(l2).toBe(0)

    await page.callMethod('offAll')
    await page.callMethod('emit')
    const l3 = (await page.data()).log.length
    expect(l3).toBe(0)
  })
  it('test return id', async () => {
    await page.callMethod('clear')
    expect((await page.data()).log.length).toBe(0)
    await page.callMethod('testReturnId')
    const logs = await page.data('log')
    expect(logs.length).toBe(2)
    expect(logs[0]).toBe('触发 test-return-id $on fn')
    expect(logs[1]).toBe('触发 test-return-id $once fn')
  })
  it('test $emit no args', async () => {
    await page.callMethod('clear')
    expect((await page.data()).log.length).toBe(0)
    await page.callMethod('testEmitNoArgs')
    const logs = await page.data('log')
    expect(logs.length).toBe(1)
    expect(logs[0]).toBe('test-emit-no-args')
  })
  it('test $emit multiple args', async () => {
    await page.callMethod('clear')
    expect((await page.data()).log.length).toBe(0)
    await page.callMethod('testEmitMultipleArgs')
    const logs = await page.data('log')
    expect(logs.length).toBe(1)
    expect(logs[0]).toBe('arg1_2')
  })
  
})