Home Reference Source Test

test/2_integrationTests/2_stream/1_stream.test.ts

import {expect} from 'chai'
import {Eventstore} from '../../../src'

describe('Stream tests', (): 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()
    }
  )

  describe('Basic tests', async (): Promise<void> => {
    it('returns a stream name', (): void => {
      const stream = es.stream('hola')
      expect(stream.name).not.to.be.undefined
      expect(stream.name).not.to.be.null
    })

    it('returns a stream instance for function stream', (): void => {
      const stream = es.stream('hola')
      expect(stream).not.to.be.undefined
      expect(stream).not.to.be.null
    })

    it('returns a stream instance for function fromStream', (): void => {
      const stream = es.fromStream('hola')
      expect(stream).not.to.be.undefined
      expect(stream).not.to.be.null
    })

    it('returns a stream instance for function atStream', (): void => {
      const stream = es.fromStream('hola')
      expect(stream).not.to.be.undefined
      expect(stream).not.to.be.null
    })

    it('returns same stream on requiresMaster', (): void => {
      const stream = es.stream('hola')
      const result = stream.requiresMaster()
      expect(stream).to.be.equal(result)
    })

    it('returns same stream on withCredentials', (): void => {
      const stream = es.stream('hola')
      const result = stream.withCredentials({username: 'otheruser', password: 'otherpassword'})
      expect(stream).to.be.equal(result)
    })

    it('returns same stream on resolveAllLinks', (): void => {
      const stream = es.stream('hola')
      const result = stream.resolveAllLinks()
      expect(stream).to.be.equal(result)
    })

    it('can soft delete a stream', async (): Promise<void> => {
      await es.stream('streamtosoftdelete-773f2fc6-ed4b-4f37-9b5b-4d737b181ac3').softDelete()
    })

    it('can soft delete a stream on master node', async (): Promise<void> => {
      await es
        .stream('streamtosoftdeletemaster-5784a6cc-0559-45b1-8432-31535707c140')
        .requiresMaster()
        .softDelete()
    })

    it('can hard delete a stream', async (): Promise<void> => {
      await es.stream('streamtoharddelete-1d772e21-f670-4493-8d72-cb9ab1d03edb').hardDelete()
    })

    it('throws on delete metastream', async (): Promise<void> => {
      try {
        await es.stream('$$streamtosoftdelete').softDelete()
      } catch (err) {
        expect(err.name).to.be.equal('EventstoreBadRequestError')
      }
    })
  })
})