Skip to content

Commit

Permalink
SuggestionItem tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Torgeir Pedersen Cook committed Feb 21, 2017
1 parent 6a65ed3 commit c280ad9
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 18 deletions.
3 changes: 2 additions & 1 deletion src/suggestion/suggestion-item.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class SuggestionItem extends Component{
}
}}
role='option'
onMouseDown={() => {onSelect(item, true)}}
onMouseDown={() => {onSelect(item)}}
className={isHighlighted ? 'account-suggestion__highlighted account-suggestion' : 'account-suggestion'}
tabIndex={-1}
>
Expand All @@ -25,6 +25,7 @@ SuggestionItem.propTypes = {
isHighlighted: PropTypes.bool.isRequired,
render: PropTypes.func.isRequired,
onSelect: PropTypes.func.isRequired,
refHighlightedSuggestion: PropTypes.func.isRequired,
};

export default SuggestionItem;
43 changes: 26 additions & 17 deletions src/suggestion/suggestion-item.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,51 +2,60 @@ import {mount} from 'enzyme';
import {assert} from 'chai';
import React from 'react';
import SuggestionItem from './suggestion-item';
import sinon from 'sinon';

import jsdom from 'jsdom'

const doc = jsdom.jsdom('<!doctype html><html><body></body></html>');
global.document = doc;
global.window = doc.defaultView;

function assertHasFocus(wrapper, focus = true) {
const testWrapperFocus = wrapper.node === document.activeElement;
focus ? assert.isTrue(testWrapperFocus) : assert.isFalse(testWrapperFocus);
function item() {
return {header: 'header'};
}

function mountSuggestionItem(isHighlighted = true) {
function renderSuggestionItem(isHighlighted = true, refHighlightedSuggestion = ()=>{}, onSelect = ()=>{}) {
return mount(<SuggestionItem
onSelect={()=>{}}
item={{header: 'header'}}
onSelect={onSelect}
item={item()}
isHighlighted={isHighlighted}
refHighlightedSuggestion={refHighlightedSuggestion}
render={({header}) => <h1>{header}</h1>}
/>);
}

describe('<SuggestionItem />', () => {

it('item is rendered', () => {
const wrapper = mountSuggestionItem();
const wrapper = renderSuggestionItem();
const li = wrapper.find('li');

assert.equal(li.childAt(0).html(), '<h1>header</h1>');
});

it('isHighlighted', () => {
const wrapper = mountSuggestionItem();
const li = wrapper.find('li');
const refHighlightedSuggestionSpy = sinon.spy();
const wrapper = renderSuggestionItem(true, refHighlightedSuggestionSpy);

assert.isTrue(wrapper.hasClass('--highlighted'));
assert.equal(li.props().tabIndex, 0);
assertHasFocus(li);
assert.isTrue(wrapper.hasClass('account-suggestion__highlighted'));
assert.isTrue(wrapper.hasClass('account-suggestion'));
assert.isTrue(refHighlightedSuggestionSpy.calledOnce);
});


it('not Highlighted', () => {
const wrapper = mountSuggestionItem(false);
const li = wrapper.find('li');
const refHighlightedSuggestionSpy = sinon.spy();
const wrapper = renderSuggestionItem(false, refHighlightedSuggestionSpy);

assert.isFalse(wrapper.hasClass('account-suggestion__highlighted'));
assert.isTrue(wrapper.hasClass('account-suggestion'));
assert.isFalse(refHighlightedSuggestionSpy.called);
});

assert.isFalse(wrapper.hasClass('--highlighted'));
assert.equal(li.props().tabIndex, -1);
assertHasFocus(li, false);
it('onSelect called', () => {
const onSelectSpy = sinon.spy();
const wrapper = renderSuggestionItem(true, ()=>{}, onSelectSpy);
wrapper.simulate('mousedown');
assert.isTrue(onSelectSpy.calledWith(item()));
});
});

0 comments on commit c280ad9

Please sign in to comment.