Neatly Prepared Mustache

    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

    Keywords

    none

    Install

    npm i purify-asserts

    DownloadsWeekly Downloads

    1

    Version

    0.3.2

    License

    MIT

    Unpacked Size

    8.84 kB

    Total Files

    17

    Last publish

    Collaborators

    • nikoheikkila