From 365a8dfca21413cac4a622ddfb1ea058ffacd438 Mon Sep 17 00:00:00 2001 From: Jacob Wallraff Date: Fri, 16 Dec 2022 11:34:06 -0800 Subject: [PATCH] Add expression completion tests --- .../src/complete.expressions.test.ts | 63 +++++++++++++++++-- package-lock.json | 12 ++-- 2 files changed, 64 insertions(+), 11 deletions(-) diff --git a/actions-languageservice/src/complete.expressions.test.ts b/actions-languageservice/src/complete.expressions.test.ts index 55f2d60..d98c187 100644 --- a/actions-languageservice/src/complete.expressions.test.ts +++ b/actions-languageservice/src/complete.expressions.test.ts @@ -684,20 +684,73 @@ jobs: runs-on: ubuntu-latest container: image: node:14.16 + services: + nginx: + image: node:14.16 steps: - run: echo \${{ job.| }} `; const result = await complete(...getPositionFromCursor(input), undefined, contextProviderConfig); - expect(result.map(x => x.label)).toContain("container"); - expect(result.map(x => x.label)).toContain("services"); - expect(result.map(x => x.label)).toContain("status"); + expect(result.map(x => x.label)).toEqual(["container", "services", "status"]); }); - it("job context is suggested within a job", async () => { + it("container context is suggested within a job container", async () => { + const input = ` +on: push + +jobs: + test: + runs-on: ubuntu-latest + container: + image: node:14.16 + steps: + - run: echo \${{ job.container.| }} +`; + + const result = await complete(...getPositionFromCursor(input), undefined, contextProviderConfig); + expect(result.map(x => x.label)).toEqual(["id", "network"]); }); - it("job context is suggested within a job", async () => { + it("services are suggested within a job services list", async () => { + const input = ` +on: push + +jobs: + test: + runs-on: ubuntu-latest + services: + nginx: + image: node:14.16 + redis: + image: redis + steps: + - run: echo \${{ job.services.| }} +`; + + const result = await complete(...getPositionFromCursor(input), undefined, contextProviderConfig); + expect(result.map(x => x.label)).toEqual(["nginx", "redis"]); + }); + + it("services context is suggested within a job service", async () => { + const input = ` +on: push + +jobs: + test: + runs-on: ubuntu-latest + services: + nginx: + image: node:14.16 + ports: + - 80:8080 + - 90 + steps: + - run: echo \${{ job.services.nginx.| }} +`; + + const result = await complete(...getPositionFromCursor(input), undefined, contextProviderConfig); + expect(result.map(x => x.label)).toEqual(["id", "network", "ports"]); }); }); diff --git a/package-lock.json b/package-lock.json index fd48861..2fcc155 100644 --- a/package-lock.json +++ b/package-lock.json @@ -701,9 +701,9 @@ "link": true }, "node_modules/@github/actions-workflow-parser": { - "version": "0.0.35", - "resolved": "https://npm.pkg.github.com/download/@github/actions-workflow-parser/0.0.35/0e88d541486f7c8772c5640fc13fac630cfaeaa8", - "integrity": "sha512-OuNEuqUH4AOfWd2xb8VRl7KwJrtiZu1ic0b27lmadwvK8qgRhPHxvS+QICEc+JtFbbVWpAA2ymh8I1U35639mA==", + "version": "0.0.36", + "resolved": "https://npm.pkg.github.com/download/@github/actions-workflow-parser/0.0.36/f27b908936efa949a105d7192dd3787a15094d71", + "integrity": "sha512-ATResf0PCT/bftJgs2ROAo0gDMIKQ1X0HcB4GejuYTcyHxWfvC44EqvFZmMpurV4Camht20bqK3LSY4NoJ0aVQ==", "license": "MIT", "dependencies": { "@github/actions-expressions": "*", @@ -13539,9 +13539,9 @@ } }, "@github/actions-workflow-parser": { - "version": "0.0.35", - "resolved": "https://npm.pkg.github.com/download/@github/actions-workflow-parser/0.0.35/0e88d541486f7c8772c5640fc13fac630cfaeaa8", - "integrity": "sha512-OuNEuqUH4AOfWd2xb8VRl7KwJrtiZu1ic0b27lmadwvK8qgRhPHxvS+QICEc+JtFbbVWpAA2ymh8I1U35639mA==", + "version": "0.0.36", + "resolved": "https://npm.pkg.github.com/download/@github/actions-workflow-parser/0.0.36/f27b908936efa949a105d7192dd3787a15094d71", + "integrity": "sha512-ATResf0PCT/bftJgs2ROAo0gDMIKQ1X0HcB4GejuYTcyHxWfvC44EqvFZmMpurV4Camht20bqK3LSY4NoJ0aVQ==", "requires": { "@github/actions-expressions": "*", "yaml": "^2.0.0-8"