react-awesome-feature-toggles
Version:
Simple feature toggles for react and react router
82 lines (66 loc) • 2.18 kB
JavaScript
import React from 'react'
import chai, { expect } from 'chai'
import dirtyChai from 'dirty-chai'
import { shallow } from 'enzyme'
import { Route, IndexRoute, match } from 'react-router'
import { FeatureToggle, setFeatureConfig } from '../../src/index'
chai.use(dirtyChai)
const { describe, it } = global
describe('<FeatureToggle/>', () => {
it('renders children if toggle is enabled', () => {
setFeatureConfig({ testFeature: true })
const wrapper = shallow(
<FeatureToggle name="testFeature">
<div>Test</div>
</FeatureToggle>)
expect(wrapper.find('div')).to.have.length(1)
})
it('ignores children if toggle is disabled', () => {
setFeatureConfig({ testFeature: false })
const wrapper = shallow(
<FeatureToggle name="testFeature">
<div>Test</div>
</FeatureToggle>)
expect(wrapper.find('div')).to.have.length(0)
})
it('adds routes if toggle is enabled', (done) => {
setFeatureConfig({ testFeature: true })
const routes = (
<Route name="home" path="/">
<IndexRoute />
<FeatureToggle name="testFeature">
<Route name="route1" path="route1">
<IndexRoute />
<Route name="route1.sub" path=":routeId">
<IndexRoute />
</Route>
</Route>
</FeatureToggle>
<Route name="route2" path="" />
</Route>)
match({ routes, location: '/route1/5' }, (err, redirect, props) => {
expect(props).to.not.be.undefined()
done()
})
})
it('ignores routes if toggle is disabled', (done) => {
setFeatureConfig({ testFeature: false })
const routes = (
<Route name="home" path="/">
<IndexRoute />
<FeatureToggle name="testFeature">
<Route name="route1" path="route1">
<IndexRoute />
<Route name="route1.sub" path=":routeId">
<IndexRoute />
</Route>
</Route>
</FeatureToggle>
<Route name="route2" path="" />
</Route>)
match({ routes, location: '/route1/5' }, (err, redirect, props) => {
expect(props).to.be.undefined()
done()
})
})
})