@alexjeffburke/unexpected-react
Version:
Plugin for unexpected, to allow for assertions on the React.js virtual DOM, and the shallow and test renderers
69 lines (57 loc) • 2.8 kB
JavaScript
import ReactRenderHook from 'react-render-hook';
import RawAdapter from 'unexpected-htmllike-raw-adapter';
import ReactElementAdapter from 'unexpected-htmllike-jsx-adapter';
import RenderedReactElementAdapter from 'unexpected-htmllike-reactrendered-adapter';
import { triggerEvent } from './shallowAssertions';
import { triggerEvent as triggerDeepEvent } from './deepAssertions'
import { compareSnapshot } from '../helpers/snapshots';
function installInto(expect) {
const rawAdapter = new RawAdapter({ convertToString: true, concatTextContent: true });
const shallowAdapter = new ReactElementAdapter({ convertToString: true });
const renderedReactAdapter = new RenderedReactElementAdapter({ convertToString: true, concatTextContent: true });
expect.addAssertion('<ReactShallowRenderer> to match snapshot',
function (expect, subject) {
compareSnapshot(expect, this.flags, shallowAdapter, subject, subject.getRenderOutput());
}
);
expect.addAssertion('<ReactShallowRendererPendingEvent> to match snapshot',
function (expect, subject) {
triggerEvent(expect, subject.renderer, subject.target, subject.eventName, subject.eventArgs);
expect(subject.renderer, 'to match snapshot');
}
);
expect.addAssertion('<RenderedReactElement> to match snapshot',
function (expect, subject) {
compareSnapshot(expect, this.flags, renderedReactAdapter, subject, ReactRenderHook.findComponent(subject));
}
);
expect.addAssertion('<RenderedReactElementPendingEvent> to match snapshot',
function (expect, subject) {
triggerDeepEvent(expect, subject.renderer, subject.target, subject.eventName, subject.eventArgs);
expect(subject.renderer, 'to match snapshot');
}
);
expect.addAssertion('<ReactShallowRenderer> to satisfy snapshot',
function (expect, subject) {
compareSnapshot(expect, { satisfy: true }, shallowAdapter, subject, subject.getRenderOutput());
}
);
expect.addAssertion('<ReactShallowRendererPendingEvent> to satisfy snapshot',
function (expect, subject) {
triggerEvent(expect, subject.renderer, subject.target, subject.eventName, subject.eventArgs);
expect(subject.renderer, 'to satisfy snapshot');
}
);
expect.addAssertion('<RenderedReactElement> to satisfy snapshot',
function (expect, subject) {
compareSnapshot(expect, { satisfy: true }, renderedReactAdapter, subject, ReactRenderHook.findComponent(subject));
}
);
expect.addAssertion('<RenderedReactElementPendingEvent> to satisfy snapshot',
function (expect, subject) {
triggerDeepEvent(expect, subject.renderer, subject.target, subject.eventName, subject.eventArgs);
expect(subject.renderer, 'to satisfy snapshot');
}
);
}
module.exports = { installInto };