From e728026d7dfd75adf3175720f2ad7d8b227468b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20J=2E=20Over=C3=A5?= Date: Fri, 1 Nov 2024 15:58:44 +0100 Subject: [PATCH] chore: add CLI tests --- .github/workflows/deploy.yml | 1 + bun.lockb | Bin 223321 -> 223723 bytes package.json | 2 ++ tests/tsmx.test.ts | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 tests/tsmx.test.ts diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2ce9baa..6ee4f77 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,6 +25,7 @@ jobs: - run: bun run tsc - run: bun run lint - run: bun run build-cli + - run: bun test - run: bun run copy-html - run: bun run sanity-check - uses: actions/setup-node@v4 diff --git a/bun.lockb b/bun.lockb index 247baa2e63808d4d4751d859fd8b419f952f20bc..5f658e103df1dfe5cb59461be1a9a28c8fb80d2b 100755 GIT binary patch delta 42317 zcmeIbcYIY<_WynFg{!#;0!j;^_ZE;6k`R)BbfxzW0Rjmmlq8hUlF(5>;UF7Snpi+Z z)KMvlis+1Gu#O|BSVl)h#5Q9AMSt(lIr~813(kCh&-1)q&mW#wR@Pphz4qQ~uf29T z=bq#qeXY!iH_P18yz#8Rt?d}PckQ}afuygm`e6H}pI_*gGZeD>Xl z%n|`zwbl%&Iign8kSln)5HTn_mqcv<*xnpT(kz}5N>aN*O&=S`cE znHOjeSRZ*6Cb(A7U$qtwR~K#rzY^Yx%u4WAk;Okirl|9FuzW#7bk*j|D5^|lE0=`J zwrVKWf?ui)zs~3;eLKqgztc>^PB0B3@C!Df=qZ7 z_y;IyXxbyIQ_mx-;{M1Q&ocZ{$C@ImV@1?Qp9+0LPLf|fkQ69b_*>wre@AOC{HCYn zWyDS?NY8I<3uI?b&77W=n`muyHwQ zYy1a71 zQyo2ZZ-mnGAF=XIxU}zptNOKYnL8Z62tP^VnJvnUkhY%OOUqB1ZxP0)^5_%gPO$T{EoW z#LTG^VrNbd^zP*q>}2`$*sN*enV|5@Y&Nh?y}kV3x_CYPoAXgr<${%cJSlVP#H`Fo z8F>ql)%=w7{8{qD^1hzTl9HE~J|XZ8rPb~9+?jcqSd*SRV`h3zeqe7u&;0aUA{Vod zp{J#^Rex_B(#B8Akz-#6ms^GnaPd�VhAwupoP&7k&faEVhOBpr-v{JzOjL#I)SJ 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 Qv!O}X?oNml+B59`12=Ah>Hq)$ diff --git a/package.json b/package.json index 4377298..4d83820 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "type": "module", "scripts": { "tsc": "bun x tsc", + "test": "bun run build-cli && bun test", "lint": "bun x eslint src/**/*.ts", "lint-staged": "lint-staged", "build": "bun x rimraf tsm-cli/bin/tsm && bun run build-cli && bun run copy-html && bun run sanity-check", @@ -34,6 +35,7 @@ "@typescript-eslint/eslint-plugin": "^8.12.2", "eslint": "^8.54.0", "husky": "^9.1.6", + "interactive-cli-tester": "^0.3.0", "lint-staged": "^15.2.10", "prettier": "^3.3.3", "rimraf": "^6.0.1", diff --git a/tests/tsmx.test.ts b/tests/tsmx.test.ts new file mode 100644 index 0000000..12f3ec0 --- /dev/null +++ b/tests/tsmx.test.ts @@ -0,0 +1,33 @@ +import { test, expect } from 'bun:test' +import { CLITest, ANSI } from 'interactive-cli-tester' + +test('tsmx should provide team and cluster options and set accordingly', async () => { + const cli = new CLITest('./tsm-cli/bin/tsmx') + + await cli.run() + + await cli.waitForOutput('Change team context to') + expect(cli.getOutput()).toInclude('❯ teamsykmelding') + expect(cli.getOutput()).toInclude('tsm') + + await cli.write(ANSI.CURSOR_DOWN + ANSI.CR) + await cli.getNextOutput() + expect(cli.getOutput()).toInclude('teamsykmelding') + expect(cli.getOutput()).toInclude('❯ tsm') + + await cli.waitForOutput('Which cluster?') + expect(cli.getOutput()).toInclude('❯ dev-gcp') + expect(cli.getOutput()).toInclude('prod-gcp') + + await cli.write(ANSI.CURSOR_DOWN + ANSI.CR) + await cli.getNextOutput() + expect(cli.getOutput()).toInclude('dev-gcp') + expect(cli.getOutput()).toInclude('❯ prod-gcp') + + expect(await cli.waitForExit()).toBe(0) + + const output = cli.getOutput() + expect(output).toInclude('→ Cluster set to prod-gcp') + expect(output).toInclude('→ Namespace set to tsm') + expect(output).toInclude('→ tsm team switched to tsm') +})