94 lines
3.0 KiB
TypeScript
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 })
|
|
})
|
|
})
|