2023-04-08 19:14:08 +00:00
|
|
|
import { Connection } from "@snort/nostr";
|
2023-05-19 14:15:13 +00:00
|
|
|
import { describe, expect } from "@jest/globals";
|
2023-05-24 16:17:17 +00:00
|
|
|
import { Query, QueryBase } from "./Query";
|
2023-04-08 19:14:08 +00:00
|
|
|
import { getRandomValues } from "crypto";
|
2023-04-25 17:01:29 +00:00
|
|
|
import { FlatNoteStore } from "./NoteCollection";
|
2023-04-08 19:14:08 +00:00
|
|
|
|
|
|
|
window.crypto = {} as any;
|
|
|
|
window.crypto.getRandomValues = getRandomValues as any;
|
2023-03-29 10:40:05 +00:00
|
|
|
|
|
|
|
describe("query", () => {
|
|
|
|
test("progress", () => {
|
2023-04-25 17:01:29 +00:00
|
|
|
const q = new Query(
|
|
|
|
"test",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
kinds: [1],
|
|
|
|
authors: ["test"],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
new FlatNoteStore()
|
|
|
|
);
|
2023-03-29 10:40:05 +00:00
|
|
|
const opt = {
|
|
|
|
read: true,
|
|
|
|
write: true,
|
2023-04-08 19:14:08 +00:00
|
|
|
};
|
2023-03-29 10:40:05 +00:00
|
|
|
const c1 = new Connection("wss://one.com", opt);
|
|
|
|
c1.Down = false;
|
|
|
|
const c2 = new Connection("wss://two.com", opt);
|
|
|
|
c2.Down = false;
|
|
|
|
const c3 = new Connection("wss://three.com", opt);
|
|
|
|
c3.Down = false;
|
|
|
|
|
|
|
|
q.sendToRelay(c1);
|
|
|
|
q.sendToRelay(c2);
|
|
|
|
q.sendToRelay(c3);
|
|
|
|
|
|
|
|
expect(q.progress).toBe(0);
|
2023-04-06 21:37:40 +00:00
|
|
|
q.eose(q.id, c1);
|
2023-03-29 10:40:05 +00:00
|
|
|
expect(q.progress).toBe(1 / 3);
|
2023-04-06 21:37:40 +00:00
|
|
|
q.eose(q.id, c1);
|
2023-03-29 10:40:05 +00:00
|
|
|
expect(q.progress).toBe(1 / 3);
|
2023-04-06 21:37:40 +00:00
|
|
|
q.eose(q.id, c2);
|
2023-03-29 10:40:05 +00:00
|
|
|
expect(q.progress).toBe(2 / 3);
|
2023-04-06 21:37:40 +00:00
|
|
|
q.eose(q.id, c3);
|
2023-03-29 10:40:05 +00:00
|
|
|
expect(q.progress).toBe(1);
|
|
|
|
|
2023-05-24 16:17:17 +00:00
|
|
|
const qs = {
|
|
|
|
id: "test-1",
|
|
|
|
filters: [
|
2023-04-25 17:01:29 +00:00
|
|
|
{
|
|
|
|
kinds: [1],
|
|
|
|
authors: ["test-sub"],
|
|
|
|
},
|
|
|
|
],
|
2023-05-24 16:17:17 +00:00
|
|
|
} as QueryBase;
|
|
|
|
q.sendSubQueryToRelay(c1, qs);
|
2023-03-29 10:40:05 +00:00
|
|
|
|
2023-05-24 16:17:17 +00:00
|
|
|
expect(q.progress).toBe(3 / 4);
|
2023-04-06 21:37:40 +00:00
|
|
|
q.eose(qs.id, c1);
|
2023-03-29 10:40:05 +00:00
|
|
|
expect(q.progress).toBe(1);
|
2023-05-24 16:17:17 +00:00
|
|
|
q.sendSubQueryToRelay(c2, qs);
|
|
|
|
expect(q.progress).toBe(4 / 5);
|
2023-03-29 10:40:05 +00:00
|
|
|
});
|
|
|
|
});
|