refactor!: support RUB only (WealthLedger/main#55) (#168)
This commit was merged in pull request #168.
This commit is contained in:
@@ -258,17 +258,10 @@ function setup(
|
||||
}
|
||||
|
||||
describe("stock page", () => {
|
||||
it("preserves unknown and unambiguous currencies with compact, ratio and percent formatting", async () => {
|
||||
it("formats RUB money, ratio and percent metrics", async () => {
|
||||
setup(
|
||||
{
|
||||
metrics: [
|
||||
{
|
||||
currency: null,
|
||||
key: "marketCapitalization",
|
||||
period: null,
|
||||
unit: "money",
|
||||
value: 1_234_567.89,
|
||||
},
|
||||
{
|
||||
currency: "RUB",
|
||||
key: "revenueTtm",
|
||||
@@ -276,20 +269,6 @@ describe("stock page", () => {
|
||||
unit: "money",
|
||||
value: 1_234_567.89,
|
||||
},
|
||||
{
|
||||
currency: "USD",
|
||||
key: "ebitdaTtm",
|
||||
period: "TTM",
|
||||
unit: "money",
|
||||
value: 1_234_567.89,
|
||||
},
|
||||
{
|
||||
currency: "CAD",
|
||||
key: "netIncomeTtm",
|
||||
period: "TTM",
|
||||
unit: "money",
|
||||
value: 1_234_567.89,
|
||||
},
|
||||
{
|
||||
currency: null,
|
||||
key: "peRatioTtm",
|
||||
@@ -307,14 +286,8 @@ describe("stock page", () => {
|
||||
],
|
||||
},
|
||||
);
|
||||
expect(await screen.findByText("1,23 млн валюта неизвестна")).toBeVisible();
|
||||
for (const value of [
|
||||
"1,23 млн ₽",
|
||||
"1,23 млн USD",
|
||||
"1,23 млн CAD",
|
||||
"5,68 ×",
|
||||
"12,35 %",
|
||||
])
|
||||
expect(await screen.findByText("1,23 млн ₽")).toBeVisible();
|
||||
for (const value of ["5,68 ×", "12,35 %"])
|
||||
expect(screen.getByText(value)).toBeVisible();
|
||||
});
|
||||
it("opens a direct ticker URL and uses its resolved UID for market and personal requests", async () => {
|
||||
|
||||
@@ -37,7 +37,7 @@ const StockCompany: FC<StockCompanyProps> = (props) => {
|
||||
{props.company.metrics.map((metric) => {
|
||||
const label = [t(`stock.metrics.${metric.key}`), metric.period].filter(Boolean).join(" · ");
|
||||
const formatter = metric.unit === "money" ? compactMetricFormatter : metricFormatter;
|
||||
const value = `${formatter.format(metric.value)} ${metricUnit(metric, t("stock.currencyUnknown"))}`;
|
||||
const value = `${formatter.format(metric.value)} ${metricUnit(metric)}`;
|
||||
|
||||
return (
|
||||
<InstrumentMetric key={metric.key} label={label} value={value} />
|
||||
@@ -89,14 +89,9 @@ const StockCompany: FC<StockCompanyProps> = (props) => {
|
||||
);
|
||||
};
|
||||
|
||||
function metricUnit(
|
||||
metric: NonNullable<StockPageVm["company"]>["metrics"][number],
|
||||
unknownCurrency: string,
|
||||
) {
|
||||
function metricUnit(metric: NonNullable<StockPageVm["company"]>["metrics"][number]) {
|
||||
if (metric.unit === "money")
|
||||
return metric.currency === "RUB"
|
||||
? "₽"
|
||||
: (metric.currency ?? unknownCurrency);
|
||||
return "₽";
|
||||
|
||||
return metric.unit === "percent" ? "%" : "×";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user