diff --git a/src/kitUI/Cart/calc.test.ts b/src/kitUI/Cart/calc.test.ts index 1688f55..b182ad5 100644 --- a/src/kitUI/Cart/calc.test.ts +++ b/src/kitUI/Cart/calc.test.ts @@ -1,7 +1,7 @@ - import { CartItem } from "@root/model/cart"; -import { Tariff } from "@root/model/tariff"; -import { User } from "@root/model/user"; -import { exampleCartValues, TestCase } from "@stores/mocks/exampleCartValues"; +import { CartItem } from "../../model/cart"; +import { SERVICE_LIST, Tariff } from "../../model/tariff"; +import { User } from "../../model/user"; +import { exampleCartValues, TestCase } from "../../stores/mocks/exampleCartValues"; import { calcCartData, createCartItem } from "./calc"; @@ -13,9 +13,12 @@ describe("cart tests", () => { const testCase = prepareTestCase(exampleCartValues.testCases[0]); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discounts); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -34,9 +37,12 @@ describe("cart tests", () => { }); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discountsWithoutTemplategen); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -55,9 +61,12 @@ describe("cart tests", () => { }); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discountsWithoutTemplategen); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -76,9 +85,12 @@ describe("cart tests", () => { }); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discountsWithoutTemplategen); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -97,9 +109,12 @@ describe("cart tests", () => { }); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discountsWithoutTemplategen); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -110,9 +125,12 @@ describe("cart tests", () => { const testCase = prepareTestCase(exampleCartValues.testCases[5]); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discounts); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -123,9 +141,12 @@ describe("cart tests", () => { const testCase = prepareTestCase(exampleCartValues.testCases[6]); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discounts); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -136,9 +157,12 @@ describe("cart tests", () => { const testCase = prepareTestCase(exampleCartValues.testCases[7]); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discounts); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -149,9 +173,12 @@ describe("cart tests", () => { const testCase = prepareTestCase(exampleCartValues.testCases[8]); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discounts); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -162,9 +189,12 @@ describe("cart tests", () => { const testCase = prepareTestCase(exampleCartValues.testCases[9]); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discounts, "ABCD"); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -175,9 +205,12 @@ describe("cart tests", () => { const testCase = prepareTestCase(exampleCartValues.testCases[10]); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discounts); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); @@ -188,9 +221,12 @@ describe("cart tests", () => { const testCase = prepareTestCase(exampleCartValues.testCases[11]); const cartTotal = calcCartData(testCase.user, testCase.cartItems, discounts); - const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscounts]; + const allEnvolvedDiscounts: string[] = [...cartTotal.envolvedCartDiscountIds]; cartTotal.items.forEach(cartItem => { - allEnvolvedDiscounts.push(...cartItem.envolvedDiscounts); + allEnvolvedDiscounts.push(...cartItem.envolvedDiscountIds); + }); + SERVICE_LIST.map(service => service.serviceKey).forEach(service => { + if (cartTotal.discountsByService[service]) allEnvolvedDiscounts.push(cartTotal.discountsByService[service]!._id); }); expect(allEnvolvedDiscounts.sort()).toEqual(testCase.expect.envolvedDiscounts.sort()); diff --git a/src/stores/mocks/exampleCartValues.ts b/src/stores/mocks/exampleCartValues.ts index 1c4903b..bf05c15 100644 --- a/src/stores/mocks/exampleCartValues.ts +++ b/src/stores/mocks/exampleCartValues.ts @@ -1114,9 +1114,10 @@ export const exampleCartValues: ExampleCartValues = { ] }, "expect": { - "price": 12000 * 0.985, + "price": 12000 * 0.985 * 0.96, "envolvedDiscounts": [ - "id4" + "id4", + "id31" ] } }, diff --git a/src/stores/mocks/user.ts b/src/stores/mocks/user.ts index d8d75a9..ea6f115 100644 --- a/src/stores/mocks/user.ts +++ b/src/stores/mocks/user.ts @@ -4,5 +4,5 @@ import { User } from "@root/model/user"; export const testUser: User = { "ID": "buddy", "Type": "", - "PurchasesAmount": 0, + "PurchasesAmount": 11000, }; \ No newline at end of file