test(nest): 添加测试用例

This commit is contained in:
2025-10-23 06:26:43 +00:00
parent 134dad264b
commit 180ef959b3

79
src/helper/nest.test.ts Normal file
View File

@ -0,0 +1,79 @@
import { expect, test } from 'vitest';
import { getNestedProperty } from './nest';
test('getNestedProperty - basic object', () => {
const data = {
a: {
b: {
c: 42
}
}
}
expect(getNestedProperty<number>(data, 'a.b.c')).toBe(42);
})
test('getNestedProperty - nested arrays', () => {
const data = {
translations: [
{ languages_code: 'zh-CN', name: '中文' },
{ languages_code: 'en-US', name: 'English' }
]
};
expect(getNestedProperty<string>(data, 'translations.name')).toEqual(['中文', 'English']);
})
test('getNestedProperty - missing path', () => {
const data = {
a: {
b: {
c: 42
}
}
}
expect(getNestedProperty<number>(data, 'a.x.c')).toBeUndefined();
})
test('getNestedProperty - array of objects', () => {
const data = {
items: [
{
id: 1, value: {
text: 'one'
}
},
{
id: 2, value: {
text: 'two'
}
},
{
id: 3, value: {
text: 'three'
}
}
]
};
expect(getNestedProperty<string>(data, 'items.value.text')).toEqual(['one', 'two', 'three']);
})
test('getNestedProperty - array in array', () => {
const data = {
groups: [
{
name: 'group1',
value: [
{ text: 'a' },
{ text: 'b' }
]
},
{
name: 'group2',
value: [
{ text: 'c' },
{ text: 'd' }
]
}
]
}
expect(getNestedProperty<string>(data, 'groups.value.text')).toEqual([['a', 'b'], ['c', 'd']]);
})