topkat-utils
Version:
A comprehensive collection of TypeScript/JavaScript utility functions for common programming tasks. Includes validation, object manipulation, date handling, string formatting, and more. Zero dependencies, fully typed, and optimized for performance.
74 lines (45 loc) • 1.85 kB
text/typescript
import { transaction } from './transaction-utils'
import { timeout } from './timer-utils'
describe('TRANSACTION TEST', () => {
const statusArr = [] as number[]
const asyncCallback = i => async () => {
await timeout(1000)
statusArr.push(i)
}
it('should execute the async callback and resolve the result', async () => {
transaction('test', asyncCallback(1), 1500)
transaction('test', asyncCallback(2), 1500)
const now = Date.now()
await transaction('test', asyncCallback(3), 1500)
const timeSpent = Date.now() - now
expect(statusArr).toEqual([1, 2, 3])
expect(timeSpent < 5000).toEqual(true)
expect(timeSpent > 2999).toEqual(true)
})
it('Second run', async () => {
transaction('test', asyncCallback(4), 1500)
transaction('test', asyncCallback(5), 1500)
const now = Date.now()
await transaction('test', asyncCallback(6), 1500)
const timeSpent = Date.now() - now
expect(statusArr).toEqual([1, 2, 3, 4, 5, 6])
expect(timeSpent < 5000).toEqual(true)
expect(timeSpent > 2999).toEqual(true)
})
const infiniteCallback = async () => await timeout(5000)
it('Transaction timeout if the transaction is infinite and other transaction run correctly', async () => {
const now = Date.now()
let hasErr = false
try {
await transaction('test', infiniteCallback, 1000)
} catch (err) {
hasErr = true
}
const timeSpent = Date.now() - now
await transaction('test', asyncCallback(7), 1500)
expect(hasErr).toEqual(true)
expect(statusArr).toEqual([1, 2, 3, 4, 5, 6, 7])
expect(timeSpent < 2000).toEqual(true)
expect(timeSpent > 999).toEqual(true)
})
})