test: keep portfolio metadata authoritative in cards
This commit is contained in:
@@ -123,11 +123,13 @@ function emptyProps() {
|
|||||||
describe("AccountPage states", () => {
|
describe("AccountPage states", () => {
|
||||||
it.each(
|
it.each(
|
||||||
["account-1", "all"].flatMap((accountId) =>
|
["account-1", "all"].flatMap((accountId) =>
|
||||||
["STOCK", "BOND"].map((type) => ({ accountId, type })),
|
["STOCK", "BOND"].flatMap((type) =>
|
||||||
|
[true, false].map((hasMetadata) => ({ accountId, type, hasMetadata })),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
)(
|
)(
|
||||||
"links name and logo to the exact issue in $accountId for $type",
|
"keeps portfolio metadata authoritative and links the exact issue in $accountId for $type (metadata: $hasMetadata)",
|
||||||
async ({ accountId, type }) => {
|
async ({ accountId, type, hasMetadata }) => {
|
||||||
const collection = type === "STOCK" ? "stocks" : "bonds";
|
const collection = type === "STOCK" ? "stocks" : "bonds";
|
||||||
const slug = type === "STOCK" ? "SBERP" : "SU26238RMFS4";
|
const slug = type === "STOCK" ? "SBERP" : "SU26238RMFS4";
|
||||||
const uid = "c190ff1f-1447-4227-b543-316332699ca5";
|
const uid = "c190ff1f-1447-4227-b543-316332699ca5";
|
||||||
@@ -136,8 +138,9 @@ describe("AccountPage states", () => {
|
|||||||
...portfolio.positions[0],
|
...portfolio.positions[0],
|
||||||
type,
|
type,
|
||||||
instrumentUid: uid,
|
instrumentUid: uid,
|
||||||
ticker: slug,
|
ticker: hasMetadata ? slug : null,
|
||||||
displayName: "Сбербанк привилегированные",
|
displayName: hasMetadata ? "Сбербанк привилегированные" : "FIGI-2",
|
||||||
|
logoName: hasMetadata ? "vtoraya.png" : null,
|
||||||
};
|
};
|
||||||
server.use(
|
server.use(
|
||||||
http.get("*/api/v1/brokerage-accounts/:accountId/portfolio", () =>
|
http.get("*/api/v1/brokerage-accounts/:accountId/portfolio", () =>
|
||||||
@@ -154,7 +157,14 @@ describe("AccountPage states", () => {
|
|||||||
),
|
),
|
||||||
http.get(`*/api/v1/${collection}/:uid`, () => {
|
http.get(`*/api/v1/${collection}/:uid`, () => {
|
||||||
requests();
|
requests();
|
||||||
return HttpResponse.json({ instrumentUid: uid, slug });
|
return HttpResponse.json({
|
||||||
|
instrumentUid: uid,
|
||||||
|
slug,
|
||||||
|
name: "Название из карточки инструмента",
|
||||||
|
ticker: "OTHER-TICKER",
|
||||||
|
isin: "OTHER-ISIN",
|
||||||
|
logoName: "other.png",
|
||||||
|
});
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
configureTestAuth();
|
configureTestAuth();
|
||||||
@@ -171,6 +181,19 @@ describe("AccountPage states", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
expect(requests).toHaveBeenCalledTimes(type === "STOCK" ? 1 : 0);
|
expect(requests).toHaveBeenCalledTimes(type === "STOCK" ? 1 : 0);
|
||||||
|
expect(
|
||||||
|
screen.queryByText("Название из карточки инструмента"),
|
||||||
|
).not.toBeInTheDocument();
|
||||||
|
expect(
|
||||||
|
screen.queryByText(/OTHER-TICKER|OTHER-ISIN/),
|
||||||
|
).not.toBeInTheDocument();
|
||||||
|
const logo = screen.queryByRole("img", { name: position.displayName });
|
||||||
|
if (hasMetadata)
|
||||||
|
expect(logo).toHaveAttribute(
|
||||||
|
"src",
|
||||||
|
"https://invest-brands.cdn-tinkoff.ru/vtorayax160.png",
|
||||||
|
);
|
||||||
|
else expect(logo).not.toBeInTheDocument();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user