@lableb/javascript-sdk
Version:
Lableb cloud search client for javascript
266 lines (193 loc) • 7.96 kB
text/typescript
import { MESSAGES } from "../../config/messages";
import { LablebClient } from "../lableb-client/lableb-client";
describe('Test Auth', () => {
test('recommend at lableb cloud without api key', async () => {
try {
const lablebClient = LablebClient({
platformName: process.env.PLATFORM_NAME,
});
await lablebClient.recommend({
id: '1'
});
} catch (error) {
expect(error.message).toEqual(MESSAGES.API_KEY_IS_REQUIRED);
}
});
});
describe('Test Recommend Request', () => {
test('Recommend at lableb cloud', async () => {
const lablebClient = LablebClient({
APIKey: process.env.API_KEY,
platformName: process.env.PLATFORM_NAME,
});
const { code, response, time } = await lablebClient.recommend({
id: 1,
});
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('Recommend 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.recommend({
id: 1,
limit: 2,
sessionId: '92492mfa',
sort: 'title asc',
userId: '42',
userIp: '172.65.23.22',
userCountry: 'AE',
title: 'title',
url: 'https://example.com'
});
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');
}
});
test('Recommend at lableb cloud with all optional options Overridden', async () => {
const lablebClient = LablebClient({
APIKey: process.env.API_KEY,
platformName: process.env.PLATFORM_NAME,
userCountry: 'AE',
userIp: '172.65.23.22',
});
const { code, response, time } = await lablebClient.recommend({
id: 1,
limit: 2,
sessionId: '92492mfa',
sort: 'title asc',
userId: '42',
userCountry: 'US',
title: 'title',
url: 'https://example.com'
});
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('US');
}
});
test('Recommend at lableb cloud with session id generator 1', async () => {
const lablebClient = LablebClient({
APIKey: process.env.API_KEY,
platformName: process.env.PLATFORM_NAME,
sessionIdGenerator: () => '92492mfa',
});
const { code, response, time } = await lablebClient.recommend({
id: 1,
});
if (response.results.length) {
expect(response.results[0].feedback.sessionId).toEqual('92492mfa');
}
});
test('Recommend at lableb cloud with session id generator 2', async () => {
const lablebClient = LablebClient({
APIKey: process.env.API_KEY,
platformName: process.env.PLATFORM_NAME,
sessionIdGenerator: () => '92492mfa',
});
const { code, response, time } = await lablebClient.recommend({
id: 1,
sessionIdGenerator: () => 'AAA'
});
if (response.results.length) {
expect(response.results[0].feedback.sessionId).toEqual('AAA');
}
});
test('Recommend at lableb cloud with session id generator 3', async () => {
const lablebClient = LablebClient({
APIKey: process.env.API_KEY,
platformName: process.env.PLATFORM_NAME,
sessionIdGenerator: () => '92492mfa',
});
const { code, response, time } = await lablebClient.recommend({
id: 1,
sessionIdGenerator: () => 'AAA',
sessionId: 'BBB'
});
if (response.results.length) {
expect(response.results[0].feedback.sessionId).toEqual('BBB');
}
});
test('Recommend at lableb cloud with feedback', async () => {
const lablebClient = LablebClient({
APIKey: process.env.API_KEY,
platformName: process.env.PLATFORM_NAME,
});
const { code, response, time } = await lablebClient.recommend({
id: 3,
});
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.sourceId).toEqual(3);
expect(response.results[0].feedback.targetId).toEqual(response.results[0].id);
const feedbackResponse = await lablebClient.feedback.recommend.single({
documentFeedback: response.results[0].feedback,
});
expect(feedbackResponse.code).toBe(200);
expect(feedbackResponse.time).toBeGreaterThan(0);
expect(feedbackResponse.response).toBeNull();
}
});
});
describe('Bad Inputs', () => {
test('Recommend at lableb cloud with no query', async () => {
try {
const lablebClient = LablebClient({
APIKey: process.env.API_KEY,
platformName: process.env.PLATFORM_NAME,
});
await lablebClient.recommend({
id: '',
});
} catch (error) {
expect(error.message).toEqual(MESSAGES.DOCUMENT_ID_IS_REQUIRED);
}
});
test('Recommend at lableb cloud with bad session id generator 1', async () => {
try {
const lablebClient = LablebClient({
APIKey: process.env.API_KEY,
platformName: process.env.PLATFORM_NAME,
sessionIdGenerator: () => 35535 as any,
});
} catch (error) {
expect(error.message).toEqual(MESSAGES.SESSION_ID_GENERATOR_TYPE_ERROR);
}
});
test('Recommend at lableb cloud with bad session id generator 2', async () => {
try {
const lablebClient = LablebClient({
APIKey: process.env.API_KEY,
platformName: process.env.PLATFORM_NAME,
sessionIdGenerator: 'AAA' as any,
});
} catch (error) {
expect(error.message).toEqual(MESSAGES.SESSION_ID_GENERATOR_TYPE_ERROR);
}
});
});