| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import test from 'ava';
- // import { createIndex, searchString, searchFor } from 'src/search';
- // import * as search from 'src/search';
- import createSearchIndex from '../src/js/search';
- import search_data from './test_data.json';
- import data from '../build/data_de.json';
- test('generated search strings should be equal', t => {
- let index = createSearchIndex(search_data, 'index', ['label'], 'de');
- let input1 = 'Arzt zg';
- let input2 = 'zg Arzt';
- t.is(index.compileString(input1), index.compileString(input2), 'Deterministic search string generation');
- });
- test('generated search strings should not be equal', t => {
- let index = createSearchIndex(search_data, 'index', ['label'], 'de');
- let input1 = 'Arzt zgx';
- let input2 = 'zgx Arzt';
- t.not(index.compileString(input1), index.compileString(input2), 'Deterministic search string generation');
- });
- test('length of search string should be greater than 0', t => {
- let index = createSearchIndex(search_data, 'index', ['label'], 'de');
- let input = 'Leitende/r Sekretär/in oder leitende';
- let res = index.compileString(input);
- // console.log(res);
- t.not(res.length, 0, 'Deterministic search string generation');
- });
- // Unfortunately, lunr search neither works when the search string contains unicode nor latin1 characters. ridiculous
- // Needs further investigation: "Café" is found, but neither "Ärztin" nor "Öffentlich"
- test('search on test data in german', t => {
- // let index = searchIndex();
- let idx = createSearchIndex(search_data, 'index', ['label'], 'de');
- // Draw random entry
- let ridx = Math.floor(Math.random() * search_data.length);
- let rnd = search_data[ridx];
- let label = rnd.label;
- let rs = Math.round(Math.random() * (label.length - 3)) + 3; // Random string length, at least 3
- let rsstring = label.substring(0, rs);
- // let result = idx.searchFor(idx, 'arzt');
- let result = idx.searchFor(rsstring);
- let inResult = result.indexOf(rnd);
- console.log(ridx, rnd, label, rs, rsstring, inResult);
- t.not(inResult, -1, 'Search term should be found in data');
- });
- test('probabilities of similar entries should be lower than probability of entry', t => {
- // Draw random entry
- let ridx = Math.floor(Math.random() * data.length);
- let rnd = data[ridx];
- // console.log('random entry', rnd);
- rnd.similar.forEach((e) => {
- // console.log('entry, similar, probs', rnd.prob, e.prob, e.index);
- // console.log('data[e.index]', data[e.index].label);
- t.assert(rnd.prob > e.prob);
- });
- });
|