@lableb/javascript-sdk
Version:
Lableb cloud search client for javascript
254 lines (176 loc) • 7.27 kB
text/typescript
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);
}
});
});