mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-18 14:25:51 +00:00
55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
import { lazySchema } from '../lazySchema'
|
|
|
|
describe('lazySchema', () => {
|
|
test('returns a function', () => {
|
|
const factory = lazySchema(() => 42)
|
|
expect(typeof factory).toBe('function')
|
|
})
|
|
|
|
test('calls factory on first invocation', () => {
|
|
let callCount = 0
|
|
const factory = lazySchema(() => {
|
|
callCount++
|
|
return 'result'
|
|
})
|
|
factory()
|
|
expect(callCount).toBe(1)
|
|
})
|
|
|
|
test('returns cached result on subsequent invocations', () => {
|
|
const factory = lazySchema(() => ({ value: Math.random() }))
|
|
const first = factory()
|
|
const second = factory()
|
|
expect(first).toBe(second)
|
|
})
|
|
|
|
test('factory is called only once', () => {
|
|
let callCount = 0
|
|
const factory = lazySchema(() => {
|
|
callCount++
|
|
return 'cached'
|
|
})
|
|
factory()
|
|
factory()
|
|
factory()
|
|
expect(callCount).toBe(1)
|
|
})
|
|
|
|
test('works with different return types', () => {
|
|
const numFactory = lazySchema(() => 123)
|
|
expect(numFactory()).toBe(123)
|
|
|
|
const arrFactory = lazySchema(() => [1, 2, 3])
|
|
expect(arrFactory()).toEqual([1, 2, 3])
|
|
})
|
|
|
|
test('each call to lazySchema returns independent cache', () => {
|
|
const a = lazySchema(() => ({ id: 'a' }))
|
|
const b = lazySchema(() => ({ id: 'b' }))
|
|
expect(a()).not.toBe(b())
|
|
expect(a().id).toBe('a')
|
|
expect(b().id).toBe('b')
|
|
})
|
|
})
|