Fixed broken unit tests
This commit is contained in:
parent
3e795b3275
commit
4f86135050
|
@ -221,16 +221,16 @@ export function search (eson, text) {
|
|||
|
||||
// TODO: keep active result from previous search if any?
|
||||
|
||||
const updatedEson = transform (eson, function (value, path) {
|
||||
// find search results and add search tags in the ESON object
|
||||
let updatedEson = transform (eson, function (value, path) {
|
||||
let updatedValue = value
|
||||
|
||||
// check property name
|
||||
const prop = last(path)
|
||||
if (text !== '' && containsCaseInsensitive(prop, text) &&
|
||||
getIn(eson, initial(path))[TYPE] === 'object') { // parent must be an Object
|
||||
const searchState = isEmpty(matches) ? 'active' : 'normal'
|
||||
matches.push({path, area: 'property'})
|
||||
updatedValue = setIn(updatedValue, [SEARCH_PROPERTY], searchState)
|
||||
updatedValue = setIn(updatedValue, [SEARCH_PROPERTY], 'normal')
|
||||
}
|
||||
else {
|
||||
updatedValue = deleteIn(updatedValue, [SEARCH_PROPERTY])
|
||||
|
@ -238,9 +238,8 @@ export function search (eson, text) {
|
|||
|
||||
// check value
|
||||
if (value[TYPE] === 'value' && text !== '' && containsCaseInsensitive(value[VALUE], text)) {
|
||||
const searchState = isEmpty(matches) ? 'active' : 'normal'
|
||||
matches.push({path, area: 'value'})
|
||||
updatedValue = setIn(updatedValue, [SEARCH_VALUE], searchState)
|
||||
updatedValue = setIn(updatedValue, [SEARCH_VALUE], 'normal')
|
||||
}
|
||||
else {
|
||||
updatedValue = deleteIn(updatedValue, [SEARCH_VALUE])
|
||||
|
@ -249,6 +248,7 @@ export function search (eson, text) {
|
|||
return updatedValue
|
||||
})
|
||||
|
||||
// sort the results by path and property/value
|
||||
matches.sort((a, b) => {
|
||||
const arrayOrder = compareArrays(a.path, b.path)
|
||||
if (arrayOrder !== 0) {
|
||||
|
@ -261,12 +261,23 @@ export function search (eson, text) {
|
|||
return compareStrings(a.area, b.area)
|
||||
})
|
||||
|
||||
// make the first search result active
|
||||
const active = matches[0] || null
|
||||
if (active) {
|
||||
if (active.area === 'property') {
|
||||
updatedEson = setIn(updatedEson, active.path.concat(SEARCH_PROPERTY), 'active')
|
||||
}
|
||||
if (active.area === 'value') {
|
||||
updatedEson = setIn(updatedEson, active.path.concat(SEARCH_VALUE), 'active')
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
eson: updatedEson,
|
||||
searchResult: {
|
||||
text,
|
||||
matches,
|
||||
active: matches[0] || null
|
||||
active
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -229,14 +229,14 @@ test('search', () => {
|
|||
const active = result.searchResult.active
|
||||
|
||||
expect(matches).toEqual([
|
||||
{path: ['obj', 'arr', '2', 'last'], area: 'property'},
|
||||
{path: ['str'], area: 'value'},
|
||||
{path: ['bool'], area: 'property'},
|
||||
{path: ['bool'], area: 'value'},
|
||||
{path: ['nill'], area: 'property'},
|
||||
{path: ['nill'], area: 'value'},
|
||||
{path: ['bool'], area: 'property'},
|
||||
{path: ['bool'], area: 'value'}
|
||||
{path: ['obj', 'arr', '2', 'last'], area: 'property'},
|
||||
{path: ['str'], area: 'value'},
|
||||
])
|
||||
expect(active).toEqual({path: ['obj', 'arr', '2', 'last'], area: 'property'})
|
||||
expect(active).toEqual({path: ['bool'], area: 'property'})
|
||||
|
||||
let expected = esonWithSearch
|
||||
expected = setIn(expected, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY], 'active')
|
||||
|
@ -276,33 +276,33 @@ test('nextSearchResult', () => {
|
|||
const first = search(eson, 'A')
|
||||
|
||||
expect(first.searchResult.matches).toEqual([
|
||||
{path: ['bool'], area: 'value'},
|
||||
{path: ['obj', 'arr'], area: 'property'},
|
||||
{path: ['obj', 'arr', '2', 'last'], area: 'property'},
|
||||
{path: ['bool'], area: 'value'}
|
||||
])
|
||||
|
||||
expect(first.searchResult.active).toEqual({path: ['obj', 'arr'], area: 'property'})
|
||||
expect(getIn(first.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('active')
|
||||
expect(first.searchResult.active).toEqual({path: ['bool'], area: 'value'})
|
||||
expect(getIn(first.eson, ['bool', SEARCH_VALUE])).toEqual('active')
|
||||
expect(getIn(first.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(first.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(first.eson, ['bool', SEARCH_VALUE])).toEqual('normal')
|
||||
|
||||
const second = nextSearchResult(first.eson, first.searchResult)
|
||||
expect(second.searchResult.active).toEqual({path: ['obj', 'arr', '2', 'last'], area: 'property'})
|
||||
expect(getIn(second.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(second.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('active')
|
||||
expect(second.searchResult.active).toEqual({path: ['obj', 'arr'], area: 'property'})
|
||||
expect(getIn(second.eson, ['bool', SEARCH_VALUE])).toEqual('normal')
|
||||
expect(getIn(second.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('active')
|
||||
expect(getIn(second.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('normal')
|
||||
|
||||
const third = nextSearchResult(second.eson, second.searchResult)
|
||||
expect(third.searchResult.active).toEqual({path: ['bool'], area: 'value'})
|
||||
expect(third.searchResult.active).toEqual({path: ['obj', 'arr', '2', 'last'], area: 'property'})
|
||||
expect(getIn(third.eson, ['bool', SEARCH_VALUE])).toEqual('normal')
|
||||
expect(getIn(third.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(third.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(third.eson, ['bool', SEARCH_VALUE])).toEqual('active')
|
||||
expect(getIn(third.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('active')
|
||||
|
||||
const wrappedAround = nextSearchResult(third.eson, third.searchResult)
|
||||
expect(wrappedAround.searchResult.active).toEqual({path: ['obj', 'arr'], area: 'property'})
|
||||
expect(getIn(wrappedAround.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('active')
|
||||
expect(wrappedAround.searchResult.active).toEqual({path: ['bool'], area: 'value'})
|
||||
expect(getIn(wrappedAround.eson, ['bool', SEARCH_VALUE])).toEqual('active')
|
||||
expect(getIn(wrappedAround.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(wrappedAround.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(wrappedAround.eson, ['bool', SEARCH_VALUE])).toEqual('normal')
|
||||
})
|
||||
|
||||
test('previousSearchResult', () => {
|
||||
|
@ -317,33 +317,33 @@ test('previousSearchResult', () => {
|
|||
const init = search(eson, 'A')
|
||||
|
||||
expect(init.searchResult.matches).toEqual([
|
||||
{path: ['bool'], area: 'value'},
|
||||
{path: ['obj', 'arr'], area: 'property'},
|
||||
{path: ['obj', 'arr', '2', 'last'], area: 'property'},
|
||||
{path: ['bool'], area: 'value'}
|
||||
])
|
||||
|
||||
expect(init.searchResult.active).toEqual({path: ['obj', 'arr'], area: 'property'})
|
||||
expect(getIn(init.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('active')
|
||||
expect(init.searchResult.active).toEqual({path: ['bool'], area: 'value'})
|
||||
expect(getIn(init.eson, ['bool', SEARCH_VALUE])).toEqual('active')
|
||||
expect(getIn(init.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(init.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(init.eson, ['bool', SEARCH_VALUE])).toEqual('normal')
|
||||
|
||||
const third = previousSearchResult(init.eson, init.searchResult)
|
||||
expect(third.searchResult.active).toEqual({path: ['bool'], area: 'value'})
|
||||
expect(third.searchResult.active).toEqual({path: ['obj', 'arr', '2', 'last'], area: 'property'})
|
||||
expect(getIn(third.eson, ['bool', SEARCH_VALUE])).toEqual('normal')
|
||||
expect(getIn(third.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(third.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(third.eson, ['bool', SEARCH_VALUE])).toEqual('active')
|
||||
expect(getIn(third.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('active')
|
||||
|
||||
const second = previousSearchResult(third.eson, third.searchResult)
|
||||
expect(second.searchResult.active).toEqual({path: ['obj', 'arr', '2', 'last'], area: 'property'})
|
||||
expect(getIn(second.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(second.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('active')
|
||||
expect(second.searchResult.active).toEqual({path: ['obj', 'arr'], area: 'property'})
|
||||
expect(getIn(second.eson, ['bool', SEARCH_VALUE])).toEqual('normal')
|
||||
expect(getIn(second.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('active')
|
||||
expect(getIn(second.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('normal')
|
||||
|
||||
const first = previousSearchResult(second.eson, second.searchResult)
|
||||
expect(first.searchResult.active).toEqual({path: ['obj', 'arr'], area: 'property'})
|
||||
expect(getIn(first.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('active')
|
||||
expect(first.searchResult.active).toEqual({path: ['bool'], area: 'value'})
|
||||
expect(getIn(first.eson, ['bool', SEARCH_VALUE])).toEqual('active')
|
||||
expect(getIn(first.eson, ['obj', 'arr', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(first.eson, ['obj', 'arr', '2', 'last', SEARCH_PROPERTY])).toEqual('normal')
|
||||
expect(getIn(first.eson, ['bool', SEARCH_VALUE])).toEqual('normal')
|
||||
})
|
||||
|
||||
test('selection (object)', () => {
|
||||
|
|
Loading…
Reference in New Issue