This package has been deprecated

Author message:

🚚 @vangware/test is now @lou.codes/test

@vangware/test
TypeScript icon, indicating that this package has built-in type declarations

11.0.2Β β€’Β PublicΒ β€’Β Published

Coverage License NPM Version Open Issues Size

βœ… Equality test with enforced readability, based on the concept of RITEway and inspired by uvu.

Usage

πŸ“¦ Node

Install @vangware/tests as a dev dependency:

pnpm add -D @vangware/test
# or
npm install -D @vangware/test
# or
yarn add --dev @vangware/test

Add a test script to package.json:

{
	"scripts": {
		"test": "test"
	}
}
Add TypeScript support

To support TypeScript, install tsx as a dev dependency:

pnpm add -D tsx
# or
npm install -D tsx
# or
yarn add --dev tsx

And update package.json:

{
	"scripts": {
		"test": "NODE_OPTIONS='--import tsx' test"
	}
}
Add coverage

To add coverage, install c8 as a dev dependency:

pnpm add -D c8
# or
npm install -D c8
# or
yarn add --dev c8

And update package.json:

{
	"scripts": {
		"test": "c8 test"
	}
}

If you added TypeScript support, then update package.json like this instead:

And update package.json:

{
	"scripts": {
		"test": "NODE_OPTIONS='--import tsx' c8 test"
	}
}

Run tests:

pnpm test
# or
npm test
# or
yarn test

πŸ¦• Deno

Import @vangware/test using the npm: prefix, and use it directly:

import { test } from "npm:@vangware/test";
import { add } from "../src/add.js";

test({
	given: "a 1 and a 2",
	must: "return 3",
	received: () => add(2)(1),
	wanted: () => 3,
}).then(console.log);

🌎 Browser

Import @vangware/test using esm.sh, and use it directly:

<script type="module">
	import { test } from "https://esm.sh/@vangware/test";
	import { add } from "../src/add.js";

	test({
		given: "a 1 and a 2",
		must: "return 3",
		received: () => add(2)(1),
		wanted: () => 3,
	}).then(console.log);
</script>

Writing tests

TypeScript

import type { Tests } from "@vangware/test";
import { add } from "../src/add.js";

export default [
	{
		given: "a 1 and a 2",
		must: "return 3",
		received: () => add(2)(1),
		wanted: () => 3,
	},
	{
		given: "a 1 and a -2",
		must: "return -1",
		received: () => add(-2)(1),
		wanted: () => -1,
	},
] satisfies Tests<number>;

JavaScript

import { add } from "../src/add.js";

/** @satisfies {import("@vangware/test").Tests<number>} */
export default [
	{
		given: "a 1 and a 2",
		must: "return 3",
		received: () => add(2)(1),
		wanted: () => 3,
	},
	{
		given: "a 1 and a -2",
		must: "return -1",
		received: () => add(-2)(1),
		wanted: () => -1,
	},
];

Other alternatives

Instead of exporting an Array of Test as default, the export can also be a single Test:

import type { Test } from "@vangware/test";
import { add } from "../src/add.js";

export default {
	given: "a 1 and a 2",
	must: "return 3",
	received: () => add(2)(1),
	wanted: () => 3,
} satisfies Test<number>;

Or multiple exports with different tests:

import type { Test } from "@vangware/test";
import { add } from "../src/add.js";

export const test1: Test<number> = {
	given: "a 1 and a 2",
	must: "return 3",
	received: () => add(2)(1),
	wanted: () => 3,
};

export const test2: Test<number> = {
	given: "a 1 and a -2",
	must: "return -1",
	received: () => add(-2)(1),
	wanted: () => -1,
};

It can also be used directly without the test bin by importing the different utils directly (like with the Deno and Browser examples above):

import { test } from "@vangware/test";
import { customFormatter } from "./customFormatter.js";

test({
	given: "a 1 and a 2",
	must: "return 3",
	received: () => add(2)(1),
	wanted: () => 3,
}).then(customFormatter);

Default output

@vangware/tests provides a default output for the tests. It looks like this:

[TEST] ./tests/example.test.ts
[FAIL] Given a 1 and a 2, must return 3, but...
	β”” it has the wrong value. Wanted 3 but received 4.

And if the wanted/received type is more complex, like an object, then the output goes into details about the error:

[TEST] ./tests/example.test.ts
[FAIL] Given an object, must add a single property, but...
	β”œ foo.bar has the wrong value. Wanted 1 but received 2.
	β”œ foo.baz.1 is missing.
	β”” bar was set with the value "bar".

But developers can choose to run test directly and use their own formatter, as it was pointed out in the previous section.

Package Sidebar

Install

npm i @vangware/test

Weekly Downloads

22

Version

11.0.2

License

MIT

Unpacked Size

40.9 kB

Total Files

55

Last publish

Collaborators

  • loucyx