purify-asserts
TypeScript icon, indicating that this package has built-in type declarations

0.3.2 • Public • Published

Purify-TS Asserts

Version Downloads License GitHub issues GitHub Repo stars

Jest expectations for the purify-ts library

Motivation

Purify is an excellent library for functional TypeScript applications, but its algebraic data types are not so obvious to test. Specifically, the following convention examples are not easy to remember in the scope of unit tests.

expect(maybe.isJust()).toBe(true);
expect(maybe.isNothing()).toBe(true);
expect(maybe.extract()).toEqual("value");

expect(either.isLeft()).toBe(false);
expect(either.isRight()).toBe(true);
expect(either.extract()).toEqual("is this success or error?");

Wouldn't it be more satisfying to assert expectations with the same domain language Purify speaks of? I think so.

expect(possiblyNullableMaybe).toBeJust();
expect(justOrNothing).toBeNothing();
expect(justOrNothing).toHaveJustValue(1);

Install

npm install --save-dev purify-asserts
yarn add --dev purify-asserts

Usage

Using matchers requires to use the expect.extend() method of Jest. These should be imported and used at the beginning of your test suite above the first describe() block.

Import all of the matchers:

import * as matchers from "purify-asserts";

expect.extend(matchers);

Import only selected matchers:

import { toBeJust, toBeNothing } from "purify-asserts";

expect.extend({ toBeJust, toBeNothing });

Examples

  • Examples for using Maybe<T> matchers
  • Examples for using Either<L, R> matchers (work in progress)
  • Examples for using MaybeAsync<T> matchers (work in progress)
  • Examples for using EitherAsync<L, R> matchers (work in progress)
  • Examples for using Tuple<F, S> matchers (work in progress)
  • Examples for using NonEmptyList<T> matchers (work in progress)
  • Examples for using Codec<T> matchers (work in progress)

Author

👤 Niko Heikkilä yo@nikoheikkila.fi

🤝 Contributing

Contributions, issues and feature requests are welcome!

Feel free to check issues page.

Show your support

Give a ⭐️ if this project helped you!


This README was generated with ❤️ by readme-md-generator

Dependencies (1)

Dev Dependencies (6)

Package Sidebar

Install

npm i purify-asserts

Weekly Downloads

3

Version

0.3.2

License

MIT

Unpacked Size

8.84 kB

Total Files

17

Last publish

Collaborators

  • nikoheikkila