From 7a2dd9a37ac614da927a03f6d18de0b8441e7d66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Ca=C3=B1ete?= Date: Tue, 5 Jul 2022 12:30:52 +0200 Subject: [PATCH] add tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Manuel CaƱete --- .../actions/builtin/fetch/template.test.ts | 88 +++++++++++++++---- 1 file changed, 71 insertions(+), 17 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts index 06def076ea..f52cca504b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts @@ -156,6 +156,77 @@ describe('fetch:template', () => { ); }); + describe('with optional directories / files', () => { + let context: ActionContext; + + beforeEach(async () => { + context = mockContext({ + values: { + showDummyFile: false, + skipRootDirectory: true, + skipSubdirectory: true, + skipMultiplesDirectories: true + }, + }); + + mockFetchContents.mockImplementation(({ outputPath }) => { + mockFs({ + ...realFiles, + [outputPath]: { + '{% if values.showDummyFile %}dummy-file.txt{% else %}{% endif %}': + 'dummy file', + '${{ "dummy-file2.txt" if values.showDummyFile else "" }}': + 'some dummy file', + '${{ "dummy-dir" if not values.skipRootDirectory else "" }}': { + 'file.txt': + 'file inside optional directory', + subdir: { + '${{ "dummy-subdir" if not values.skipSubdirectory else "" }}': + 'file inside optional subdirectory' + } + }, + subdir2: { + '${{ "dummy-subdir" if not values.skipMultiplesDirectories else "" }}': { + '${{ "dummy-subdir" if not values.skipMultiplesDirectories else "" }}': { + 'multipleDirectorySkippedFile.txt': + 'file inside multiple optional subdirectories' + } + } + } + }, + }); + + return Promise.resolve(); + }); + + await action.handler(context); + }); + + it('skips empty filename', async () => { + await expect( + fs.pathExists(`${workspacePath}/target/dummy-file.txt`), + ).resolves.toEqual(false); + }); + + it('skips empty filename syntax #2', async () => { + await expect( + fs.pathExists(`${workspacePath}/target/dummy-file2.txt`), + ).resolves.toEqual(false); + }); + + it('skips empty directory', async () => { + await expect( + fs.pathExists(`${workspacePath}/target/dummy-dir/dummy-file3.txt`), + ).resolves.toEqual(false); + }); + + it('skips content of empty directory', async () => { + await expect( + fs.pathExists(`${workspacePath}/target/subdir2/multipleDirectorySkippedFile.txt`), + ).resolves.toEqual(false); + }); + }); + describe('with valid input', () => { let context: ActionContext; @@ -189,11 +260,6 @@ describe('fetch:template', () => { symlink: mockFs.symlink({ path: 'a-binary-file.png', }), - - '{% if values.showDummyFile %}dummy-file.txt{% else %}{% endif %}': - 'dummy file', - '${{ "dummy-file2.txt" if values.showDummyFile else "" }}': - 'some dummy file', }, }); @@ -212,18 +278,6 @@ describe('fetch:template', () => { ); }); - it('skips empty filename', async () => { - await expect( - fs.pathExists(`${workspacePath}/target/dummy-file.txt`), - ).resolves.toEqual(false); - }); - - it('skips empty filename syntax #2', async () => { - await expect( - fs.pathExists(`${workspacePath}/target/dummy-file2.txt`), - ).resolves.toEqual(false); - }); - it('copies files with no templating in names or content successfully', async () => { await expect( fs.readFile(`${workspacePath}/target/static.txt`, 'utf-8'),