Home Reference Source Test

test/2_integrationTests/3_event/2_readEvent.test.ts

import {Eventstore, Event} from '../../../src'
import * as assert from 'assert'
import {JSONValue} from '../../../src/JSON'

describe('Read events from stream', (): void => {
  const es = new Eventstore({
    uri: 'discover://restrictedUser:restrictedOnlyUserPassword@cluster1.escluster.net:2112',
    clientId: 'ts-client-test',
    useSSL: true
  })
  before(
    async (): Promise<void> => {
      await es.connect()
    }
  )

  after(
    async (): Promise<void> => {
      await es.disconnect()
    }
  )

  it('reads a slice forward', async (): Promise<void> => {
    const stream = await es.stream('teneventsstream-ad44caa8-d701-48f2-ac1e-2ec147ff1df5')
    const result = await stream.readSliceForward(0, 100, true)
    assert.notStrictEqual(result, undefined)
    assert.notStrictEqual(result, null)
    assert.strictEqual(result.isEndOfStream, true)
    assert.strictEqual(result.events.length, 10)
    for (let x = 0, xMax = result.events.length; x < xMax; x++) {
      const event = Event.fromRaw(result.events[x].event)
      // eslint-disable-next-line @typescript-eslint/no-angle-bracket-type-assertion
      const data: {[k: string]: JSONValue} = <{count: number}>event.data
      assert.strictEqual(data.count, x + 1)
    }
  })

  it('reads a slice backward', async (): Promise<void> => {
    const stream = await es.stream('teneventsstream-ad44caa8-d701-48f2-ac1e-2ec147ff1df5')
    const result = await stream.readSliceBackward(-1, 100, true)
    assert.notStrictEqual(result, undefined)
    assert.notStrictEqual(result, null)
    assert.strictEqual(result.isEndOfStream, true)
    assert.strictEqual(result.events.length, 10)
    for (let x = result.events.length; x > 0; x--) {
      const event = Event.fromRaw(result.events[x - 1].event)
      // eslint-disable-next-line @typescript-eslint/no-angle-bracket-type-assertion
      const data: {[k: string]: JSONValue} = <{count: number}>event.data
      assert.strictEqual(data.count, 11 - x)
    }
  })
})