Files
rea/src/domain/analysisView/environmentStateQueryProjection.test.ts
T

34 lines
1018 B
TypeScript
Raw Normal View History

import { expect, it } from "vitest";
import { projectsFields, selectsSomeFields } from "./environmentStateRules.js";
import { queryValues } from "./environmentStateVariants.js";
it("uses decoded names while retaining every recorded query value in order", () => {
expect(
queryValues(
"?%66ields=*&fields=id&fields=two+words&=empty&flag&fields=%FF",
),
).toEqual(
new Map([
["fields", ["*", "id", "two words", "\uFFFD"]],
["", ["empty"]],
["flag", [""]],
]),
);
});
it.each([
[undefined, false, false],
["?q=fields%3Did", false, false],
["?%66ields=%2A", true, false],
["?%66ields=%2A&fields=id", true, true],
["?fields%5Barticle%5D=", true, true],
["?%24SELECT=%2A", true, false],
["?fields=%FF", true, true],
["??fields=id", false, false],
] as const)(
"preserves projection meaning for recorded query %s",
(query, projects, selects) => {
expect(projectsFields(query)).toBe(projects);
expect(selectsSomeFields(query)).toBe(selects);
},
);