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