add tests; resync files, forgot where i was.

This commit is contained in:
41666 2019-03-29 13:59:57 -05:00
parent 6b36b1d5f2
commit 1a794e2d7e
No known key found for this signature in database
GPG key ID: BC51D07640DC10AF
30 changed files with 3654 additions and 534 deletions

View file

@ -0,0 +1,77 @@
/* eslint-env jest */
import * as React from 'react'
import renderer from 'react-test-renderer'
import { shallow } from 'enzyme'
import Role from './index'
describe('<Role />', () => {
it('renders correctly', () => {
const role = renderer.create(<Role role={{ name: 'Test Role', color: '#ffffff' }} />)
expect(role).toMatchSnapshot()
})
it('triggers onToggle with new state', () => {
let changed = false
const role = shallow(
<Role
role={{ name: 'Test Role', color: '#ffffff' }}
onToggle={(next) => { changed = next }}
active={false}
/>
)
role.simulate('click')
expect(changed).toBe(true)
const role2 = shallow(
<Role
role={{ name: 'Test Role', color: '#ffffff' }}
onToggle={(next) => { changed = next }}
active
/>
)
role2.simulate('click')
expect(changed).toBe(false)
})
it('fixes colors when they are not set', () => {
const role = shallow(<Role role={{ name: 'Test Role', color: 0 }} />)
expect(role.props().style['--role-color-base']).toEqual('hsl(0, 0%, 93.7%)')
})
it('has a single space for a name when empty', () => {
const role = shallow(<Role role={{ name: '', color: '#ffffff' }} />)
expect(role.text()).toEqual(' ')
})
describe('when disabled,', () => {
it('handles touch hover events', () => {
const role = shallow(<Role role={{ name: 'unsafe role', color: '#ffffff' }} disabled />)
role.simulate('touchstart')
expect(role.state().hovering).toEqual(true)
expect(role.html()).toMatchSnapshot() // expecting tooltip
expect(role.exists('tooltip')).toEqual(true)
role.simulate('touchend')
expect(role.state().hovering).toEqual(false)
})
it('does not trigger onToggle on click', () => {
let changed = false
const role = shallow(
<Role
role={{ name: 'Test Role', color: '#ffffff' }}
onToggle={() => { changed = true }}
active={changed}
disabled
/>
)
expect(role.html()).toMatchSnapshot()
role.simulate('click')
expect(role.html()).toBe(role.html())
expect(changed).toBe(false)
})
})
})

View file

@ -0,0 +1,25 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<Role /> renders correctly 1`] = `
<div
className="rolestyled-r4hjov-0 kfzQxT"
onClick={[Function]}
onTouchEnd={null}
onTouchStart={null}
style={
Object {
"--role-color-active": "hsl(0, 0%, 100%)",
"--role-color-base": "hsl(0, 0%, 100%)",
"--role-color-outline": "hsla(0, 0%, 100%, 0.7)",
"--role-color-outline-alt": "hsla(0, 0%, 100%, 0.4)",
}
}
title={null}
>
Test Role
</div>
`;
exports[`<Role /> when disabled, does not trigger onToggle on click 1`] = `"<div disabled=\\"\\" style=\\"--role-color-outline:hsla(0, 0%, 100%, 0.7);--role-color-outline-alt:hsla(0, 0%, 100%, 0.4);--role-color-active:hsl(0, 0%, 100%);--role-color-base:hsl(0, 0%, 100%)\\" title=\\"This role has unsafe permissions.\\" class=\\"rolestyled-r4hjov-0 kfzQxT\\">Test Role</div>"`;
exports[`<Role /> when disabled, handles touch hover events 1`] = `"<div disabled=\\"\\" style=\\"--role-color-outline:hsla(0, 0%, 100%, 0.7);--role-color-outline-alt:hsla(0, 0%, 100%, 0.4);--role-color-active:hsl(0, 0%, 100%);--role-color-base:hsl(0, 0%, 100%)\\" title=\\"This role has unsafe permissions.\\" class=\\"rolestyled-r4hjov-0 kfzQxT\\">unsafe role<div class=\\"tooltip-aykj5z-0 euOEXl\\">This role has unsafe permissions.</div></div>"`;

View file

@ -0,0 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<RoleDemo /> renders 1`] = `"<div style=\\"--role-color-outline:hsla(0, 0%, 100%, 0.7);--role-color-outline-alt:hsla(0, 0%, 100%, 0.4);--role-color-active:hsl(0, 0%, 100%);--role-color-base:hsl(0, 0%, 100%)\\" class=\\"rolestyled-r4hjov-0 kfzQxT\\">test demo role</div>"`;

View file

@ -0,0 +1,18 @@
/* eslint-env jest */
import * as React from 'react'
import { shallow } from 'enzyme'
import RoleDemo from './demo'
describe('<RoleDemo />', () => {
it('renders', () => {
const demo = shallow(<RoleDemo role={{ name: 'test demo role', color: '#ffffff' }} />)
expect(demo.html()).toMatchSnapshot()
})
it('changes state when clicked', () => {
const demo = shallow(<RoleDemo role={{ name: 'test demo role', color: '#ffffff' }} />)
expect(demo.state().active).toEqual(false)
demo.dive().simulate('click')
expect(demo.state().active).toEqual(true)
})
})

View file

@ -68,7 +68,7 @@ export default class Role extends React.Component<RoleProps, RoleState> {
'base': Color(color).hsl().string()
}
const name = (this.props.role.name !== '') ? this.props.role.name : <>&nbsp;</>
const name = (this.props.role.name !== '') ? this.props.role.name : ' '
return <RoleStyled
active={this.props.active}