This repository was archived by the owner on Mar 16, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 205
/
Copy pathRepository.test.js
56 lines (44 loc) · 1.44 KB
/
Repository.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
const test = require('ava')
const barElement = { title: 'bar', content: 'bar' }
const almostBarElement = { title: 'almostbar', content: 'almostbar' }
const loremElement = { title: 'lorem', content: 'lorem ipsum' }
const data = [barElement, almostBarElement, loremElement]
let repository
test.beforeEach(() => {
repository = require('../src/Repository.js')
repository.put(data)
})
test.afterEach(() => {
repository.clear()
})
test('finds a simple string', t => {
t.deepEqual(repository.search('bar'), [barElement, almostBarElement])
})
test('limits the search results to one even if found more', t => {
repository.setOptions({ limit: 1 })
t.deepEqual(repository.search('bar'), [barElement])
})
test('finds a long string', t => {
t.deepEqual(repository.search('lorem ipsum'), [loremElement])
})
test('finds a fuzzy string', t => {
repository.setOptions({ fuzzy: true })
t.deepEqual(repository.search('lrm ism'), [loremElement])
})
test('returns empty search results when an empty criteria is provided', t => {
t.deepEqual(repository.search(''), [])
})
test('excludes items from search #1', t => {
repository.setOptions({
exclude: ['almostbar']
})
t.deepEqual(repository.search('almostbar'), [])
})
test('excludes items from search #2', t => {
repository.setOptions({
sort: (a, b) => {
return a.title.localeCompare(b.title)
}
})
t.deepEqual(repository.search('r'), [almostBarElement, barElement, loremElement])
})