Files
web/packages/booking-flow/lib/utils/calculateRegularPrice.test.ts
Anton Gunnarsson ba58ae6245 Merged in chore/regular-price-tests (pull request #3075)
chore: Add tests for regular price calculations

* Add tests for calculateRegularPrice

* Add tests for getRegularPrice

* Add multiroom test


Approved-by: Joakim Jäderberg
Approved-by: Linus Flood
2025-11-10 08:04:52 +00:00

106 lines
3.3 KiB
TypeScript

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 },
})
})
})