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';
16
import { FilesService, ItemsService } from './index.js';
18
describe('Integration Tests', () => {
19
let db: MockedFunction<Knex>;
23
db = vi.mocked(knex.default({ client: MockClient }));
24
tracker = createTracker(db);
32
describe('Services / Files', () => {
33
describe('createOne', () => {
34
let service: FilesService;
35
let superCreateOne: MockInstance;
38
service = new FilesService({
40
schema: { collections: {}, relations: [] },
43
superCreateOne = vi.spyOn(ItemsService.prototype, 'createOne').mockReturnValue(Promise.resolve(1));
46
it('throws InvalidPayloadError when "type" is not provided', async () => {
48
await service.createOne({
51
filename_download: 'test_file',
54
expect(err).toBeInstanceOf(InvalidPayloadError);
55
expect(err.message).toBe('Invalid payload. "type" is required.');
58
expect(superCreateOne).not.toHaveBeenCalled();
61
it('creates a file entry when "type" is provided', async () => {
62
await service.createOne({
65
filename_download: 'test_file',
66
type: 'application/octet-stream',
69
expect(superCreateOne).toHaveBeenCalled();