refactor: simplify finance view models
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
export { toInstrumentEventRows } from "./model/operation-rows";
|
||||
export { section, type SectionState } from "./model/section";
|
||||
export { useInstrumentParameters } from "./model/useInstrumentParameters";
|
||||
export { InstrumentChart } from "./ui/InstrumentChart/InstrumentChart.view";
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
import { expect, it } from "vitest";
|
||||
|
||||
import type { BrokerageOperation } from "@/entities/broker-operation";
|
||||
|
||||
import { toInstrumentEventRows } from "./operation-rows";
|
||||
|
||||
const operation: BrokerageOperation = {
|
||||
accruedInterest: null,
|
||||
category: "trade",
|
||||
commission: null,
|
||||
description: "Покупка",
|
||||
figi: null,
|
||||
id: "first",
|
||||
instrumentType: "stock",
|
||||
instrumentUid: "uid",
|
||||
logoName: null,
|
||||
occurredAt: "2026-01-01T00:00:00Z",
|
||||
payment: null,
|
||||
price: null,
|
||||
quantity: null,
|
||||
ticker: null,
|
||||
type: "OPERATION_TYPE_BUY",
|
||||
};
|
||||
|
||||
it("fills only missing identity without changing rows or their order", () => {
|
||||
const items = [operation, {
|
||||
...operation,
|
||||
id: "second",
|
||||
logoName: "",
|
||||
ticker: "own",
|
||||
}];
|
||||
|
||||
const original = structuredClone(items);
|
||||
expect(toInstrumentEventRows(items, {
|
||||
logoName: "fallback.png",
|
||||
ticker: "fallback",
|
||||
})).toEqual([
|
||||
{ ...operation, logoName: "fallback.png", ticker: "fallback" },
|
||||
items[1],
|
||||
]);
|
||||
expect(items).toEqual(original);
|
||||
expect(toInstrumentEventRows(items)).toEqual(items);
|
||||
expect(toInstrumentEventRows()).toEqual([]);
|
||||
});
|
||||
@@ -0,0 +1,14 @@
|
||||
import type { BrokerageOperation } from "@/entities/broker-operation";
|
||||
|
||||
function toInstrumentEventRows(
|
||||
items: BrokerageOperation[] = [],
|
||||
instrument?: Pick<BrokerageOperation, "logoName" | "ticker">,
|
||||
): BrokerageOperation[] {
|
||||
return items.map(item => ({
|
||||
...item,
|
||||
logoName: item.logoName ?? instrument?.logoName ?? null,
|
||||
ticker: item.ticker ?? instrument?.ticker ?? null,
|
||||
}));
|
||||
}
|
||||
|
||||
export { toInstrumentEventRows };
|
||||
Reference in New Issue
Block a user