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
This commit is contained in:
105
packages/booking-flow/lib/utils/calculateRegularPrice.test.ts
Normal file
105
packages/booking-flow/lib/utils/calculateRegularPrice.test.ts
Normal file
@@ -0,0 +1,105 @@
|
||||
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 },
|
||||
})
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user