Skip to content

Commit 5ff2728

Browse files
committed
pascal case js/ts enum. add js and dart test cases
1 parent 63d2332 commit 5ff2728

File tree

3 files changed

+52
-12
lines changed

3 files changed

+52
-12
lines changed

packages/appsync-modelgen-plugin/src/__tests__/visitors/appsync-dart-visitor.test.ts

+31-11
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ describe('AppSync Dart Visitor', () => {
276276
`;
277277
const outputModels: string[] = ['Todo', 'Task'];
278278
outputModels.forEach(model => {
279-
const generatedCode = getVisitor({schema, selectedType: model, directives: [...AppSyncDirectives, ...V1Directives, DeprecatedDirective] }).generate();
279+
const generatedCode = getVisitor({ schema, selectedType: model, directives: [...AppSyncDirectives, ...V1Directives, DeprecatedDirective] }).generate();
280280
expect(generatedCode).toMatchSnapshot();
281281
});
282282
});
@@ -330,6 +330,26 @@ describe('AppSync Dart Visitor', () => {
330330
expect(generatedCode).toMatchSnapshot();
331331
});
332332
});
333+
334+
it('should pascal case enum', () => {
335+
const schema = /* GraphQL */ `
336+
enum status {
337+
yes
338+
no
339+
maybe
340+
}`;
341+
342+
const generatedCode = getVisitor({ schema, selectedType: 'status' }).generate();
343+
const statusEnum = generatedCode.split('\n').slice(-5).join('\n')
344+
expect(statusEnum).toMatchInlineSnapshot(`
345+
"enum Status {
346+
yes,
347+
no,
348+
maybe
349+
}"
350+
`);
351+
352+
})
333353
});
334354

335355
describe('Field tests', () => {
@@ -405,7 +425,7 @@ describe('AppSync Dart Visitor', () => {
405425
name: String
406426
}
407427
`;
408-
const visitor = getVisitor({schema, generate: CodeGenGenerateEnum.loader });
428+
const visitor = getVisitor({ schema, generate: CodeGenGenerateEnum.loader });
409429
const generatedCode = visitor.generate();
410430
expect(generatedCode).toMatchSnapshot();
411431
});
@@ -565,7 +585,7 @@ describe('AppSync Dart Visitor', () => {
565585

566586
models.forEach(type => {
567587
it(`should generate correct dart class for ${!type ? 'ModelProvider' : type} with nullsafety`, () => {
568-
const generatedCode = getVisitor({schema, selectedType: type, generate: !type ? CodeGenGenerateEnum.loader : CodeGenGenerateEnum.code }).generate();
588+
const generatedCode = getVisitor({ schema, selectedType: type, generate: !type ? CodeGenGenerateEnum.loader : CodeGenGenerateEnum.code }).generate();
569589

570590
expect(generatedCode).toMatchSnapshot();
571591
})
@@ -594,7 +614,7 @@ describe('AppSync Dart Visitor', () => {
594614
name: String
595615
}
596616
`;
597-
const visitor = getVisitor({ schema, isTimestampFieldsAdded: true });
617+
const visitor = getVisitor({ schema, isTimestampFieldsAdded: true });
598618

599619

600620
const generatedCode = visitor.generate();
@@ -871,7 +891,7 @@ describe('AppSync Dart Visitor', () => {
871891
content: String
872892
related: [SqlRelated!] @hasMany(references: ["primaryId"])
873893
}
874-
894+
875895
type SqlRelated @refersTo(name: "sql_related") @model {
876896
id: Int! @primaryKey
877897
content: String
@@ -899,7 +919,7 @@ describe('AppSync Dart Visitor', () => {
899919
content: String
900920
related: SqlRelated @hasOne(references: ["primaryId"])
901921
}
902-
922+
903923
type SqlRelated @refersTo(name: "sql_related") @model {
904924
id: Int! @primaryKey
905925
content: String
@@ -927,13 +947,13 @@ describe('AppSync Dart Visitor', () => {
927947
relatedMany: [RelatedMany] @hasMany(references: ["primaryId"])
928948
relatedOne: RelatedOne @hasOne(references: ["primaryId"])
929949
}
930-
950+
931951
type RelatedMany @model {
932952
id: ID! @primaryKey
933953
primaryId: ID!
934954
primary: Primary @belongsTo(references: ["primaryId"])
935955
}
936-
956+
937957
type RelatedOne @model {
938958
id: ID! @primaryKey
939959
primaryId: ID!
@@ -959,7 +979,7 @@ describe('AppSync Dart Visitor', () => {
959979
bar1: Bar @hasOne(references: ["bar1Id"])
960980
bar2: Bar @hasOne(references: ["bar2Id"])
961981
}
962-
982+
963983
type Bar @model {
964984
id: ID!
965985
bar1Id: ID
@@ -990,7 +1010,7 @@ describe('AppSync Dart Visitor', () => {
9901010
content: String
9911011
related: [Related!] @hasMany(references: ["primaryTenantId", "primaryInstanceId", "primaryRecordId"])
9921012
}
993-
1013+
9941014
type Related @model {
9951015
content: String
9961016
primaryTenantId: ID!
@@ -1021,7 +1041,7 @@ describe('AppSync Dart Visitor', () => {
10211041
content: String
10221042
related: Related @hasOne(references: ["primaryTenantId", "primaryInstanceId", "primaryRecordId"])
10231043
}
1024-
1044+
10251045
type Related @model {
10261046
content: String
10271047
primaryTenantId: ID!

packages/appsync-modelgen-plugin/src/__tests__/visitors/appsync-javascript-visitor.test.ts

+19
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,25 @@ describe('Javascript visitor', () => {
8787
`);
8888
});
8989

90+
it('should pascal case enum', () => {
91+
const schema = /* GraphQL */ `
92+
enum status {
93+
pending
94+
done
95+
}`;
96+
97+
const visitor = getVisitor(schema)
98+
const enumObj = (visitor as any).enumMap['status'];
99+
const statusEnum = (visitor as any).generateEnumObject(enumObj, true);
100+
validateTs(statusEnum);
101+
expect(statusEnum).toMatchInlineSnapshot(`
102+
"export const Status = {
103+
\\"PENDING\\": \\"pending\\",
104+
\\"DONE\\": \\"done\\"
105+
};"
106+
`);
107+
});
108+
90109
it('should generate import statements', () => {
91110
const imports = (visitor as any).generateImportsJavaScriptImplementation();
92111
validateTs(imports);

packages/appsync-modelgen-plugin/src/visitors/appsync-javascript-visitor.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { DEFAULT_SCALARS, NormalizedScalarsMap } from '@graphql-codegen/visitor-
22
import { GraphQLSchema } from 'graphql';
33
import { AppSyncModelTypeScriptVisitor } from './appsync-typescript-visitor';
44
import { CodeGenEnum, CodeGenModel, ParsedAppSyncModelConfig, RawAppSyncModelConfig } from './appsync-visitor';
5+
import { pascalCase } from 'change-case';
56

67
export interface RawAppSyncModelJavaScriptConfig extends RawAppSyncModelConfig {
78
/**
@@ -112,7 +113,7 @@ export class AppSyncModelJavascriptVisitor<
112113
* @param exportEnum: boolean export the enum object
113114
*/
114115
protected generateEnumObject(enumObj: CodeGenEnum, exportEnum: boolean = false): string {
115-
const enumName = this.getEnumName(enumObj);
116+
const enumName = pascalCase(this.getEnumName(enumObj));
116117
const header = [exportEnum ? 'export' : null, 'const', enumName].filter(h => h).join(' ');
117118

118119
return `${header} = ${JSON.stringify(enumObj.values, null, 2)};`;

0 commit comments

Comments
 (0)