injest

0.1.4 • Public • Published

Injest Build Status

Makes your Jest tests more digestible.

Installation

npm i jest injest --save-dev

Usage

Injest provides various helpers to write smaller and quickers tests for your application. Helpers come in two flavors: snapshots and tests.

Assertions

Assertions helps you test things against something within your tests, by default a Jest snapshot but you can usually provide an explicit result to test against as last argument:

import { assert, component, reducer, saga } from "injest/assertions";
 
test("my test", () => {
    // Testing something against a snapshot
    assert(someFunction(argument));
 
    // Testing something against a result
    assert(someFunction(argument), "foobar");
 
    // Testing a component against a snapshot
    component(<Icon />);
 
    // Testing a component more in depth
    const { tree, actual } = assert(<Icon />); // Assert initial output
    tree.props.onClick();
    assert(actual); // Trigger a prop and re-assert the output
 
    // Testing a reducer against a snapshot
    reducer(someReducer, stateBefore, { type: "SOME_ACTION" });
 
    // Testing a reducer against a result
    reducer(someReducer, stateBefore, { type: "SOME_ACTION" }, stateAfter);
 
    // Testing a saga against a snapshot
    saga(onLoggedIn({ id: 1 }));
 
    // Testing a saga against a result
    saga(onLoggedIn({ id: 1 }), [
        {
            action: call(::UserManager.login, 1),
            response: { ...dummyUser },
        },
        {
            action: put(isLoggedIn()),
        },
    ]);
});

Tests

Tests are the same functions but wrapped in a way that let your write tests in a smaller and cleaner manner. Underneath they call test with the provided description and then call the function above with the rest of the arguments.

import { assert, component, reducer, saga } from "injest/tests";
 
assert("can select something", getUser(state));
component("can be rendered", <Icon />);
reducer("can process some action", someReducer, stateBefore, {
    type: "SOME_ACTION",
});
saga("can log user in", onLoggedIn());

As reducers usually have a lot of tests and repeatedly passing the reducer could be cumbersome, a reducer test factory is provided:

import { reducerTestFactory } from "injest/tests";
 
const reducer = reducerTestFactory(myReducer);
 
reducer("can process foo", stateBefore, { type: "FOO" });
reducer("can process bar", stateBefore, { type: "BAR" });
reducer("can process multiple scenarios", assert => {
    assert(stateBefore, { type: "FOO" }, stateAfter);
    assert(stateBefore, { type: "BAR" });
});

Testing

npm test
npm run lint

Readme

Keywords

Package Sidebar

Install

npm i injest

Weekly Downloads

5

Version

0.1.4

License

MIT

Last publish

Collaborators

  • anahkiasen
  • madewithlove-machine-user