fix(tracker): fix compression tests breaking workflow action
This commit is contained in:
parent
4e3332304e
commit
b94eaa2a26
1 changed files with 95 additions and 0 deletions
95
tracker/tracker/src/webworker/BatchWriter.unit.test.ts
Normal file
95
tracker/tracker/src/webworker/BatchWriter.unit.test.ts
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
import BatchWriter from './BatchWriter'
|
||||||
|
import * as Messages from '../common/messages.gen.js'
|
||||||
|
import { describe, expect, test, jest, beforeEach, afterEach } from '@jest/globals'
|
||||||
|
import Message from '../common/messages.gen.js'
|
||||||
|
|
||||||
|
describe('BatchWriter', () => {
|
||||||
|
let onBatchMock: (b: Uint8Array) => void
|
||||||
|
let batchWriter: BatchWriter
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
onBatchMock = jest.fn()
|
||||||
|
batchWriter = new BatchWriter(1, 123456789, 'example.com', onBatchMock)
|
||||||
|
})
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
jest.clearAllMocks()
|
||||||
|
})
|
||||||
|
|
||||||
|
test('constructor initializes BatchWriter instance', () => {
|
||||||
|
expect(batchWriter['pageNo']).toBe(1)
|
||||||
|
expect(batchWriter['timestamp']).toBe(123456789)
|
||||||
|
expect(batchWriter['url']).toBe('example.com')
|
||||||
|
expect(batchWriter['onBatch']).toBe(onBatchMock)
|
||||||
|
expect(batchWriter['nextIndex']).toBe(0)
|
||||||
|
expect(batchWriter['beaconSize']).toBe(200000)
|
||||||
|
expect(batchWriter['encoder']).toBeDefined()
|
||||||
|
expect(batchWriter['strDict']).toBeDefined()
|
||||||
|
expect(batchWriter['sizeBuffer']).toHaveLength(3)
|
||||||
|
expect(batchWriter['isEmpty']).toBe(true)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('writeType writes the type of the message', () => {
|
||||||
|
const message = [Messages.Type.BatchMetadata, 1, 2, 3, 4, 'example.com']
|
||||||
|
const result = batchWriter['writeType'](message as Message)
|
||||||
|
expect(result).toBe(true)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('writeFields encodes the message fields', () => {
|
||||||
|
const message = [Messages.Type.BatchMetadata, 1, 2, 3, 4, 'example.com']
|
||||||
|
const result = batchWriter['writeFields'](message as Message)
|
||||||
|
expect(result).toBe(true)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('writeSizeAt writes the size at the given offset', () => {
|
||||||
|
batchWriter['writeSizeAt'](100, 0)
|
||||||
|
expect(batchWriter['sizeBuffer']).toEqual(new Uint8Array([100, 0, 0]))
|
||||||
|
expect(batchWriter['encoder']['data'].slice(0, 3)).toEqual(new Uint8Array([100, 0, 0]))
|
||||||
|
})
|
||||||
|
|
||||||
|
test('prepare prepares the BatchWriter for writing', () => {
|
||||||
|
// TODO
|
||||||
|
})
|
||||||
|
|
||||||
|
test('writeWithSize writes the message with its size', () => {
|
||||||
|
const message = [Messages.Type.BatchMetadata, 1, 2, 3, 4, 'example.com']
|
||||||
|
const result = batchWriter['writeWithSize'](message as Message)
|
||||||
|
expect(result).toBe(true)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('setBeaconSizeLimit sets the beacon size limit', () => {
|
||||||
|
batchWriter['setBeaconSizeLimit'](500000)
|
||||||
|
expect(batchWriter['beaconSizeLimit']).toBe(500000)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('Set note attribute tries to use dictionary', () => {
|
||||||
|
const spyOnStrGetKey = jest.spyOn(batchWriter['strDict'], 'getKey')
|
||||||
|
// @ts-ignore
|
||||||
|
batchWriter['writeMessage']([Messages.Type.SetNodeAttribute, 1, 'name', 'value'])
|
||||||
|
expect(spyOnStrGetKey).toHaveBeenCalledTimes(2)
|
||||||
|
expect(spyOnStrGetKey).toHaveBeenCalledWith('name')
|
||||||
|
expect(spyOnStrGetKey).toHaveBeenCalledWith('value')
|
||||||
|
})
|
||||||
|
|
||||||
|
test('writeMessage writes the given message', () => {
|
||||||
|
const message = [Messages.Type.Timestamp, 987654321]
|
||||||
|
// @ts-ignore
|
||||||
|
batchWriter['writeWithSize'] = jest.fn().mockReturnValue(true)
|
||||||
|
batchWriter['writeMessage'](message as Message)
|
||||||
|
expect(batchWriter['writeWithSize']).toHaveBeenCalledWith(message)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('finaliseBatch flushes the encoder and calls onBatch', () => {
|
||||||
|
const flushSpy = jest.spyOn(batchWriter['encoder'], 'flush')
|
||||||
|
batchWriter['isEmpty'] = false
|
||||||
|
batchWriter['finaliseBatch']()
|
||||||
|
expect(flushSpy).toHaveBeenCalled()
|
||||||
|
expect(onBatchMock).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
|
||||||
|
test('clean resets the encoder', () => {
|
||||||
|
const cleanSpy = jest.spyOn(batchWriter['encoder'], 'reset')
|
||||||
|
batchWriter['clean']()
|
||||||
|
expect(cleanSpy).toHaveBeenCalled()
|
||||||
|
})
|
||||||
|
})
|
||||||
Loading…
Add table
Reference in a new issue