From 58c0f2bcf066bb96f378108df592279677b6b557 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 2 Feb 2024 11:57:16 +0100 Subject: [PATCH] create-app: add tests for fetchYarnLockSeedTask Signed-off-by: Patrik Oldsberg --- packages/create-app/src/lib/tasks.test.ts | 64 ++++++++++++++++++++++- yarn.lock | 1 + 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/packages/create-app/src/lib/tasks.test.ts b/packages/create-app/src/lib/tasks.test.ts index e7c406f51c..f0546cfa5f 100644 --- a/packages/create-app/src/lib/tasks.test.ts +++ b/packages/create-app/src/lib/tasks.test.ts @@ -27,8 +27,14 @@ import { templatingTask, tryInitGitRepository, readGitConfig, + fetchYarnLockSeedTask, } from './tasks'; -import { createMockDirectory } from '@backstage/backend-test-utils'; +import { + createMockDirectory, + setupRequestMockHandlers, +} from '@backstage/backend-test-utils'; +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; jest.spyOn(Task, 'log').mockReturnValue(undefined); jest.spyOn(Task, 'error').mockReturnValue(undefined); @@ -410,4 +416,60 @@ describe('tasks', () => { ); }); }); + + describe('fetchYarnLockSeedTask', () => { + const worker = setupServer(); + setupRequestMockHandlers(worker); + + it('should fetch the yarn.lock seed file', async () => { + worker.use( + rest.get( + 'https://raw.githubusercontent.com/backstage/backstage/master/packages/create-app/seed-yarn.lock', + (_, res, ctx) => + res( + ctx.status(200), + ctx.text(`# the-lockfile-header + +// some comments +// in the file +// that should +// be removed + +// a comment about the entry +"@backstage/cli@1.0.0": + some info +`), + ), + ), + ); + + mockDir.clear(); + + await expect(fetchYarnLockSeedTask(mockDir.path)).resolves.toBe(true); + + expect(mockDir.content({ shouldReadAsText: true })).toEqual({ + 'yarn.lock': `# the-lockfile-header + + +"@backstage/cli@1.0.0": + some info +`, + }); + }); + + it('should fail gracefully', async () => { + worker.use( + rest.get( + 'https://raw.githubusercontent.com/backstage/backstage/master/packages/create-app/seed-yarn.lock', + (_, res, ctx) => res(ctx.status(404)), + ), + ); + + mockDir.clear(); + + await expect(fetchYarnLockSeedTask(mockDir.path)).resolves.toBe(false); + + expect(mockDir.content()).toEqual({}); + }); + }); }); diff --git a/yarn.lock b/yarn.lock index 19e38d0aaf..5e7f2a996d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4010,6 +4010,7 @@ __metadata: fs-extra: 10.1.0 handlebars: ^4.7.3 inquirer: ^8.2.0 + msw: ^1.0.0 nodemon: ^3.0.1 ora: ^5.3.0 recursive-readdir: ^2.2.2