[typescript-fetch] remove namespaces in enums (#2123)

* fix #1947, namespaces on typescript fetch

* fix #1947, namespaces on typescript fetch

* reversed change in AbstractTypeScriptClientCodegen specialized TypeScriptFetchClientCodegen.postProcessModels

* removed enums in ts-fetch tests
This commit is contained in:
Willians Cassiano
2019-03-07 04:00:38 -04:00
committed by William Cheng
parent 49ef024cf6
commit 8a0248eee0
11 changed files with 119 additions and 134 deletions

View File

@@ -25,6 +25,7 @@ import org.openapitools.codegen.utils.ModelUtils;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.TreeSet;
import java.util.Date;
import java.util.List;
import java.util.Locale;
@@ -141,6 +142,34 @@ public class TypeScriptFetchClientCodegen extends AbstractTypeScriptClientCodege
addImport(codegenModel, codegenModel.additionalPropertiesType);
}
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
// process enum in models
List<Object> models = (List<Object>) postProcessModelsEnum(objs).get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
cm.imports = new TreeSet(cm.imports);
// name enum with model name, e.g. StatusEnum => Pet.StatusEnum
for (CodegenProperty var : cm.vars) {
if (Boolean.TRUE.equals(var.isEnum)) {
// behaviour for enum names is specific for Typescript Fetch, not using namespaces
var.datatypeWithEnum = var.datatypeWithEnum.replace(var.enumName, cm.classname + var.enumName);
}
}
if (cm.parent != null) {
for (CodegenProperty var : cm.allVars) {
if (Boolean.TRUE.equals(var.isEnum)) {
var.datatypeWithEnum = var.datatypeWithEnum
.replace(var.enumName, cm.classname + var.enumName);
}
}
}
}
return objs;
}
@Override
public Map<String, Object> postProcessAllModels(Map<String, Object> objs) {
Map<String, Object> result = super.postProcessAllModels(objs);

View File

@@ -88,26 +88,22 @@ export function {{classname}}ToJSON(value?: {{classname}}): any {
return value;
{{/hasVars}}
}
{{#hasEnums}}
/**
* @export
* @namespace {{classname}}
*/
export namespace {{classname}} {
{{#hasEnums}}
{{#vars}}
{{#isEnum}}
/**
* @export
* @enum {string}
*/
export enum {{enumName}} {
{{#allowableValues}}
{{#enumVars}}
{{{name}}} = {{{value}}}{{^-last}},{{/-last}}
{{/enumVars}}
{{/allowableValues}}
}
{{/isEnum}}
{{#isEnum}}
/**
* @export
* @enum {string}
*/
export enum {{classname}}{{enumName}} {
{{#allowableValues}}
{{#enumVars}}
{{{name}}} = {{{value}}}{{^-last}},{{/-last}}
{{/enumVars}}
{{/allowableValues}}
}
{{/isEnum}}
{{/vars}}
}{{/hasEnums}}
{{/hasEnums}}

View File

@@ -47,7 +47,7 @@ export interface Order {
* @type {string}
* @memberof Order
*/
status?: Order.StatusEnum;
status?: OrderStatusEnum;
/**
*
* @type {boolean}
@@ -82,18 +82,13 @@ export function OrderToJSON(value?: Order): any {
}
/**
* @export
* @namespace Order
*/
export namespace Order {
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
Placed = 'placed',
Approved = 'approved',
Delivered = 'delivered'
}
* @export
* @enum {string}
*/
export enum OrderStatusEnum {
Placed = 'placed',
Approved = 'approved',
Delivered = 'delivered'
}

View File

@@ -62,7 +62,7 @@ export interface Pet {
* @type {string}
* @memberof Pet
*/
status?: Pet.StatusEnum;
status?: PetStatusEnum;
}
export function PetFromJSON(json: any): Pet {
@@ -91,18 +91,13 @@ export function PetToJSON(value?: Pet): any {
}
/**
* @export
* @namespace Pet
*/
export namespace Pet {
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}
* @export
* @enum {string}
*/
export enum PetStatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}

View File

@@ -47,7 +47,7 @@ export interface Order {
* @type {string}
* @memberof Order
*/
status?: Order.StatusEnum;
status?: OrderStatusEnum;
/**
*
* @type {boolean}
@@ -82,18 +82,13 @@ export function OrderToJSON(value?: Order): any {
}
/**
* @export
* @namespace Order
*/
export namespace Order {
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
Placed = 'placed',
Approved = 'approved',
Delivered = 'delivered'
}
* @export
* @enum {string}
*/
export enum OrderStatusEnum {
Placed = 'placed',
Approved = 'approved',
Delivered = 'delivered'
}

View File

@@ -62,7 +62,7 @@ export interface Pet {
* @type {string}
* @memberof Pet
*/
status?: Pet.StatusEnum;
status?: PetStatusEnum;
}
export function PetFromJSON(json: any): Pet {
@@ -91,18 +91,13 @@ export function PetToJSON(value?: Pet): any {
}
/**
* @export
* @namespace Pet
*/
export namespace Pet {
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}
* @export
* @enum {string}
*/
export enum PetStatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}

View File

@@ -47,7 +47,7 @@ export interface Order {
* @type {string}
* @memberof Order
*/
status?: Order.StatusEnum;
status?: OrderStatusEnum;
/**
*
* @type {boolean}
@@ -82,18 +82,13 @@ export function OrderToJSON(value?: Order): any {
}
/**
* @export
* @namespace Order
*/
export namespace Order {
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
Placed = 'placed',
Approved = 'approved',
Delivered = 'delivered'
}
* @export
* @enum {string}
*/
export enum OrderStatusEnum {
Placed = 'placed',
Approved = 'approved',
Delivered = 'delivered'
}

View File

@@ -62,7 +62,7 @@ export interface Pet {
* @type {string}
* @memberof Pet
*/
status?: Pet.StatusEnum;
status?: PetStatusEnum;
}
export function PetFromJSON(json: any): Pet {
@@ -91,18 +91,13 @@ export function PetToJSON(value?: Pet): any {
}
/**
* @export
* @namespace Pet
*/
export namespace Pet {
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}
* @export
* @enum {string}
*/
export enum PetStatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}

View File

@@ -47,7 +47,7 @@ export interface Order {
* @type {string}
* @memberof Order
*/
status?: Order.StatusEnum;
status?: OrderStatusEnum;
/**
*
* @type {boolean}
@@ -82,18 +82,13 @@ export function OrderToJSON(value?: Order): any {
}
/**
* @export
* @namespace Order
*/
export namespace Order {
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
Placed = 'placed',
Approved = 'approved',
Delivered = 'delivered'
}
* @export
* @enum {string}
*/
export enum OrderStatusEnum {
Placed = 'placed',
Approved = 'approved',
Delivered = 'delivered'
}

View File

@@ -62,7 +62,7 @@ export interface Pet {
* @type {string}
* @memberof Pet
*/
status?: Pet.StatusEnum;
status?: PetStatusEnum;
}
export function PetFromJSON(json: any): Pet {
@@ -91,18 +91,13 @@ export function PetToJSON(value?: Pet): any {
}
/**
* @export
* @namespace Pet
*/
export namespace Pet {
/**
* @export
* @enum {string}
*/
export enum StatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}
* @export
* @enum {string}
*/
export enum PetStatusEnum {
Available = 'available',
Pending = 'pending',
Sold = 'sold'
}

View File

@@ -1,5 +1,5 @@
import { expect } from 'chai';
import { PetApi, Pet, Category } from '@swagger/typescript-fetch-petstore';
import { PetApi, Pet, PetStatusEnum, Category } from '@swagger/typescript-fetch-petstore';
import { config } from '../configuration';
describe('PetApi', () => {
@@ -67,7 +67,7 @@ function createTestFixture(ts = Date.now()) {
'name': `pet${ts}`,
'category': category,
'photoUrls': ['http://foo.bar.com/1', 'http://foo.bar.com/2'],
'status': Pet.StatusEnum.Available,
'status': PetStatusEnum.Available,
'tags': []
};