Files
speckle-server/packages/server/modules/previews/tests/unit/responses.spec.ts
T

48 lines
1.7 KiB
TypeScript

import { expect } from 'chai'
import { responseHandlerFactory } from '@/modules/previews/services/responses'
import { testLogger as logger } from '@/observability/logging'
import { buildConsumePreviewResult } from '@/modules/previews/resultListener'
import cryptoRandomString from 'crypto-random-string'
describe('object preview @previews', () => {
describe('responseHandlerFactory creates a function, that', () => {
beforeEach(() => {})
it('gracefully handles a response for a non-existent (e.g. deleted in meantime) project', async () => {
const handleResponse = responseHandlerFactory({
observeMetrics: () => {},
logger,
consumePreviewResultBuilder: buildConsumePreviewResult
})
let doneCalled = false
let doneErr: Error | null | undefined = null
await expect(
handleResponse(
{
data: {
jobId: `${cryptoRandomString({ length: 10 })}.${cryptoRandomString({
length: 10
})}`,
status: 'success',
result: {
durationSeconds: 0,
loadDurationSeconds: 0,
renderDurationSeconds: 0,
screenshots: {
'0': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII'
}
}
},
attemptsMade: 0
},
(err) => {
doneCalled = true
doneErr = err
}
)
).eventually.be.fulfilled
expect(doneCalled).to.be.true
expect(doneErr).to.be.undefined
})
})
})