mirror of
https://github.com/directus/directus.git
synced 2026-02-07 09:24:56 -05:00
* Change license to BSL1.1 * Mark major version * Fix formatting * Remove duplicate heading * Update formatting * Copy paste error * Update license * Update license * Format covenants * Update readme.md * Update licenses for packages * Update readme.md * Update contributors.yml OG... but to be clear, rijkvanzanten is the one who really built all of this ❤️ * Tweak license in openapi * Update packages/specs/src/openapi.yaml * Add MIT license headers * Use v10 in examples * Update additional examples * Update generate-extensions-entrypoint.test.ts * Update tests to use latest v9 and v10 versions * use lowercase for naming consistency * change casing for api license * Update migrations doc * Update dictionary * Consistent ordering of license field in app/package.json * Use major version in specs again (but as string) So it's valid for all v10 versions * Consolidate readme's --------- Co-authored-by: Ben Haynes <ben@directus.io> Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch> Co-authored-by: ian <licitdev@gmail.com> Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
122 lines
4.4 KiB
TypeScript
122 lines
4.4 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import type { Extension } from '@directus/types';
|
|
import { generateExtensionsEntrypoint } from './generate-extensions-entrypoint.js';
|
|
|
|
describe('generateExtensionsEntrypoint', () => {
|
|
it('returns an empty extension entrypoint if there is no App, Hybrid or Bundle extension', () => {
|
|
const mockExtensions: Extension[] = [
|
|
{
|
|
path: './extensions/bundle',
|
|
name: 'mock-bundle0-extension',
|
|
version: '1.0.0',
|
|
type: 'bundle',
|
|
entrypoint: { app: 'app.js', api: 'api.js' },
|
|
entries: [],
|
|
host: '^10.0.0',
|
|
local: false,
|
|
},
|
|
];
|
|
|
|
expect(generateExtensionsEntrypoint(mockExtensions)).toBe(
|
|
`export const interfaces = [];export const displays = [];export const layouts = [];export const modules = [];export const panels = [];export const operations = [];`
|
|
);
|
|
});
|
|
|
|
it('returns an extension entrypoint exporting a single App extension', () => {
|
|
const mockExtensions: Extension[] = [
|
|
{ path: './extensions/panel', name: 'mock-panel-extension', type: 'panel', entrypoint: 'index.js', local: true },
|
|
];
|
|
|
|
expect(generateExtensionsEntrypoint(mockExtensions)).toBe(
|
|
`import panel0 from './extensions/panel/index.js';export const interfaces = [];export const displays = [];export const layouts = [];export const modules = [];export const panels = [panel0];export const operations = [];`
|
|
);
|
|
});
|
|
|
|
it('returns an extension entrypoint exporting a single Hybrid extension', () => {
|
|
const mockExtensions: Extension[] = [
|
|
{
|
|
path: './extensions/operation',
|
|
name: 'mock-operation-extension',
|
|
type: 'operation',
|
|
entrypoint: { app: 'app.js', api: 'api.js' },
|
|
local: true,
|
|
},
|
|
];
|
|
|
|
expect(generateExtensionsEntrypoint(mockExtensions)).toBe(
|
|
`import operation0 from './extensions/operation/app.js';export const interfaces = [];export const displays = [];export const layouts = [];export const modules = [];export const panels = [];export const operations = [operation0];`
|
|
);
|
|
});
|
|
|
|
it('returns an extension entrypoint exporting from a single Bundle extension', () => {
|
|
const mockExtensions: Extension[] = [
|
|
{
|
|
path: './extensions/bundle',
|
|
name: 'mock-bundle-extension',
|
|
version: '1.0.0',
|
|
type: 'bundle',
|
|
entrypoint: { app: 'app.js', api: 'api.js' },
|
|
entries: [
|
|
{ type: 'interface', name: 'mock-bundle-interface' },
|
|
{ type: 'operation', name: 'mock-bundle-operation' },
|
|
{ type: 'hook', name: 'mock-bundle-hook' },
|
|
],
|
|
host: '^10.0.0',
|
|
local: false,
|
|
},
|
|
];
|
|
|
|
expect(generateExtensionsEntrypoint(mockExtensions)).toBe(
|
|
`import {interfaces as interfaceBundle0,operations as operationBundle0} from './extensions/bundle/app.js';export const interfaces = [...interfaceBundle0];export const displays = [];export const layouts = [];export const modules = [];export const panels = [];export const operations = [...operationBundle0];`
|
|
);
|
|
});
|
|
|
|
it('returns an extension entrypoint exporting multiple extensions', () => {
|
|
const mockExtensions: Extension[] = [
|
|
{
|
|
path: './extensions/display',
|
|
name: 'mock-display-extension',
|
|
type: 'display',
|
|
entrypoint: 'index.js',
|
|
local: true,
|
|
},
|
|
{
|
|
path: './extensions/operation',
|
|
name: 'mock-operation-extension',
|
|
type: 'operation',
|
|
entrypoint: { app: 'app.js', api: 'api.js' },
|
|
local: true,
|
|
},
|
|
{
|
|
path: './extensions/bundle',
|
|
name: 'mock-bundle0-extension',
|
|
version: '1.0.0',
|
|
type: 'bundle',
|
|
entrypoint: { app: 'app.js', api: 'api.js' },
|
|
entries: [
|
|
{ type: 'layout', name: 'mock-bundle-layout' },
|
|
{ type: 'operation', name: 'mock-bundle-operation' },
|
|
{ type: 'hook', name: 'mock-bundle-hook' },
|
|
],
|
|
host: '^10.0.0',
|
|
local: false,
|
|
},
|
|
{
|
|
path: './extensions/bundle-no-app',
|
|
name: 'mock-bundle-no-app-extension',
|
|
version: '1.0.0',
|
|
type: 'bundle',
|
|
entrypoint: { app: 'app.js', api: 'api.js' },
|
|
entries: [{ type: 'endpoint', name: 'mock-bundle-no-app-endpoint' }],
|
|
host: '^10.0.0',
|
|
local: false,
|
|
},
|
|
];
|
|
|
|
expect(generateExtensionsEntrypoint(mockExtensions)).toBe(
|
|
`import display0 from './extensions/display/index.js';import operation0 from './extensions/operation/app.js';import {layouts as layoutBundle0,operations as operationBundle0} from './extensions/bundle/app.js';export const interfaces = [];export const displays = [display0];export const layouts = [...layoutBundle0];export const modules = [];export const panels = [];export const operations = [operation0,...operationBundle0];`
|
|
);
|
|
});
|
|
});
|