From bc12e4b941827a4eab0e4e5db1e015b4ae4a7d8e Mon Sep 17 00:00:00 2001 From: Alex Lohr Date: Sun, 6 Nov 2022 21:25:08 +0100 Subject: [PATCH] bind queries to container, testing type fixes --- package.json | 4 +++- src/__tests__/basic.tsx | 8 ++++++++ src/__tests__/events.tsx | 3 ++- src/__tests__/stopwatch.tsx | 2 +- src/__tests__/tsconfig.json | 7 +++++++ src/index.ts | 2 +- tsconfig.json | 2 +- 7 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 src/__tests__/tsconfig.json diff --git a/package.json b/package.json index 33a3b89..8fe974b 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ }, "license": "MIT", "author": "Ryan Carniato", + "maintainers": ["Alex Lohr"], "homepage": "https://github.com/solidjs/solid-testing-library#readme", "repository": { "type": "git", @@ -43,11 +44,12 @@ "scripts": { "prepublishOnly": "npm run build", "build": "tsup src/index.ts --format esm,cjs --dts --clean", + "typecheck": "tsc --noEmit; tsc --noEmit --project src/__tests__/tsconfig.json", "test": "vitest", "test:watch": "npm test --watch", "test:coverage": "npm test -- --coverage", "setup": "npm install && npm run validate", - "validate": "npm run test:coverage && npm run build", + "validate": "npm run typecheck && npm run test:coverage && npm run build", "report:coverage": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage" }, "dependencies": { diff --git a/src/__tests__/basic.tsx b/src/__tests__/basic.tsx index df0bbaa..f2afb4c 100644 --- a/src/__tests__/basic.tsx +++ b/src/__tests__/basic.tsx @@ -63,3 +63,11 @@ test("calls to hydrate will run createEffects", () => { expect(cb).toHaveBeenCalledTimes(1); }); + +test("queries should not return elements outside of the container", () => { + const { container, getAllByText } = render(() =>
Some text...
); + const falseContainer = document.createElement("p"); + falseContainer.textContent = "Some text..."; + container.parentNode!.insertBefore(falseContainer, getAllByText("Some text...")[0].parentNode); + expect(getAllByText("Some text...")[0] === container.childNodes[0]).toBe(true); +}); diff --git a/src/__tests__/events.tsx b/src/__tests__/events.tsx index f74f951..d19d5ab 100644 --- a/src/__tests__/events.tsx +++ b/src/__tests__/events.tsx @@ -1,6 +1,7 @@ import { Dynamic } from "solid-js/web"; import { render, fireEvent } from ".."; import userEvent from "@testing-library/user-event"; +import type { Mock } from "vitest"; const eventTypes = [ { @@ -129,7 +130,7 @@ const eventTypes = [ } ]; -function event(el: HTMLElement, name: string, spy: vi.Mock) { +function event(el: HTMLElement, name: string, spy: Mock) { el.addEventListener(name, spy); } diff --git a/src/__tests__/stopwatch.tsx b/src/__tests__/stopwatch.tsx index f553ce6..46e19eb 100644 --- a/src/__tests__/stopwatch.tsx +++ b/src/__tests__/stopwatch.tsx @@ -5,7 +5,7 @@ import { screen, render } from ".."; function StopWatch() { const [lapse, setLapse] = createSignal(0); const [running, setRunning] = createSignal(false); - let timer: number; + let timer: ReturnType; const handleRunClick = () => { if (running()) { diff --git a/src/__tests__/tsconfig.json b/src/__tests__/tsconfig.json new file mode 100644 index 0000000..2f56144 --- /dev/null +++ b/src/__tests__/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "types": ["vitest/globals", "@testing-library/jest-dom"] + }, + "include": ["./*.tsx"] +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 55b3284..90f902a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -45,7 +45,7 @@ function render(ui: Ui, options: Options = {}): Result { // they're passing us a custom container or not. mountedContainers.add({ container, dispose }); - const queryHelpers = getQueriesForElement(baseElement, queries) + const queryHelpers = getQueriesForElement(container, queries) return { container, diff --git a/tsconfig.json b/tsconfig.json index 3f1bc51..ccd75c7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,5 +13,5 @@ "outDir": "./dist", "module": "commonjs" }, - "include": ["src"], + "include": ["src/index.ts", "src/types.ts"], }