1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 17:56:25 +00:00
Files
Boostnote/tests/lib/search-test.js
bimlas 145ae10a79 Add test: find tags without hash symbol
Searching has to find tags without hash symbol too (`tag` instead of
`#tag`).
2018-03-21 20:07:21 +01:00

48 lines
1.6 KiB
JavaScript

import test from 'ava'
import searchFromNotes from 'browser/lib/search'
import { dummyNote } from '../fixtures/TestDummy'
import _ from 'lodash'
const pickContents = (notes) => notes.map((note) => { return note.content })
let notes = []
let note1, note2, note3
test.before(t => {
const data1 = { type: 'MARKDOWN_NOTE', content: 'content1', tags: ['tag1'] }
const data2 = { type: 'MARKDOWN_NOTE', content: 'content1\ncontent2', tags: ['tag1', 'tag2'] }
const data3 = { type: 'MARKDOWN_NOTE', content: '#content4', tags: ['tag1'] }
note1 = dummyNote(data1)
note2 = dummyNote(data2)
note3 = dummyNote(data3)
notes = [note1, note2, note3]
})
test('it can find notes by tags and words', t => {
// [input, expected content (Array)]
const testWithTags = [
['#tag1', [note1.content, note2.content, note3.content]],
['#tag1 #tag2', [note2.content]],
['#tag2 #tag1', [note2.content]],
['#tag1 #tag2 #tag3', []],
['content1', [note1.content, note2.content]],
['content1 content2', [note2.content]],
['content1 content2 content3', []],
['#content4', [note3.content]],
['#tag2 content1', [note2.content]],
['content1 #tag2', [note2.content]]
]
const testWithTagsWithoutHash = testWithTags.map(function (testCase) {
return [testCase[0].replace(/#/g, ''), testCase[1]]
})
const testCases = testWithTags.concat(testWithTagsWithoutHash)
testCases.forEach((testCase) => {
const [input, expectedContents] = testCase
const results = searchFromNotes(notes, input)
t.true(_.isEqual(pickContents(results).sort(), expectedContents.sort()))
})
})