From 2ececf9b5b567f8069f3ed6fc91ad2a9a769cdc0 Mon Sep 17 00:00:00 2001 From: Sam Bulatov Date: Fri, 30 Apr 2021 16:14:23 +0300 Subject: [PATCH] fix(@schematics/angular): add "type" option in enum schematic closes: #20667 --- ...plate => __name@dasherize____type__.ts.template} | 0 packages/schematics/angular/enum/index.ts | 2 ++ packages/schematics/angular/enum/index_spec.ts | 13 ++++++++++--- packages/schematics/angular/enum/schema.json | 4 ++++ 4 files changed, 16 insertions(+), 3 deletions(-) rename packages/schematics/angular/enum/files/{__name@dasherize__.enum.ts.template => __name@dasherize____type__.ts.template} (100%) diff --git a/packages/schematics/angular/enum/files/__name@dasherize__.enum.ts.template b/packages/schematics/angular/enum/files/__name@dasherize____type__.ts.template similarity index 100% rename from packages/schematics/angular/enum/files/__name@dasherize__.enum.ts.template rename to packages/schematics/angular/enum/files/__name@dasherize____type__.ts.template diff --git a/packages/schematics/angular/enum/index.ts b/packages/schematics/angular/enum/index.ts index 31de947e36d6..b079b0ad93aa 100644 --- a/packages/schematics/angular/enum/index.ts +++ b/packages/schematics/angular/enum/index.ts @@ -33,6 +33,8 @@ export default function (options: EnumOptions): Rule { options.name = parsedPath.name; options.path = parsedPath.path; + options.type = options.type ? `.${options.type}` : ''; + const templateSource = apply(url('./files'), [ applyTemplates({ ...strings, diff --git a/packages/schematics/angular/enum/index_spec.ts b/packages/schematics/angular/enum/index_spec.ts index 871fe2d8ba6a..4279bf53a7fe 100644 --- a/packages/schematics/angular/enum/index_spec.ts +++ b/packages/schematics/angular/enum/index_spec.ts @@ -48,14 +48,14 @@ describe('Enum Schematic', () => { .runSchematicAsync('enum', defaultOptions, appTree) .toPromise(); const files = tree.files; - expect(files).toContain('/projects/bar/src/app/foo.enum.ts'); + expect(files).toContain('/projects/bar/src/app/foo.ts'); }); it('should create an enumeration', async () => { const tree = await schematicRunner .runSchematicAsync('enum', defaultOptions, appTree) .toPromise(); - const content = tree.readContent('/projects/bar/src/app/foo.enum.ts'); + const content = tree.readContent('/projects/bar/src/app/foo.ts'); expect(content).toMatch('export enum Foo {'); }); @@ -64,6 +64,13 @@ describe('Enum Schematic', () => { config.projects.bar.sourceRoot = 'projects/bar/custom'; appTree.overwrite('/angular.json', JSON.stringify(config, null, 2)); appTree = await schematicRunner.runSchematicAsync('enum', defaultOptions, appTree).toPromise(); - expect(appTree.files).toContain('/projects/bar/custom/app/foo.enum.ts'); + expect(appTree.files).toContain('/projects/bar/custom/app/foo.ts'); + }); + + it('should put type in the file name', async () => { + const options = { ...defaultOptions, type: 'enum' }; + + const tree = await schematicRunner.runSchematicAsync('enum', options, appTree).toPromise(); + expect(tree.files).toContain('/projects/bar/src/app/foo.enum.ts'); }); }); diff --git a/packages/schematics/angular/enum/schema.json b/packages/schematics/angular/enum/schema.json index 400b71ca984a..bb575da10562 100644 --- a/packages/schematics/angular/enum/schema.json +++ b/packages/schematics/angular/enum/schema.json @@ -28,6 +28,10 @@ "$source": "projectName" } }, + "type": { + "type": "string", + "description": "Adds a developer-defined type to the filename, in the format \"name.type.ts\"." + }, "lintFix": { "type": "boolean", "description": "Apply lint fixes after generating the enum.",