@langchain/community
Version:
Third-party integrations for LangChain.js
94 lines (93 loc) • 3.64 kB
JavaScript
// /* eslint-disable no-process-env */
// Hangs when run with other tests, uncomment for development
// import { test, expect, describe } from "@jest/globals";
// import { CassandraClientFactory } from "../../utils/cassandra.js";
// import { CassandraKVStore } from "../cassandra.js";
test("Empty test to prevent runner from complaining", async () => { });
export {};
// const cassandraConfig = {
// serviceProviderArgs: {
// astra: {
// token: process.env.ASTRA_TOKEN as string,
// endpoint: process.env.ASTRA_DB_ENDPOINT as string,
// },
// },
// keyspace: "test",
// table: "test_kv",
// };
// let client;
// // For internal testing:
// // 1. switch "describe.skip(" to "describe("
// // 2. Export ASTRA_DB_ENDPOINT and ASTRA_TOKEN; "test" keyspace should exist
// // 3. cd langchainjs/libs/langchain-community
// // 4. yarn test:single src/storage/tests/cassandra.int.test.ts
// // Once manual testing is complete, re-instate the ".skip"
// describe.skip("CassandraKVStore", () => {
// let store: CassandraKVStore;
// beforeAll(async () => {
// client = await CassandraClientFactory.getClient(cassandraConfig);
// await client.execute("DROP TABLE IF EXISTS test.test_kv;");
// store = new CassandraKVStore(cassandraConfig);
// });
// test("CassandraKVStore can perform all operations", async () => {
// // Using TextEncoder to simulate encoding of string data to binary format
// const encoder = new TextEncoder();
// const decoder = new TextDecoder();
// const value1 = encoder.encode(new Date().toISOString());
// const value2 = encoder.encode(
// new Date().toISOString() + new Date().toISOString()
// );
// // mset
// await store.mset([
// ["key1", value1],
// ["key2", value2],
// ]);
// // mget
// const retrievedValues = await store.mget(["key1", "key2"]);
// expect(retrievedValues.map((v) => decoder.decode(v))).toEqual([
// decoder.decode(value1),
// decoder.decode(value2),
// ]);
// // yieldKeys
// const keys = [];
// for await (const key of store.yieldKeys()) {
// keys.push(key);
// }
// expect(keys).toContain("key1");
// expect(keys).toContain("key2");
// // mdelete
// await store.mdelete(["key1", "key2"]);
// const retrievedValuesAfterDelete = await store.mget(["key1", "key2"]);
// expect(retrievedValuesAfterDelete).toEqual([undefined, undefined]);
// });
// describe.skip("CassandraKVStore key prefix retrieval", () => {
// beforeAll(async () => {
// client = await CassandraClientFactory.getClient(cassandraConfig);
// await client.execute("DROP TABLE IF EXISTS test.test_kv;");
// store = new CassandraKVStore(cassandraConfig);
// await store.mset([
// ["a/b/c", new TextEncoder().encode("value abc")],
// ["a/b/d", new TextEncoder().encode("value abd")],
// ["a/e/f", new TextEncoder().encode("value aef")],
// ]);
// });
// test.each([
// ["a", ["a/b/c", "a/b/d", "a/e/f"]],
// ["a/", ["a/b/c", "a/b/d", "a/e/f"]],
// ["a/b", ["a/b/c", "a/b/d"]],
// ["a/b/", ["a/b/c", "a/b/d"]],
// ["a/e", ["a/e/f"]],
// ["a/e/", ["a/e/f"]],
// ["b", []],
// ])(
// "yieldKeys with prefix '%s' returns expected keys",
// async (prefix, expectedKeys) => {
// const retrievedKeys = [];
// for await (const key of store.yieldKeys(prefix)) {
// retrievedKeys.push(key);
// }
// expect(retrievedKeys.sort()).toEqual(expectedKeys.sort());
// }
// );
// });
// });