directus

Форк
0
/
files.test.ts 
73 строки · 1.7 Кб
1
import { InvalidPayloadError } from '@directus/errors';
2
import type { Knex } from 'knex';
3
import knex from 'knex';
4
import { createTracker, MockClient, Tracker } from 'knex-mock-client';
5
import {
6
	afterEach,
7
	beforeAll,
8
	beforeEach,
9
	describe,
10
	expect,
11
	it,
12
	vi,
13
	type MockedFunction,
14
	type MockInstance,
15
} from 'vitest';
16
import { FilesService, ItemsService } from './index.js';
17

18
describe('Integration Tests', () => {
19
	let db: MockedFunction<Knex>;
20
	let tracker: Tracker;
21

22
	beforeAll(() => {
23
		db = vi.mocked(knex.default({ client: MockClient }));
24
		tracker = createTracker(db);
25
	});
26

27
	afterEach(() => {
28
		tracker.reset();
29
		vi.clearAllMocks();
30
	});
31

32
	describe('Services / Files', () => {
33
		describe('createOne', () => {
34
			let service: FilesService;
35
			let superCreateOne: MockInstance;
36

37
			beforeEach(() => {
38
				service = new FilesService({
39
					knex: db,
40
					schema: { collections: {}, relations: [] },
41
				});
42

43
				superCreateOne = vi.spyOn(ItemsService.prototype, 'createOne').mockReturnValue(Promise.resolve(1));
44
			});
45

46
			it('throws InvalidPayloadError when "type" is not provided', async () => {
47
				try {
48
					await service.createOne({
49
						title: 'Test File',
50
						storage: 'local',
51
						filename_download: 'test_file',
52
					});
53
				} catch (err: any) {
54
					expect(err).toBeInstanceOf(InvalidPayloadError);
55
					expect(err.message).toBe('Invalid payload. "type" is required.');
56
				}
57

58
				expect(superCreateOne).not.toHaveBeenCalled();
59
			});
60

61
			it('creates a file entry when "type" is provided', async () => {
62
				await service.createOne({
63
					title: 'Test File',
64
					storage: 'local',
65
					filename_download: 'test_file',
66
					type: 'application/octet-stream',
67
				});
68

69
				expect(superCreateOne).toHaveBeenCalled();
70
			});
71
		});
72
	});
73
});
74

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

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

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

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