From 24b1c4ba1c580b6ad6cab8c1ca55fcdc6a6afb99 Mon Sep 17 00:00:00 2001 From: "pulkit.jain" Date: Mon, 2 Dec 2024 14:36:34 +0530 Subject: [PATCH] feat: added UT for site --- package.json | 1 + test/commands/lightning/dev/site.test.ts | 63 ++++++++++++++++-------- 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 53285e02..fa07d9e8 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,7 @@ "prepare": "sf-install", "test": "wireit", "test:nuts": "nyc mocha \"**/*.nut.ts\" --slow 4500 --timeout 600000 --parallel", + "test:site": "nyc mocha \"**/site.test.ts\" --slow 4500 --timeout 600000 --parallel", "test:only": "wireit", "unlink-lwr": "yarn unlink @lwrjs/api @lwrjs/app-service @lwrjs/asset-registry @lwrjs/asset-transformer @lwrjs/auth-middleware @lwrjs/base-view-provider @lwrjs/base-view-transformer @lwrjs/client-modules @lwrjs/config @lwrjs/core @lwrjs/dev-proxy-server @lwrjs/diagnostics @lwrjs/esbuild @lwrjs/everywhere @lwrjs/fs-asset-provider @lwrjs/fs-watch @lwrjs/html-view-provider @lwrjs/instrumentation @lwrjs/label-module-provider @lwrjs/lambda @lwrjs/legacy-npm-module-provider @lwrjs/loader @lwrjs/lwc-module-provider @lwrjs/lwc-ssr @lwrjs/markdown-view-provider @lwrjs/module-bundler @lwrjs/module-registry @lwrjs/npm-module-provider @lwrjs/nunjucks-view-provider @lwrjs/o11y @lwrjs/resource-registry @lwrjs/router @lwrjs/security @lwrjs/server @lwrjs/shared-utils @lwrjs/static @lwrjs/tools @lwrjs/types @lwrjs/view-registry lwr", "update-snapshots": "node --loader ts-node/esm --no-warnings=ExperimentalWarning \"./bin/dev.js\" snapshot:generate", diff --git a/test/commands/lightning/dev/site.test.ts b/test/commands/lightning/dev/site.test.ts index 62d6425e..08eb5237 100644 --- a/test/commands/lightning/dev/site.test.ts +++ b/test/commands/lightning/dev/site.test.ts @@ -4,39 +4,62 @@ * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ + +import { strictEqual } from 'node:assert'; import { TestContext } from '@salesforce/core/testSetup'; -// import { expect } from 'chai'; -// import { stubSfCommandUx } from '@salesforce/sf-plugins-core'; -// import LightningDevSite from '../../../../src/commands/lightning/dev/site.js'; +import { expect } from 'chai'; +import { Org } from '@salesforce/core'; +import { LocalDevOptions } from '@lwrjs/api'; +import LightningDevSite from '../../../../src/commands/lightning/dev/site.js'; +import { OrgUtils } from '../../../../src/shared/orgUtils.js'; -// TODO fix me once we have a fully working command describe('lightning dev site', () => { const $$ = new TestContext(); - // let sfCommandStubs: ReturnType; beforeEach(() => { - // sfCommandStubs = stubSfCommandUx($$.SANDBOX); + $$.SANDBOX.stub(OrgUtils, 'isLocalDevEnabled').resolves(true); + $$.SANDBOX.stub(OrgUtils, 'ensureMatchingAPIVersion').returns(); }); afterEach(() => { $$.restore(); }); - it('runs hello', async () => { - // await LightningDevSite.run([]); - // const output = sfCommandStubs.log - // .getCalls() - // .flatMap((c) => c.args) - // .join('\n'); - // expect(output).to.include('hello world'); + it('should have summary, description, and examples defined', () => { + strictEqual(typeof LightningDevSite.summary, 'string', 'Summary should be a string'); + strictEqual(typeof LightningDevSite.description, 'string', 'Description should be a string'); + strictEqual(typeof LightningDevSite.examples, 'object', 'Examples should be an array'); + }); + + it('result should be undefined if local development is not enabled', async () => { + $$.SANDBOX.restore(); + $$.SANDBOX.stub(OrgUtils, 'isLocalDevEnabled').resolves(false); + const result = await LightningDevSite.run(['--name', 'Astro', '--target-org', '00Dxx0000001gEH']); + expect(result).to.be.undefined; }); - it('runs hello world --name Astro', async () => { - // await LightningDevSite.run(['--name', 'Astro']); - // const output = sfCommandStubs.log - // .getCalls() - // .flatMap((c) => c.args) - // .join('\n'); - // expect(output).to.include('hello Astro'); + it('should have valid startupParams', async () => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any + const org = new Org({ id: '00Dxx0000001gEH', connection: {} } as any); + $$.SANDBOX.stub(Org, 'create').returns(Promise.resolve(org)); + + const startupParams: LocalDevOptions = { + sfCLI: true, + authToken: 'test-auth-token', + open: true, + port: 3000, + logLevel: 'error', + mode: 'dev', + siteZip: 'test-site-zip', + siteDir: 'test-site-dir', + }; + + $$.SANDBOX.stub(LightningDevSite, 'run').resolves(Promise.resolve(startupParams)); + process.env.SETUP_ONLY = 'true'; + + const result = await LightningDevSite.run(['--name', 'Astro', '--target-org', '00Dxx0000001gEH']); + delete process.env.SETUP_ONLY; + + expect(result).to.deep.equal(startupParams); }); });