Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@hackney/mtfh-test-utils

Package Overview
Dependencies
Maintainers
9
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hackney/mtfh-test-utils

Test utilities for LBH Modern Tools for Housing

  • 1.8.9
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
4
decreased by-66.67%
Maintainers
9
Weekly downloads
 
Created
Source

test-utils

Testing utilities for Jest utilising the @testing-library and mws frameworks.

Usage

Add the lib to jest config:

setupFilesAfterEnv: ["@testing-library/jest-dom", "@hackney/mtfh-test-utils"],

Render

You should always prefer to use the render method from this library when testing.

import { render } from "@hackney/mtfh-test-utils";

React Router Dom

The render method wraps tests in our custom ConfirmationRouter (see here)

render(<PageView />);

If your page requires path params to be defined, ie your component utilises useParams, useLocation etc, from react-router-dom.

render(<PageView />, {
  url: "/person/b7ab8dd3-b200-40b0-98e0-324781ec0832",
  path: "/person/:personId",
});

Media Queries

To render the view at a specific device size, you can initialise the options with one of the defined values.

render(<Button />, { query: "sm" });

The accepted queries are defined as the following:

const queries = {
  base: "(min-width: 0px) and (max-width: 479px)",
  sm: "(min-width: 480px) and (max-width: 767px)",
  md: "(min-width: 768px) and (max-width: 991px)",
  lg: "(min-width: 992px) and (max-width: 1279px)",
  xl: "(min-width: 1280px) and (max-width: 1535px)",
  "2xl": "(min-width: 1536px)",
};

Testing Accessibility

We expose a helper to test a dom/react element for accessibility using jest-axe

import { render, testA11y } from "@hackney/mtfh-test-utils";

test("it passes a11y", async () => {
  const { container } = render(<Button />);
  await testA11y(container);
});

Or directly

import { testA11y } from "@hackney/mtfh-test-utils";

test("it passes a11y", async () => {
  await testA11y(<Button />);
});

Options

You can pass both render and axe configuration to the second argument as described in jest-axe.

await testA11y(<Button />, {
    query: 'sm',
    axeOptions: {
        rules: {
            'color-contrast': { enabled: true }
        }
    }
);

API Mocks and Handlers

The library exposes a msw node server, with no existing handlers defined:

import { server } from "@hackney/mtfh-test-utils";

Default Api Handlers

To add any of the versioned api handlers create a test-utils.ts file in your project and define the following:

import { server, getPersonV1, getCommentsV2 } from "@hackney/mtfh-test-utils";

beforeEach(() => {
  server.use(getPersonV1(), getCommentsV2());
});

NB: Don't forget to add your test-utils.ts file to the setupFilesAfterEnv option in jest.config.ts.

Override Handlers

When testing components that use any api, you should be testing failures. To do so simply define the usage before the render:

import { render, server, getPersonV1 } from "@hackney/mtfh-test-utils";

test("it handles an unexpected error", async () => {
  server.use(getPersonV1("error", 500));
  render(<PersonView />, {
    url: "/person/b7ab8dd3-b200-40b0-98e0-324781ec0832",
    path: "/person/:personId",
  });
});

Using Mocks

This library exposes helpers (using faker) to help generate mock data.

import { generateMockPersonV1 } from "@hackney/mtfh-test-utils";

const mockPerson = generateMockPersonV1({
  firstName: "Test",
});

We also expose pre-generated mocks for usage with handlers. View the relevant api to see what is there.

FAQs

Package last updated on 08 Dec 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc