add cart tests

This commit is contained in:
nflnkr 2023-08-04 16:04:19 +03:00
parent 689c0ad67c
commit dc850f210d
8 changed files with 1034 additions and 12 deletions

@ -48,8 +48,8 @@
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"test:cart": "craco test src/kitUI/Cart --watchAll=false",
"test": "craco test --env=node --transformIgnorePatterns \"node_modules/(?!@frontend)/\"",
"test:cart": "craco test src/utils/calcCart --transformIgnorePatterns \"node_modules/(?!@frontend)/\"",
"test:cypress": "start-server-and-test start http://localhost:3000 cypress",
"cypress": "cypress open",
"eject": "craco eject"

@ -1,4 +1,3 @@
// @ts-nocheck конфликт типов jest и cypress
import axios from "axios";
const message = "Artem";

@ -22,7 +22,7 @@ import { requestPrivilegies } from "@root/services/privilegies.service";
import { requestDiscounts } from "@root/services/discounts.service";
import { DiscountTooltip } from "./DiscountTooltip";
import CartItemRow from "./CartItemRow";
import { calcCart, findDiscountFactor, formatDiscountFactor } from "@root/utils/calcCart";
import { calcCart, findDiscountFactor, formatDiscountFactor } from "@root/utils/calcCart/calcCart";
import { Discount } from "@frontend/kitui";
import { currencyFormatter } from "@root/utils/currencyFormatter";

@ -1,6 +1,6 @@
import { Tooltip, Typography } from "@mui/material";
import { Discount } from "@frontend/kitui";
import { formatDiscountFactor, findDiscountFactor } from "@root/utils/calcCart";
import { formatDiscountFactor, findDiscountFactor } from "@root/utils/calcCart/calcCart";
interface Props {

@ -18,7 +18,7 @@ import { deleteDiscount } from "@root/api/discounts";
import { GridSelectionModel } from "@mui/x-data-grid";
import { requestDiscounts } from "@root/services/discounts.service";
import AutorenewIcon from "@mui/icons-material/Autorenew";
import { formatDiscountFactor } from "@root/utils/calcCart";
import { formatDiscountFactor } from "@root/utils/calcCart/calcCart";
const columns: GridColDef[] = [
// {

@ -32,7 +32,7 @@ const columns: GridColDef<Tariff, string | number>[] = [
{ field: "privilegeName", headerName: "Привилегия", width: 150, valueGetter: ({ row }) => row.privilegies[0].name },
{ field: "type", headerName: "Единица", width: 100, valueGetter: ({ row }) => row.privilegies[0].type },
{ field: "pricePerUnit", headerName: "Цена за ед.", width: 100, valueGetter: ({ row }) => row.privilegies[0].price },
{ field: "customPricePerUnit", headerName: "Кастомная цена", width: 130, valueGetter: ({ row }) => row.isCustom ? "Да" : "Нет" },
{ field: "isCustom", headerName: "Кастомная цена", width: 130, valueGetter: ({ row }) => row.isCustom ? "Да" : "Нет" },
{ field: "total", headerName: "Сумма", width: 60, valueGetter: ({ row }) => getTariffPrice(row) },
{
field: "delete",

File diff suppressed because it is too large Load Diff

@ -17,16 +17,15 @@ export function calcCart(
allAppliedDiscounts: [],
};
const serviceHasNonCustomTariffMap: Record<string, boolean | undefined> = {};
const serviceTariffType: Record<string, number> = {};
tariffs.forEach(tariff => {
if (tariff.price && tariff.price > 0) cartData.priceBeforeDiscounts += tariff.price;
tariff.privilegies.forEach(privilege => {
if (
serviceHasNonCustomTariffMap[privilege.serviceKey] === true
&& tariff.isCustom
) throw new Error("Если взят готовый тариф, то кастомный на этот сервис сделать уже нельзя");
serviceTariffType[privilege.serviceKey] ??= +tariff.isCustom;
const isIncompatibleTariffs = serviceTariffType[privilege.serviceKey] ^ +tariff.isCustom
if (isIncompatibleTariffs) throw new Error("Если взят готовый тариф, то кастомный на этот сервис сделать уже нельзя");
let serviceData = cartData.services.find(service => service.serviceKey === privilege.serviceKey);
if (!serviceData) {