import { describe, expect, it } from "vitest" import { CurrencyEnum } from "@scandic-hotels/common/constants/currency" import { calculateRegularPrice } from "./calculateRegularPrice" describe("calculateRegularPrice", () => { it("returns total if useMemberRate is true and missing regularMemberPrice", () => { const result = calculateRegularPrice({ total: { local: { price: 1, currency: CurrencyEnum.SEK }, }, regularMemberPrice: undefined, regularPublicPrice: { pricePerStay: 10 }, useMemberRate: true, }) expect(result).toEqual({ local: { price: 1, currency: CurrencyEnum.SEK }, }) }) it("returns total if useMemberRate is false and missing regularPublicPrice", () => { const result = calculateRegularPrice({ total: { local: { price: 1, currency: CurrencyEnum.SEK }, }, regularMemberPrice: { pricePerStay: 10 }, regularPublicPrice: undefined, useMemberRate: false, }) expect(result).toEqual({ local: { price: 1, currency: CurrencyEnum.SEK }, }) }) it("calculates regularPrice for regularPublicPrice", () => { const result = calculateRegularPrice({ total: { local: { price: 1, currency: CurrencyEnum.SEK }, }, regularMemberPrice: undefined, regularPublicPrice: { pricePerStay: 10 }, useMemberRate: false, }) expect(result).toEqual({ local: { price: 1, regularPrice: 10, currency: CurrencyEnum.SEK }, }) }) it("calculates regularPrice for regularPublicPrice with regularPricePerStay", () => { const result = calculateRegularPrice({ total: { local: { price: 1, currency: CurrencyEnum.SEK }, }, regularMemberPrice: undefined, regularPublicPrice: { pricePerStay: 10, regularPricePerStay: 20 }, useMemberRate: false, }) expect(result).toEqual({ local: { price: 1, regularPrice: 20, currency: CurrencyEnum.SEK }, }) }) it("calculates regularPrice for member with regularMemberPrice", () => { const result = calculateRegularPrice({ total: { local: { price: 1, currency: CurrencyEnum.SEK }, }, regularMemberPrice: { pricePerStay: 10 }, regularPublicPrice: undefined, useMemberRate: true, }) expect(result).toEqual({ local: { price: 1, regularPrice: 10, currency: CurrencyEnum.SEK }, }) }) it("calculates regularPrice for member with regularPublicPrice and regularMemberRate", () => { const result = calculateRegularPrice({ total: { local: { price: 1, currency: CurrencyEnum.SEK }, }, regularMemberPrice: { pricePerStay: 15 }, regularPublicPrice: { pricePerStay: 10 }, useMemberRate: true, }) expect(result).toEqual({ local: { price: 1, regularPrice: 10, currency: CurrencyEnum.SEK }, }) }) it("calculates regularPrice for member with regularMemberRate with pricePerStay", () => { const result = calculateRegularPrice({ total: { local: { price: 1, currency: CurrencyEnum.SEK }, }, regularMemberPrice: { pricePerStay: 15, regularPricePerStay: 20 }, regularPublicPrice: undefined, useMemberRate: true, }) expect(result).toEqual({ local: { price: 1, regularPrice: 20, currency: CurrencyEnum.SEK }, }) }) })