import { RawReqFilter } from "System"; import { describe, expect } from "@jest/globals"; import { diffFilters, expandFilter } from "./RequestSplitter"; describe("RequestSplitter", () => { test("single filter add value", () => { const a: Array = [{ kinds: [0], authors: ["a"] }]; const b: Array = [{ kinds: [0], authors: ["a", "b"] }]; const diff = diffFilters(a, b); expect(diff).toEqual({ filters: [{ kinds: [0], authors: ["b"] }], changed: true }); }); test("single filter remove value", () => { const a: Array = [{ kinds: [0], authors: ["a"] }]; const b: Array = [{ kinds: [0], authors: ["b"] }]; const diff = diffFilters(a, b); expect(diff).toEqual({ filters: [{ kinds: [0], authors: ["b"] }], changed: true }); }); test("single filter change critical key", () => { const a: Array = [{ kinds: [0], authors: ["a"], since: 100 }]; const b: Array = [{ kinds: [0], authors: ["a", "b"], since: 101 }]; const diff = diffFilters(a, b); expect(diff).toEqual({ filters: [{ kinds: [0], authors: ["a", "b"], since: 101 }], changed: true }); }); test("multiple filter add value", () => { const a: Array = [ { kinds: [0], authors: ["a"] }, { kinds: [69], authors: ["a"] }, ]; const b: Array = [ { kinds: [0], authors: ["a", "b"] }, { kinds: [69], authors: ["a", "c"] }, ]; const diff = diffFilters(a, b); expect(diff).toEqual({ filters: [ { kinds: [0], authors: ["b"] }, { kinds: [69], authors: ["c"] }, ], changed: true, }); }); test("multiple filter remove value", () => { const a: Array = [ { kinds: [0], authors: ["a"] }, { kinds: [69], authors: ["a"] }, ]; const b: Array = [ { kinds: [0], authors: ["b"] }, { kinds: [69], authors: ["c"] }, ]; const diff = diffFilters(a, b); expect(diff).toEqual({ filters: [ { kinds: [0], authors: ["b"] }, { kinds: [69], authors: ["c"] }, ], changed: true, }); }); test("add filter", () => { const a: Array = [{ kinds: [0], authors: ["a"] }]; const b: Array = [ { kinds: [0], authors: ["a"] }, { kinds: [69], authors: ["c"] }, ]; const diff = diffFilters(a, b); expect(diff).toEqual({ filters: [ { kinds: [0], authors: ["a"] }, { kinds: [69], authors: ["c"] }, ], changed: true, }); }); test("expand filter", () => { const a = { authors: ["a", "b", "c"], kinds: [1, 2, 3], ids: ["x", "y"], since: 99, limit: 10, }; expect(expandFilter(a)).toEqual([ { authors: ["a"], kinds: [1], ids: ["x"], since: 99, limit: 10 }, { authors: ["a"], kinds: [1], ids: ["y"], since: 99, limit: 10 }, { authors: ["a"], kinds: [2], ids: ["x"], since: 99, limit: 10 }, { authors: ["a"], kinds: [2], ids: ["y"], since: 99, limit: 10 }, { authors: ["a"], kinds: [3], ids: ["x"], since: 99, limit: 10 }, { authors: ["a"], kinds: [3], ids: ["y"], since: 99, limit: 10 }, { authors: ["b"], kinds: [1], ids: ["x"], since: 99, limit: 10 }, { authors: ["b"], kinds: [1], ids: ["y"], since: 99, limit: 10 }, { authors: ["b"], kinds: [2], ids: ["x"], since: 99, limit: 10 }, { authors: ["b"], kinds: [2], ids: ["y"], since: 99, limit: 10 }, { authors: ["b"], kinds: [3], ids: ["x"], since: 99, limit: 10 }, { authors: ["b"], kinds: [3], ids: ["y"], since: 99, limit: 10 }, { authors: ["c"], kinds: [1], ids: ["x"], since: 99, limit: 10 }, { authors: ["c"], kinds: [1], ids: ["y"], since: 99, limit: 10 }, { authors: ["c"], kinds: [2], ids: ["x"], since: 99, limit: 10 }, { authors: ["c"], kinds: [2], ids: ["y"], since: 99, limit: 10 }, { authors: ["c"], kinds: [3], ids: ["x"], since: 99, limit: 10 }, { authors: ["c"], kinds: [3], ids: ["y"], since: 99, limit: 10 }, ]); }); });