2026-02-14 20:03:44 +08:00

94 lines
3.0 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { interopDefault } from '../src/node/utils/package.js'
describe('interopDefault', () => {
it('should return default export if exists', async () => {
const module = { default: { name: 'test' }, other: 'value' }
const result = await interopDefault(Promise.resolve(module))
expect(result).toEqual({ name: 'test' })
})
it('should return module itself if no default export', async () => {
const module = { name: 'test', value: 123 }
const result = await interopDefault(Promise.resolve(module))
expect(result).toEqual({ name: 'test', value: 123 })
})
it('should handle non-object default', async () => {
const module = { default: 'string value' }
const result = await interopDefault(Promise.resolve(module))
expect(result).toBe('string value')
})
it('should handle function default', async () => {
const fn = () => 'function result'
const module = { default: fn }
const result = await interopDefault(Promise.resolve(module))
expect(result).toBe(fn)
expect(result()).toBe('function result')
})
it('should handle primitive values', async () => {
const result = await interopDefault(Promise.resolve(42))
expect(result).toBe(42)
})
it('should handle string values', async () => {
const result = await interopDefault(Promise.resolve('hello'))
expect(result).toBe('hello')
})
it('should handle array values', async () => {
const arr = [1, 2, 3]
const result = await interopDefault(Promise.resolve(arr))
expect(result).toEqual([1, 2, 3])
})
it('should handle nested object default', async () => {
const module = {
default: {
nested: {
deep: 'value',
},
},
}
const result = await interopDefault(Promise.resolve(module))
expect(result).toEqual({ nested: { deep: 'value' } })
})
it('should handle class as default', async () => {
class TestClass {
value = 'test'
}
const module = { default: TestClass }
const result = await interopDefault(Promise.resolve(module))
expect(result).toBe(TestClass)
// eslint-disable-next-line new-cap
expect(new result().value).toBe('test')
})
it('should return module for falsy default values', async () => {
const module = { default: 0 }
const result = await interopDefault(Promise.resolve(module))
expect(result).toEqual({ default: 0 })
})
it('should return module for empty string default', async () => {
const module = { default: '' }
const result = await interopDefault(Promise.resolve(module))
expect(result).toEqual({ default: '' })
})
it('should return module for false as default', async () => {
const module = { default: false }
const result = await interopDefault(Promise.resolve(module))
expect(result).toEqual({ default: false })
})
it('should return module for null as default', async () => {
const module = { default: null }
const result = await interopDefault(Promise.resolve(module))
expect(result).toEqual({ default: null })
})
})