UNPKG

@lableb/javascript-sdk

Version:

Lableb cloud search client for javascript

254 lines (176 loc) 7.27 kB
import { MESSAGES } from "../../config/messages"; import { LablebClient } from "../lableb-client/lableb-client"; describe('Test Auth', () => { test('Search at lableb cloud without api key', async () => { try { const lablebClient = LablebClient({ platformName: process.env.PLATFORM_NAME, }); await lablebClient.search({ query: '*', APIKey: '', }); throw new Error('unexpected'); } catch (error) { expect(error.message).toEqual(MESSAGES.API_KEY_IS_REQUIRED); } }); }); describe('Test Search Request', () => { test('Search at lableb cloud', async () => { const lablebClient = LablebClient({ APIKey: process.env.API_KEY, platformName: process.env.PLATFORM_NAME, }); const { code, response, time } = await lablebClient.search({ query: '*', }); expect(code).toBe(200); expect(time).toBeGreaterThan(0); expect(response.results.length).toBeGreaterThanOrEqual(0); expect(response.found_documents).toBeGreaterThanOrEqual(0); expect(typeof response.facets).toEqual('object'); if (response.results.length) { expect(response.results[0]).toHaveProperty('feedback'); expect(response.results[0].feedback.query).toBe('*'); expect(response.results[0].feedback.itemId).toBe(response.results[0].id); } }); test('Search at lableb cloud where options passed to inner search', async () => { const lablebClient = LablebClient(); const { code, response, time } = await lablebClient.search({ query: 'hello', APIKey: process.env.API_KEY, platformName: process.env.PLATFORM_NAME, }); expect(code).toBe(200); expect(time).toBeGreaterThan(0); expect(response.results.length).toBeGreaterThanOrEqual(0); expect(response.found_documents).toBeGreaterThanOrEqual(0); expect(typeof response.facets).toEqual('object'); }); test('Search at lableb cloud with all optional options', async () => { const lablebClient = LablebClient({ APIKey: process.env.API_KEY, platformName: process.env.PLATFORM_NAME, }); const { code, response, time } = await lablebClient.search({ query: 'hello', limit: 2, sessionId: '92492mfa', skip: 0, sort: 'title asc', userId: '42', userIp: '172.65.23.22', userCountry: 'AE', }); expect(code).toBe(200); expect(time).toBeGreaterThan(0); expect(response.results.length).toBeGreaterThanOrEqual(0); expect(response.found_documents).toBeGreaterThanOrEqual(0); expect(typeof response.facets).toEqual('object'); if (response.results.length) { expect(response.results[0].feedback.sessionId).toEqual('92492mfa'); expect(response.results[0].feedback.userId).toEqual('42'); expect(response.results[0].feedback.userIp).toEqual('172.65.23.22'); expect(response.results[0].feedback.userCountry).toEqual('AE'); } if (response.facets) { const facetsKeys = Object.keys(response.facets).filter(filter => filter != 'count'); facetsKeys.forEach(facetKey => { expect(response.facets[facetKey].buckets).toHaveProperty('length'); }); } }); test('Search at lableb cloud with all optional options overridden', async () => { const lablebClient = LablebClient({ APIKey: process.env.API_KEY, platformName: process.env.PLATFORM_NAME, sessionId: '92492mfa', userId: '15', userCountry: 'AE', }); const { code, response, time } = await lablebClient.search({ query: 'hello', limit: 2, skip: 0, sort: 'title asc', userIp: '172.65.23.22', userCountry: 'IQ', }); expect(code).toBe(200); expect(time).toBeGreaterThan(0); expect(response.results.length).toBeGreaterThanOrEqual(0); expect(response.found_documents).toBeGreaterThanOrEqual(0); expect(typeof response.facets).toEqual('object'); if (response.results.length) { expect(response.results[0].feedback.sessionId).toEqual('92492mfa'); expect(response.results[0].feedback.userId).toEqual('15'); expect(response.results[0].feedback.userIp).toEqual('172.65.23.22'); expect(response.results[0].feedback.userCountry).toEqual('IQ'); } if (response.facets) { const facetsKeys = Object.keys(response.facets).filter(filter => filter != 'count'); facetsKeys.forEach(facetKey => { expect(response.facets[facetKey].buckets).toHaveProperty('length'); }); } }); test('Search at lableb cloud with session id generator 1', async () => { const lablebClient = LablebClient({ APIKey: process.env.API_KEY, platformName: process.env.PLATFORM_NAME, sessionIdGenerator: () => 'AAA' }); const { code, response, time } = await lablebClient.search({ query: 'hello', }); if (response.results.length) { expect(response.results[0].feedback.sessionId).toEqual('AAA'); } }); test('Search at lableb cloud with session id generator 2', async () => { const lablebClient = LablebClient({ APIKey: process.env.API_KEY, platformName: process.env.PLATFORM_NAME, sessionIdGenerator: () => 'AAA' }); const { code, response, time } = await lablebClient.search({ query: 'hello', sessionIdGenerator: () => 'BBB' }); if (response.results.length) { expect(response.results[0].feedback.sessionId).toEqual('BBB'); } }); test('Search at lableb cloud with session id generator 3', async () => { const lablebClient = LablebClient({ APIKey: process.env.API_KEY, platformName: process.env.PLATFORM_NAME, sessionIdGenerator: () => 'AAA' }); const { code, response, time } = await lablebClient.search({ query: 'hello', sessionIdGenerator: () => 'BBB', sessionId: 'CCC' }); if (response.results.length) { expect(response.results[0].feedback.sessionId).toEqual('CCC'); } }); }); describe('Bad Inputs', () => { test('Search at lableb cloud with no query', async () => { try { const lablebClient = LablebClient({ APIKey: process.env.API_KEY, platformName: process.env.PLATFORM_NAME, }); await lablebClient.search({ query: '', }); } catch (error) { expect(error.message).toEqual(MESSAGES.QUERY_IS_REQUIRED); } }); });