feat(test): integration test for ts-sdk
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
/**
|
||||
* Integration tests: Batch operations.
|
||||
*
|
||||
* Tests batch update and batch delete against the real API.
|
||||
*
|
||||
* Run: MEM0_API_KEY=your-key npx jest batch.test.ts --forceExit
|
||||
*/
|
||||
import { MemoryClient } from "../../mem0";
|
||||
import { randomUUID } from "crypto";
|
||||
import {
|
||||
describeIntegration,
|
||||
createTestClient,
|
||||
suppressTelemetryNoise,
|
||||
seedTestMemories,
|
||||
waitForMemories,
|
||||
cleanupTestUser,
|
||||
} from "./helpers";
|
||||
|
||||
jest.setTimeout(120_000);
|
||||
|
||||
const TEST_USER_ID = `integration-batch-${randomUUID()}`;
|
||||
|
||||
describeIntegration("MemoryClient Integration — Batch Operations", () => {
|
||||
let client: MemoryClient;
|
||||
let cleanup: () => void;
|
||||
let memoryIds: string[] = [];
|
||||
|
||||
beforeAll(async () => {
|
||||
cleanup = suppressTelemetryNoise();
|
||||
client = createTestClient();
|
||||
memoryIds = await seedTestMemories(client, TEST_USER_ID);
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await cleanupTestUser(client, TEST_USER_ID);
|
||||
cleanup();
|
||||
});
|
||||
|
||||
test("batch updates memories", async () => {
|
||||
expect(memoryIds.length).toBeGreaterThanOrEqual(1);
|
||||
|
||||
const batchPayload = memoryIds
|
||||
.slice(0, Math.min(2, memoryIds.length))
|
||||
.map((id) => ({
|
||||
memoryId: id,
|
||||
text: `Batch updated content for ${id}`,
|
||||
}));
|
||||
|
||||
const result = await client.batchUpdate(batchPayload);
|
||||
expect(result).toBeDefined();
|
||||
|
||||
// Verify the update took effect on at least one memory
|
||||
const updated = await client.get(memoryIds[0]);
|
||||
expect(typeof updated.memory).toBe("string");
|
||||
});
|
||||
|
||||
test("batch deletes throwaway memories", async () => {
|
||||
// Add a throwaway memory, wait for it, then batch-delete
|
||||
await client.add(
|
||||
[
|
||||
{
|
||||
role: "user" as const,
|
||||
content: "Temporary memory for batch delete test.",
|
||||
},
|
||||
{ role: "assistant" as const, content: "Noted!" },
|
||||
],
|
||||
{ user_id: TEST_USER_ID },
|
||||
);
|
||||
|
||||
// Wait for new memory to appear
|
||||
const before = await waitForMemories(
|
||||
client,
|
||||
TEST_USER_ID,
|
||||
memoryIds.length + 1,
|
||||
);
|
||||
const throwawayIds = before
|
||||
.filter((m) => !memoryIds.includes(m.id))
|
||||
.map((m) => m.id);
|
||||
|
||||
// Assert we actually have something to delete
|
||||
expect(throwawayIds.length).toBeGreaterThan(0);
|
||||
|
||||
const result = await client.batchDelete(throwawayIds);
|
||||
expect(result).toBeDefined();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user