directus

Форк
0
/
calculate-field-depth.test.ts 
90 строк · 1.3 Кб
1
import { calculateFieldDepth } from './calculate-field-depth.js';
2
import { test, expect } from 'vitest';
3

4
test('Calculates basic depth', () => {
5
	const filter = {
6
		name: {
7
			_eq: 'test',
8
		},
9
	};
10

11
	const result = calculateFieldDepth(filter);
12

13
	expect(result).toBe(1);
14
});
15

16
test('Calculates relational depth', () => {
17
	const filter = {
18
		author: {
19
			name: {
20
				_eq: 'test',
21
			},
22
		},
23
	};
24

25
	const result = calculateFieldDepth(filter);
26

27
	expect(result).toBe(2);
28
});
29

30
test('Ignores _and/_or', () => {
31
	const filter = {
32
		_and: [
33
			{
34
				_or: [
35
					{
36
						author: {
37
							name: {
38
								_eq: 'Directus',
39
							},
40
						},
41
					},
42
					{
43
						status: {
44
							_eq: 'published',
45
						},
46
					},
47
				],
48
			},
49
			{
50
				category: {
51
					_eq: 'recipes',
52
				},
53
			},
54
		],
55
	};
56

57
	const result = calculateFieldDepth(filter);
58

59
	expect(result).toBe(2);
60
});
61

62
test('Skips underscore prefix in tree', () => {
63
	const deep = {
64
		translations: {
65
			_filter: {
66
				language_id: {
67
					code: {
68
						_eq: 'nl-NL',
69
					},
70
				},
71
			},
72
		},
73
	};
74

75
	const result = calculateFieldDepth(deep);
76

77
	expect(result).toBe(3);
78
});
79

80
test('Calculates _sort in deep correctly', () => {
81
	const deep = {
82
		articles: {
83
			_sort: ['sort', 'category.type.sort'],
84
		},
85
	};
86

87
	const result = calculateFieldDepth(deep, ['_sort']);
88

89
	expect(result).toBe(4);
90
});
91

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.