add cart tests
This commit is contained in:
parent
689c0ad67c
commit
dc850f210d
@ -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",
|
||||
|
||||
1024
src/utils/calcCart/calcCart.test.ts
Normal file
1024
src/utils/calcCart/calcCart.test.ts
Normal file
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) {
|
||||
Loading…
Reference in New Issue
Block a user