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
JavaScript
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']);
});
});
});
;