@parity/light.js-react
Version:
A HOC to easily use @parity/light.js with React.
45 lines (44 loc) • 2.11 kB
JavaScript
;
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity.
//
// SPDX-License-Identifier: MIT
Object.defineProperty(exports, "__esModule", { value: true });
require("symbol-observable"); // TODO Remove this once https://github.com/acdlite/recompose/pull/660 is merged
// eslint-disable-next-line @typescript-eslint/no-unused-vars
var React = require("react");
var Adapter = require("enzyme-adapter-react-16");
var Enzyme = require("enzyme");
var rxjs_1 = require("rxjs");
var recompose_1 = require("recompose");
var _1 = require("./");
Enzyme.configure({ adapter: new Adapter() });
var mount = Enzyme.mount;
var MockComponent = recompose_1.toClass(function (props) { return (React.createElement("div", null, JSON.stringify(props))); });
var mockRpc$ = function () { return rxjs_1.of('bar'); };
describe('withOneObservable', function () {
test('it should return a HOC', function () {
expect(typeof _1.withOneObservable('foo', function () { return rxjs_1.of('bar'); })).toBe('function');
});
test('it should give the wrapped component the correct props', function () {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
var EnhancedComponent = _1.withOneObservable('foo', mockRpc$)(MockComponent);
var wrapper = mount(React.createElement(EnhancedComponent, null));
var div = wrapper.find('div');
expect(div.text()).toEqual(JSON.stringify({ foo: 'bar' }));
});
});
describe('light', function () {
test('it should return a HOC', function () {
expect(typeof _1.default({
foo: mockRpc$
})).toBe('function');
});
test('it should give the wrapped component the correct props', function () {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
var EnhancedComponent = _1.default({ foo: mockRpc$, baz: mockRpc$ })(MockComponent);
var wrapper = mount(React.createElement(EnhancedComponent, null));
var div = wrapper.find('div');
expect(div.text()).toEqual(JSON.stringify({ foo: 'bar', baz: 'bar' }));
});
});