UNPKG

redux-ab-test

Version:

A/B testing React components with Redux and debug tools. Isomorphic with a simple, universal interface. Well documented and lightweight. Tested in popular browsers and Node.js. Includes helpers for React, Redux, and Segment.io

85 lines (67 loc) 2.84 kB
'use strict'; var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _immutable = require('immutable'); var _immutable2 = _interopRequireDefault(_immutable); var _redux = require('redux'); var _reactRedux = require('react-redux'); var _reactTestRenderer = require('react-test-renderer'); var _reactTestRenderer2 = _interopRequireDefault(_reactTestRenderer); var _variation = require('./variation'); var _variation2 = _interopRequireDefault(_variation); var _module = require('../../module'); var _module2 = _interopRequireDefault(_module); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // eslint-disable-line no-unused-vars describe('(Container) Variation', function () { describe('mapStateToProps', function () { it('exists', function () { expect(_variation.mapStateToProps).not.toBeUndefined; }); it('has correct keys', function () { expect((0, _keys2['default'])((0, _variation.mapStateToProps)({ reduxAbTest: 'test-state' }))).toEqual(['reduxAbTest']); }); it('has correct state', function () { expect((0, _variation.mapStateToProps)({ reduxAbTest: 'test-state' })).toEqual({ reduxAbTest: 'test-state' }); }); }); describe('component', function () { var component = void 0; var tree = void 0; beforeEach(function () { var props = { name: 'Variation B', experiment: _immutable2['default'].fromJS({ name: 'Test-experimentName', variations: [{ name: 'Original', weight: 10000 }, { name: 'Variation B', weight: 0 }] }), children: 'Test Variation B' }; var state = { reduxAbTest: _module.initialState.merge({ experiments: [{ name: 'Test-experimentName', variations: [{ name: 'Original', weight: 10000 }, { name: 'Variation B', weight: 0 }] }] }) }; component = _reactTestRenderer2['default'].create(_react2['default'].createElement( _reactRedux.Provider, { store: (0, _redux.createStore)(_module2['default'], state) }, _react2['default'].createElement(_variation2['default'], props) )); tree = component.toJSON(); }); it('variation has expected props', function () { expect(tree).toMatchSnapshot(); expect(tree.type).toEqual('span'); expect(tree.props['data-experiment-id']).toBeUndefined; expect(tree.props['data-experiment-name']).toEqual('Test-experimentName'); expect(tree.props['data-variation-id']).toBeUndefined; expect(tree.props['data-variation-name']).toEqual('Variation B'); expect(tree.children).toEqual(['Test Variation B']); }); }); });