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

@codecademy/enzyme-helpers

Package Overview
Dependencies
Maintainers
1
Versions
202
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@codecademy/enzyme-helpers

Helpers for writing Enzyme tests

  • 2.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
19
decreased by-38.71%
Maintainers
1
Weekly downloads
 
Created
Source

Enzyme Helpers

Collection of Enzyme helpers for actions and expectations.

Installation

yarn add -D @codecademy/enzyme-helpers

enzyme-helpers requires react, react-dom, enzyme, and enzyme-adapter-react-16 as peer dependencies

Usage

import { shallow } from 'enzyme';
import { createEnzymeHelpers } from '@codecademy/enzyme-helpers';
import MyComponent from 'components/MyComponent';

const { expectCount, setup } = createEnzymeHelpers({
  Component: MyComponent,
  render: shallow,
  baseProps: { baseProp: 'a-base-prop' },
});

describe('MyComponent', () => {
  test('it renders the component', () => {
    // calling setup() automatically fires expectations that the component exists and renders
    const { wrapper } = setup({ prop: 'a-prop' });

    // use functions returned by the class constructor for common expectations
    expectCount(button, 1);

    // setup() returns a wrapper for additional expectations
    expect(wrapper.props().prop).toEqual('a-prop');

    // props passed to the class constructor are passed to every setup() call
    expect(wrapper.props().baseProp).toEqual('a-base-prop');
  });
});

Usage with Redux

import { shallow } from 'enzyme';
import { createEnzymeHelpers, mockStore } from '@codecademy/enzyme-helpers';
import MyConnectedComponent from 'components/MyConnectedComponent';

// mock redux store data 
const storeData = {
  storeKey: 'storeValue',
};

const { setup } = createEnzymeHelpers({
  Component: MyConnectedComponent,
  render: shallow,
  baseProps: { store: mockStore(storeData) },
});

describe('MyConnectedComponent', () => {
  test('it receives store data', () => {
    const { wrapper } = setup();

    expect(wrapper.props().storeKey).toEqual('storeValue');
  });
})

Configuration

createEnzymeHelpers takes an object of options

createEnzymeHelpers({ Component, render, baseProps = {} });
NameTypeRequired?Description
ComponentReactComponentYesThe component to render and test
renderfunctionYesOne of Enzyme's three render methods: shallow, render, mount
basePropsobjectNoProps passed to every component created by setup()

API

Functions returned from createEnzymeHelpers. See test/main.test.js for example usage.

const {
  expectCount,
  setup,
  ...other functions
} = createEnzymeHelpers({ Component, render, baseProps });
FunctionDescription
setup()Render a react component and expect it exists. setup() returns an object containing the enzyme wrapper for additional expectations
debug()Print the wrapper contents to the console
click(selector)Simulate a click on the specified selector
clickTestId(testId)Simulate a click on the specified test id
expectCount(selector, count = 1)Expect a number of the specified selector
expectTestId(testId)Expect that a given test id exists in the wrapper
expectTestIdCount(testId, count = 1)Expect a number of the specified test id
expectAllTestIds(ids)Expect an array of test ids

A Note on Test Ids

enzyme-helpers expects test ids like so (note, you only need to pass the value to test id functions):

<div data-testid="my-test-id" />

expectTestId(div, 'my-test-id') // true

Development

yarn link
yarn develop

# in your project's repo
yarn link @codecademy/enzyme-helpers

FAQs

Package last updated on 27 Aug 2020

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