feat: добавить split-режим генерации REST-клиента
- добавлен режим генерации single, split и both - добавлены отдельные operation-файлы и createApiClient - удалена генерация SWR-хуков и зависимости React/SWR - обновлены CLI, шаблоны, примеры, документация и тесты - версия пакета повышена до 3.0.0
This commit is contained in:
@@ -47,7 +47,7 @@ describe('CLI', () => {
|
||||
expect(exists).toBe(true);
|
||||
}, 30000);
|
||||
|
||||
test('должен генерировать с кастомным именем файла', async () => {
|
||||
test('должен генерировать монолит с кастомным именем файла', async () => {
|
||||
const outputPath = join(tempDir, 'output');
|
||||
const customName = 'CustomApi';
|
||||
|
||||
@@ -69,6 +69,48 @@ describe('CLI', () => {
|
||||
expect(exists).toBe(true);
|
||||
}, 30000);
|
||||
|
||||
test('должен генерировать split режим', async () => {
|
||||
const outputPath = join(tempDir, 'output');
|
||||
|
||||
const { exitCode } = await execa('bun', [
|
||||
'run',
|
||||
CLI_PATH,
|
||||
'--input',
|
||||
FIXTURES.MINIMAL,
|
||||
'--output',
|
||||
outputPath,
|
||||
'--mode',
|
||||
'split',
|
||||
]);
|
||||
|
||||
expect(exitCode).toBe(0);
|
||||
expect(await fileExists(join(outputPath, 'index.ts'))).toBe(true);
|
||||
expect(await fileExists(join(outputPath, 'http-client.ts'))).toBe(true);
|
||||
expect(await fileExists(join(outputPath, 'operations', 'index.ts'))).toBe(true);
|
||||
}, 30000);
|
||||
|
||||
test('должен генерировать both режим', async () => {
|
||||
const outputPath = join(tempDir, 'output');
|
||||
|
||||
const { exitCode } = await execa('bun', [
|
||||
'run',
|
||||
CLI_PATH,
|
||||
'--input',
|
||||
FIXTURES.MINIMAL,
|
||||
'--output',
|
||||
outputPath,
|
||||
'--name',
|
||||
'CustomApi',
|
||||
'--mode',
|
||||
'both',
|
||||
]);
|
||||
|
||||
expect(exitCode).toBe(0);
|
||||
expect(await fileExists(join(outputPath, 'CustomApi.ts'))).toBe(true);
|
||||
expect(await fileExists(join(outputPath, 'index.ts'))).toBe(true);
|
||||
expect(await fileExists(join(outputPath, 'operations', 'index.ts'))).toBe(true);
|
||||
}, 30000);
|
||||
|
||||
test('должен отображать версию с --version', async () => {
|
||||
const { stdout } = await execa('bun', ['run', CLI_PATH, '--version']);
|
||||
|
||||
@@ -78,7 +120,7 @@ describe('CLI', () => {
|
||||
test('должен отображать help с --help', async () => {
|
||||
const { stdout } = await execa('bun', ['run', CLI_PATH, '--help']);
|
||||
|
||||
expect(stdout).toContain('Generate TypeScript API client');
|
||||
expect(stdout).toContain('Генерация TypeScript API клиента');
|
||||
expect(stdout).toContain('--input');
|
||||
expect(stdout).toContain('--output');
|
||||
});
|
||||
@@ -141,5 +183,26 @@ describe('CLI', () => {
|
||||
expect(error.exitCode).not.toBe(0);
|
||||
}
|
||||
}, 30000);
|
||||
|
||||
test('должен показывать русскую ошибку для недоступного URL', async () => {
|
||||
const outputPath = join(tempDir, 'output');
|
||||
|
||||
try {
|
||||
await execa('bun', [
|
||||
'run',
|
||||
CLI_PATH,
|
||||
'--input',
|
||||
'https://127.0.0.1:1/swagger.json',
|
||||
'--output',
|
||||
outputPath,
|
||||
]);
|
||||
throw new Error('Should have thrown');
|
||||
} catch (error: any) {
|
||||
expect(error.exitCode).not.toBe(0);
|
||||
expect(error.stderr).toContain('Не удалось подключиться к OpenAPI спецификации');
|
||||
expect(error.stderr).toContain('Проверьте доступность URL и сетевое подключение');
|
||||
expect(error.stderr).not.toContain('Unable to connect');
|
||||
}
|
||||
}, 30000);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user