mirror of
https://github.com/ferdikoomen/openapi-typescript-codegen.git
synced 2025-12-08 20:16:21 +00:00
- Working on e2e tests for angular
This commit is contained in:
parent
1d8dc54d94
commit
09e6c5f4cc
@ -15,21 +15,23 @@ const config: Config.InitialOptions = {
|
||||
displayName: 'E2E',
|
||||
testEnvironment: 'node',
|
||||
testMatch: [
|
||||
'<rootDir>/test/e2e/v2.fetch.spec.ts',
|
||||
'<rootDir>/test/e2e/v2.xhr.spec.ts',
|
||||
'<rootDir>/test/e2e/v2.node.spec.ts',
|
||||
'<rootDir>/test/e2e/v2.axios.spec.ts',
|
||||
'<rootDir>/test/e2e/v2.babel.spec.ts',
|
||||
'<rootDir>/test/e2e/v3.fetch.spec.ts',
|
||||
'<rootDir>/test/e2e/v3.xhr.spec.ts',
|
||||
'<rootDir>/test/e2e/v3.node.spec.ts',
|
||||
'<rootDir>/test/e2e/v3.axios.spec.ts',
|
||||
'<rootDir>/test/e2e/v3.babel.spec.ts',
|
||||
'<rootDir>/test/e2e/client.fetch.spec.ts',
|
||||
'<rootDir>/test/e2e/client.xhr.spec.ts',
|
||||
'<rootDir>/test/e2e/client.node.spec.ts',
|
||||
'<rootDir>/test/e2e/client.axios.spec.ts',
|
||||
'<rootDir>/test/e2e/client.babel.spec.ts',
|
||||
// '<rootDir>/test/e2e/v2.fetch.spec.ts',
|
||||
// '<rootDir>/test/e2e/v2.xhr.spec.ts',
|
||||
// '<rootDir>/test/e2e/v2.node.spec.ts',
|
||||
// '<rootDir>/test/e2e/v2.axios.spec.ts',
|
||||
// '<rootDir>/test/e2e/v2.babel.spec.ts',
|
||||
'<rootDir>/test/e2e/v2.angular.spec.ts',
|
||||
// '<rootDir>/test/e2e/v3.fetch.spec.ts',
|
||||
// '<rootDir>/test/e2e/v3.xhr.spec.ts',
|
||||
// '<rootDir>/test/e2e/v3.node.spec.ts',
|
||||
// '<rootDir>/test/e2e/v3.axios.spec.ts',
|
||||
// '<rootDir>/test/e2e/v3.babel.spec.ts',
|
||||
'<rootDir>/test/e2e/v3.angular.spec.ts',
|
||||
// '<rootDir>/test/e2e/client.fetch.spec.ts',
|
||||
// '<rootDir>/test/e2e/client.xhr.spec.ts',
|
||||
// '<rootDir>/test/e2e/client.node.spec.ts',
|
||||
// '<rootDir>/test/e2e/client.axios.spec.ts',
|
||||
// '<rootDir>/test/e2e/client.babel.spec.ts',
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
@ -65,8 +65,10 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/common": "13.1.3",
|
||||
"@angular/compiler": "13.1.3",
|
||||
"@angular/core": "13.1.3",
|
||||
"@angular/platform-browser": "13.1.3",
|
||||
"@angular/platform-browser-dynamic": "13.1.3",
|
||||
"@babel/cli": "7.16.8",
|
||||
"@babel/core": "7.16.12",
|
||||
"@babel/preset-env": "7.16.11",
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
{{>header}}
|
||||
|
||||
import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';
|
||||
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
||||
import type { HttpResponse } from '@angular/common/http';
|
||||
import { Observable } from 'rxjs';
|
||||
|
||||
import { ApiError } from './ApiError';
|
||||
|
||||
52
test/e2e/assets/angular-openapi-v2.ts
Normal file
52
test/e2e/assets/angular-openapi-v2.ts
Normal file
@ -0,0 +1,52 @@
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||
|
||||
import { CollectionFormatService } from './services/CollectionFormatService';
|
||||
import { ComplexService } from './services/ComplexService';
|
||||
import { DefaultService } from './services/DefaultService';
|
||||
import { DefaultsService } from './services/DefaultsService';
|
||||
import { DuplicateService } from './services/DuplicateService';
|
||||
import { ErrorService } from './services/ErrorService';
|
||||
import { HeaderService } from './services/HeaderService';
|
||||
import { MultipleTags1Service } from './services/MultipleTags1Service';
|
||||
import { MultipleTags2Service } from './services/MultipleTags2Service';
|
||||
import { MultipleTags3Service } from './services/MultipleTags3Service';
|
||||
import { NoContentService } from './services/NoContentService';
|
||||
import { ParametersService } from './services/ParametersService';
|
||||
import { ResponseService } from './services/ResponseService';
|
||||
import { SimpleService } from './services/SimpleService';
|
||||
import { TypesService } from './services/TypesService';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
templateUrl: `<div>Angular</div>`,
|
||||
})
|
||||
export class AppComponent {}
|
||||
|
||||
@NgModule({
|
||||
imports: [BrowserModule, HttpClientModule],
|
||||
providers: [
|
||||
CollectionFormatService,
|
||||
ComplexService,
|
||||
DefaultService,
|
||||
DefaultsService,
|
||||
DuplicateService,
|
||||
ErrorService,
|
||||
HeaderService,
|
||||
MultipleTags1Service,
|
||||
MultipleTags2Service,
|
||||
MultipleTags3Service,
|
||||
NoContentService,
|
||||
ParametersService,
|
||||
ResponseService,
|
||||
SimpleService,
|
||||
TypesService,
|
||||
],
|
||||
declarations: [AppComponent],
|
||||
bootstrap: [AppComponent],
|
||||
})
|
||||
export class AppModule {}
|
||||
|
||||
platformBrowserDynamic().bootstrapModule(AppModule);
|
||||
58
test/e2e/assets/angular-openapi-v3.ts
Normal file
58
test/e2e/assets/angular-openapi-v3.ts
Normal file
@ -0,0 +1,58 @@
|
||||
import { HttpClientModule } from '@angular/common/http';
|
||||
import { Component, NgModule } from '@angular/core';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||
|
||||
import { CollectionFormatService } from './services/CollectionFormatService';
|
||||
import { ComplexService } from './services/ComplexService';
|
||||
import { DefaultService } from './services/DefaultService';
|
||||
import { DefaultsService } from './services/DefaultsService';
|
||||
import { DuplicateService } from './services/DuplicateService';
|
||||
import { ErrorService } from './services/ErrorService';
|
||||
import { FormDataService } from './services/FormDataService';
|
||||
import { HeaderService } from './services/HeaderService';
|
||||
import { MultipartService } from './services/MultipartService';
|
||||
import { MultipleTags1Service } from './services/MultipleTags1Service';
|
||||
import { MultipleTags2Service } from './services/MultipleTags2Service';
|
||||
import { MultipleTags3Service } from './services/MultipleTags3Service';
|
||||
import { NoContentService } from './services/NoContentService';
|
||||
import { ParametersService } from './services/ParametersService';
|
||||
import { RequestBodyService } from './services/RequestBodyService';
|
||||
import { ResponseService } from './services/ResponseService';
|
||||
import { SimpleService } from './services/SimpleService';
|
||||
import { TypesService } from './services/TypesService';
|
||||
import { UploadService } from './services/UploadService';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
templateUrl: `<div>Angular</div>`,
|
||||
})
|
||||
export class AppComponent {}
|
||||
|
||||
@NgModule({
|
||||
imports: [BrowserModule, HttpClientModule],
|
||||
providers: [
|
||||
CollectionFormatService,
|
||||
ComplexService,
|
||||
DefaultService,
|
||||
DefaultsService,
|
||||
DuplicateService,
|
||||
ErrorService,
|
||||
FormDataService,
|
||||
HeaderService,
|
||||
MultipartService,
|
||||
MultipleTags1Service,
|
||||
MultipleTags2Service,
|
||||
MultipleTags3Service,
|
||||
NoContentService,
|
||||
ParametersService,
|
||||
RequestBodyService,
|
||||
ResponseService,
|
||||
SimpleService,
|
||||
TypesService,
|
||||
UploadService,
|
||||
],
|
||||
})
|
||||
export class AppModule {}
|
||||
|
||||
platformBrowserDynamic().bootstrapModule(AppModule);
|
||||
@ -7,7 +7,7 @@ import server from './scripts/server';
|
||||
describe('v3.babel', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('client/babel', 'v3', 'fetch', true, true, 'AppClient');
|
||||
await copy('client/babel');
|
||||
await copy('script.js', 'client/babel/script.js');
|
||||
compileWithBabel('client/babel');
|
||||
await server.start('client/babel');
|
||||
await browser.start();
|
||||
|
||||
@ -7,7 +7,7 @@ import server from './scripts/server';
|
||||
describe('v3.fetch', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('client/fetch', 'v3', 'fetch', false, false, 'AppClient');
|
||||
await copy('client/fetch');
|
||||
await copy('script.js', 'client/fetch/script.js');
|
||||
compileWithTypescript('client/fetch');
|
||||
await server.start('client/fetch');
|
||||
await browser.start();
|
||||
|
||||
@ -7,7 +7,7 @@ import server from './scripts/server';
|
||||
describe('v3.xhr', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('client/xhr', 'v3', 'xhr', false, false, 'AppClient');
|
||||
await copy('client/xhr');
|
||||
await copy('script.js', 'client/xhr/script.js');
|
||||
compileWithTypescript('client/xhr');
|
||||
await server.start('client/xhr');
|
||||
await browser.start();
|
||||
|
||||
@ -27,8 +27,9 @@ export const compileWithTypescript = (dir: string) => {
|
||||
strict: true,
|
||||
skipLibCheck: true,
|
||||
allowSyntheticDefaultImports: true,
|
||||
experimentalDecorators: true,
|
||||
},
|
||||
include: ['./index.ts'],
|
||||
include: ['./index.ts', './main.ts'],
|
||||
};
|
||||
|
||||
// Compile files to JavaScript (ES6 modules)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { copyFileSync } from 'fs';
|
||||
|
||||
export const copy = (dir: string) => {
|
||||
copyFileSync('./test/e2e/assets/script.js', `./test/e2e/generated/${dir}/script.js`);
|
||||
export const copy = (fileNameIn: string, fileNameOut: string) => {
|
||||
copyFileSync(`./test/e2e/assets/${fileNameIn}`, `./test/e2e/generated/${fileNameOut}`);
|
||||
};
|
||||
|
||||
@ -3,7 +3,7 @@ import { generate as __generate } from '../../../';
|
||||
export const generate = async (
|
||||
dir: string,
|
||||
version: string,
|
||||
client: 'fetch' | 'xhr' | 'node' | 'axios',
|
||||
client: 'fetch' | 'xhr' | 'node' | 'axios' | 'angular',
|
||||
useOptions: boolean = false,
|
||||
useUnionTypes: boolean = false,
|
||||
clientName?: string
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import express, { Express } from 'express';
|
||||
import { Server } from 'http';
|
||||
import { EOL } from 'os';
|
||||
|
||||
let _app: Express;
|
||||
let _server: Server;
|
||||
@ -23,7 +24,22 @@ const start = async (dir: string) => {
|
||||
// This file is copied from test/e2e/assets/script.js to the output directory
|
||||
// of the specific version and client.
|
||||
_app.get('/', (req, res) => {
|
||||
res.send('<script src="js/script.js"></script>');
|
||||
res.send(
|
||||
[
|
||||
'<!DOCTYPE html>',
|
||||
'<html>',
|
||||
'<head>',
|
||||
'<meta charset="utf-8">',
|
||||
'<title>Test</title>',
|
||||
'</head>',
|
||||
'<body>',
|
||||
'<app-root></app-root>',
|
||||
'<script src="js/main.js"></script>',
|
||||
'<script src="js/script.js"></script>',
|
||||
'</body>',
|
||||
'</html>',
|
||||
].join(EOL)
|
||||
);
|
||||
});
|
||||
|
||||
// Register an 'echo' server for testing error codes. This will just grab the
|
||||
|
||||
25
test/e2e/v2.angular.spec.ts
Normal file
25
test/e2e/v2.angular.spec.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import browser from './scripts/browser';
|
||||
import { compileWithTypescript } from './scripts/compileWithTypescript';
|
||||
import { copy } from './scripts/copy';
|
||||
import { generate } from './scripts/generate';
|
||||
import server from './scripts/server';
|
||||
|
||||
describe('v2.angular', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('v2/angular', 'v2', 'angular');
|
||||
await copy('script.js', 'v2/angular/script.js');
|
||||
await copy('angular-openapi-v2.ts', 'v2/angular/main.ts');
|
||||
compileWithTypescript('v2/angular');
|
||||
await server.start('v2/angular');
|
||||
await browser.start();
|
||||
}, 30000);
|
||||
|
||||
afterAll(async () => {
|
||||
await browser.stop();
|
||||
await server.stop();
|
||||
});
|
||||
|
||||
it('requests token', async () => {
|
||||
expect(true).toBe(true);
|
||||
});
|
||||
});
|
||||
@ -7,7 +7,7 @@ import server from './scripts/server';
|
||||
describe('v2.babel', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('v2/babel', 'v2', 'fetch', true, true);
|
||||
await copy('v2/babel');
|
||||
await copy('script.js', 'v2/babel/script.js');
|
||||
compileWithBabel('v2/babel');
|
||||
await server.start('v2/babel');
|
||||
await browser.start();
|
||||
|
||||
@ -7,7 +7,7 @@ import server from './scripts/server';
|
||||
describe('v2.fetch', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('v2/fetch', 'v2', 'fetch');
|
||||
await copy('v2/fetch');
|
||||
await copy('script.js', 'v2/fetch/script.js');
|
||||
compileWithTypescript('v2/fetch');
|
||||
await server.start('v2/fetch');
|
||||
await browser.start();
|
||||
|
||||
@ -7,7 +7,7 @@ import server from './scripts/server';
|
||||
describe('v2.xhr', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('v2/xhr', 'v2', 'xhr');
|
||||
await copy('v2/xhr');
|
||||
await copy('script.js', 'v2/xhr/script.js');
|
||||
compileWithTypescript('v2/xhr');
|
||||
await server.start('v2/xhr');
|
||||
await browser.start();
|
||||
|
||||
25
test/e2e/v3.angular.spec.ts
Normal file
25
test/e2e/v3.angular.spec.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import browser from './scripts/browser';
|
||||
import { compileWithTypescript } from './scripts/compileWithTypescript';
|
||||
import { copy } from './scripts/copy';
|
||||
import { generate } from './scripts/generate';
|
||||
import server from './scripts/server';
|
||||
|
||||
describe('v3.angular', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('v3/angular', 'v3', 'angular');
|
||||
await copy('script.js', 'v3/angular/script.js');
|
||||
await copy('angular-openapi-v3.ts', 'v3/angular/main.ts');
|
||||
compileWithTypescript('v3/angular');
|
||||
await server.start('v3/angular');
|
||||
await browser.start();
|
||||
}, 30000);
|
||||
|
||||
afterAll(async () => {
|
||||
await browser.stop();
|
||||
await server.stop();
|
||||
});
|
||||
|
||||
it('requests token', async () => {
|
||||
expect(true).toBe(true);
|
||||
});
|
||||
});
|
||||
@ -7,7 +7,7 @@ import server from './scripts/server';
|
||||
describe('v3.babel', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('v3/babel', 'v3', 'fetch', true, true);
|
||||
await copy('v3/babel');
|
||||
await copy('script.js', 'v3/babel/script.js');
|
||||
compileWithBabel('v3/babel');
|
||||
await server.start('v3/babel');
|
||||
await browser.start();
|
||||
|
||||
@ -7,7 +7,7 @@ import server from './scripts/server';
|
||||
describe('v3.fetch', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('v3/fetch', 'v3', 'fetch');
|
||||
await copy('v3/fetch');
|
||||
await copy('script.js', 'v3/fetch/script.js');
|
||||
compileWithTypescript('v3/fetch');
|
||||
await server.start('v3/fetch');
|
||||
await browser.start();
|
||||
|
||||
@ -7,7 +7,7 @@ import server from './scripts/server';
|
||||
describe('v3.xhr', () => {
|
||||
beforeAll(async () => {
|
||||
await generate('v3/xhr', 'v3', 'xhr');
|
||||
await copy('v3/xhr');
|
||||
await copy('script.js', 'v3/xhr/script.js');
|
||||
compileWithTypescript('v3/xhr');
|
||||
await server.start('v3/xhr');
|
||||
await browser.start();
|
||||
|
||||
14
yarn.lock
14
yarn.lock
@ -9,6 +9,13 @@
|
||||
dependencies:
|
||||
tslib "^2.3.0"
|
||||
|
||||
"@angular/compiler@13.1.3":
|
||||
version "13.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-13.1.3.tgz#fc33b06046599ecc943f55049e0a121d5ab46d4f"
|
||||
integrity sha512-dbHs/Oa+Dn+7i0jKtlVDE0lD0DaUC+lVzAcTK/zS37LrckrTMn1CA+z9bZ4gpHig9RU0wgV3YORxv0wokyiB8A==
|
||||
dependencies:
|
||||
tslib "^2.3.0"
|
||||
|
||||
"@angular/core@13.1.3":
|
||||
version "13.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@angular/core/-/core-13.1.3.tgz#4afd71f674f9ead1aada81315f84846cdba10fa4"
|
||||
@ -16,6 +23,13 @@
|
||||
dependencies:
|
||||
tslib "^2.3.0"
|
||||
|
||||
"@angular/platform-browser-dynamic@13.1.3":
|
||||
version "13.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.1.3.tgz#08cbe321e5f39636a08eb77606ff496df478a21e"
|
||||
integrity sha512-vEWyJ+2gkwh2N6KOJfxUNSdSO51ROlzCqqzCfHrPYQrlOFUfKsYKA1uoiB5UGfFEU0HBtIRWn6xoUy3wzVOZbw==
|
||||
dependencies:
|
||||
tslib "^2.3.0"
|
||||
|
||||
"@angular/platform-browser@13.1.3":
|
||||
version "13.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-13.1.3.tgz#69d90b10e89e11f14f5798d1b6fd788255a6114e"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user