42 lines
1.6 KiB
JavaScript
42 lines
1.6 KiB
JavaScript
import { jest, test, expect } from '@jest/globals'
|
|
|
|
import { describeIfElasticsearchURL } from '../helpers/conditional-runs.js'
|
|
import { get } from '../helpers/e2etest.js'
|
|
|
|
// This suite only runs if $ELASTICSEARCH_URL is set.
|
|
describeIfElasticsearchURL('search v1 middleware in non-English', () => {
|
|
jest.setTimeout(60 * 1000)
|
|
|
|
test('basic search in Japanese', async () => {
|
|
const sp = new URLSearchParams()
|
|
// To see why this will work,
|
|
// see tests/content/fixtures/search-indexes/github-docs-dotcom-en-records.json
|
|
// which clearly has a record with the title "Foo"
|
|
sp.set('query', 'foo')
|
|
sp.set('language', 'ja')
|
|
const res = await get('/api/search/v1?' + sp)
|
|
expect(res.statusCode).toBe(200)
|
|
const results = JSON.parse(res.text)
|
|
|
|
expect(results.meta).toBeTruthy()
|
|
expect(results.meta.found.value).toBeGreaterThanOrEqual(1)
|
|
expect(results.meta.found.relation).toBeTruthy()
|
|
expect(results.meta.page).toBe(1)
|
|
expect(results.meta.size).toBeGreaterThanOrEqual(1)
|
|
expect(results.meta.took.query_msec).toBeGreaterThanOrEqual(0)
|
|
expect(results.meta.took.total_msec).toBeGreaterThanOrEqual(0)
|
|
|
|
// Might be empty but at least an array
|
|
expect(results.hits).toBeTruthy()
|
|
// The word 'foo' appears in more than 1 document in the fixtures.
|
|
expect(results.hits.length).toBeGreaterThanOrEqual(1)
|
|
// ...but only one has the word "foo" in its title so we can
|
|
// be certain it comes first.
|
|
const hit = results.hits[0]
|
|
// This specifically checks what we expect of version v1
|
|
expect(hit.url).toBe('/ja/foo')
|
|
expect(hit.title).toBe('フー')
|
|
expect(hit.breadcrumbs).toBe('fooing')
|
|
})
|
|
})
|