From a83e5e567567fcf86f3906c94f0134b82755ee8c Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Mon, 7 Jan 2019 07:38:12 -0500 Subject: [PATCH] add unit test coverage for DataListToolbar.jsx --- __tests__/components/DataListToolbar.test.jsx | 1 + .../DataListToolbar/DataListToolbar.jsx | 96 +++++++++++-------- 2 files changed, 58 insertions(+), 39 deletions(-) diff --git a/__tests__/components/DataListToolbar.test.jsx b/__tests__/components/DataListToolbar.test.jsx index 1c1a3d8b04..facc3b1128 100644 --- a/__tests__/components/DataListToolbar.test.jsx +++ b/__tests__/components/DataListToolbar.test.jsx @@ -29,6 +29,7 @@ describe('', () => { name === target.innerText); + const [{ key: searchKey }] = columns.filter(({ name }) => name === innerText); this.setState({ isSortDropdownOpen: false }); - - onSort(key, sortOrder); + onSort(searchKey, sortOrder); } onSearchDropdownToggle (isSearchDropdownOpen) { @@ -76,11 +77,10 @@ class DataListToolbar extends React.Component { onSearchDropdownSelect ({ target }) { const { columns } = this.props; + const { innerText } = target; - const targetName = target.innerText; - const [{ key }] = columns.filter(({ name }) => name === targetName); - - this.setState({ isSearchDropdownOpen: false, searchKey: key }); + const [{ key: searchKey }] = columns.filter(({ name }) => name === innerText); + this.setState({ isSearchDropdownOpen: false, searchKey }); } onSearch () { @@ -90,13 +90,19 @@ class DataListToolbar extends React.Component { onSearch(searchValue); } + onSort () { + const { onSort, sortedColumnKey, sortOrder } = this.props; + const newSortOrder = sortOrder === 'ascending' ? 'descending' : 'ascending'; + + onSort(sortedColumnKey, newSortOrder); + } + render () { const { up } = DropdownPosition; const { columns, isAllSelected, onSelectAll, - onSort, sortedColumnKey, sortOrder, addUrl, @@ -110,29 +116,15 @@ class DataListToolbar extends React.Component { searchValue, } = this.state; - const [searchColumn] = columns - .filter(({ key }) => key === searchKey); - const searchColumnName = searchColumn.name; - - const [sortedColumn] = columns + const [{ name: searchColumnName }] = columns.filter(({ key }) => key === searchKey); + const [{ name: sortedColumnName, isNumeric }] = columns .filter(({ key }) => key === sortedColumnKey); - const sortedColumnName = sortedColumn.name; - const isSortNumeric = sortedColumn.isNumeric; - const displayedSortIcon = () => { - let icon; - if (sortOrder === 'ascending') { - icon = isSortNumeric ? () : (); - } else { - icon = isSortNumeric ? () : (); - } - return icon; - }; const searchDropdownItems = columns .filter(({ key }) => key !== searchKey) .map(({ key, name }) => ( - { name } + {name} )); @@ -140,17 +132,26 @@ class DataListToolbar extends React.Component { .filter(({ key, isSortable }) => isSortable && key !== sortedColumnKey) .map(({ key, name }) => ( - { name } + {name} )); + let SortIcon; + if (isNumeric) { + SortIcon = sortOrder === 'ascending' ? SortNumericUpIcon : SortNumericDownIcon; + } else { + SortIcon = sortOrder === 'ascending' ? SortAlphaUpIcon : SortAlphaDownIcon; + } + return ( {({ i18n }) => (
- + - { searchColumnName } + {searchColumnName} )} dropdownItems={searchDropdownItems} @@ -195,7 +196,9 @@ class DataListToolbar extends React.Component {
- + - { sortedColumnName } + {sortedColumnName} )} dropdownItems={sortDropdownItems} @@ -214,23 +217,29 @@ class DataListToolbar extends React.Component { - { showExpandCollapse && ( + {showExpandCollapse && ( - - @@ -239,14 +248,23 @@ class DataListToolbar extends React.Component { - - {addUrl && ( -