59 lines
1.7 KiB
TypeScript
59 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "bun:test";
|
|
import { parseOptionPrintQuery } from "../src/option-queries";
|
|
|
|
describe("parseOptionPrintQuery", () => {
|
|
it("keeps broad option flow filters for non-contract requests", () => {
|
|
const url = new URL(
|
|
"http://localhost/prints/options?view=signal&security=stock&side=A&type=call&min_notional=500000&underlying_ids=AAPL,MSFT"
|
|
);
|
|
|
|
expect(parseOptionPrintQuery(url)).toEqual({
|
|
scope: {
|
|
underlyingIds: ["AAPL", "MSFT"],
|
|
optionContractId: undefined
|
|
},
|
|
flowFilters: {
|
|
view: "signal",
|
|
securityTypes: ["stock"],
|
|
nbboSides: ["A"],
|
|
optionTypes: ["call"],
|
|
minNotional: 500000
|
|
},
|
|
storageFilters: {
|
|
view: "signal",
|
|
security: "stock",
|
|
nbboSides: ["A"],
|
|
optionTypes: ["call"],
|
|
minNotional: 500000,
|
|
underlyingIds: ["AAPL", "MSFT"],
|
|
optionContractId: undefined
|
|
},
|
|
isContractDrilldown: false
|
|
});
|
|
});
|
|
|
|
it("switches contract requests to raw contract-only storage filters", () => {
|
|
const url = new URL(
|
|
"http://localhost/replay/options?view=signal&security=stock&side=A&type=call&min_notional=500000&underlying_id=AAPL&option_contract_id=AAPL-2025-01-17-200-C"
|
|
);
|
|
|
|
expect(parseOptionPrintQuery(url)).toEqual({
|
|
scope: {
|
|
underlyingIds: ["AAPL"],
|
|
optionContractId: "AAPL-2025-01-17-200-C"
|
|
},
|
|
flowFilters: {
|
|
view: "signal",
|
|
securityTypes: ["stock"],
|
|
nbboSides: ["A"],
|
|
optionTypes: ["call"],
|
|
minNotional: 500000
|
|
},
|
|
storageFilters: {
|
|
view: "raw",
|
|
optionContractId: "AAPL-2025-01-17-200-C"
|
|
},
|
|
isContractDrilldown: true
|
|
});
|
|
});
|
|
});
|