Files
pleno-vue/tests/unit/invoicing-billing-period-calculations.spec.js
T
Jeppe Bundgaard b39b458f4f Add .prettierrc.json and refactor test files for improved formatting consistency:
- Introduced `.prettierrc.json` to enforce consistent code formatting across the project.
- Updated unit and e2e test files to address formatting issues, improve readability, and ensure alignment with the new Prettier configuration.
2026-04-13 09:13:27 +02:00

81 lines
2.6 KiB
JavaScript

import { describe, expect, it } from "vitest";
import {
getCustomerNetAmount,
getViewTotals,
sumTransactions,
} from "@/views/dashboards/superUserDashboard/InvoicingBillingPeriod/imports/invoicingBillingPeriodCalculations.js";
describe("invoicing billing period calculations", () => {
it("sums transactions and excludes excluded entries by default", () => {
const sum = sumTransactions([
{ amount: 100, excluded: false },
{ amount: 50, excluded: true },
{ amount: "25.5", excluded: false },
]);
expect(sum).toBe(125.5);
});
it("supports booked-only transaction summing", () => {
const sum = sumTransactions(
[
{ amount: 100, booked: true, excluded: false },
{ amount: 30, booked: false, excluded: false },
{ amount: 20, booked: true, excluded: true },
],
{ bookedOnly: true }
);
expect(sum).toBe(100);
});
it("uses fixed pricing when requested and available", () => {
const value = getCustomerNetAmount(
{ transactions: [{ amount: 99, excluded: false }] },
{ includeFixedPricing: true, includeTransactions: true, includeVehicleSubscriptions: false },
{ meta: { fixed_pricing: { price: 250 } } }
);
expect(value).toBe("250.00");
});
it("falls back to transaction total when fixed pricing is not included", () => {
const value = getCustomerNetAmount(
{
transactions: [
{ amount: 100, excluded: false },
{ amount: 35.2, excluded: false },
],
},
{ includeFixedPricing: false, includeTransactions: true, includeVehicleSubscriptions: false },
{ meta: { fixed_pricing: { price: 999 } } }
);
expect(value).toBe("135.20");
});
it("returns zero amount when all calculation toggles are off", () => {
const value = getCustomerNetAmount(
{ transactions: [{ amount: 100, excluded: false }] },
{ includeFixedPricing: false, includeTransactions: false, includeVehicleSubscriptions: false }
);
expect(value).toBe("0.00");
});
it("computes total/booked/notBooked view totals", () => {
const totals = getViewTotals([
{
transactions: [
{ amount: 100, booked: true, excluded: false },
{ amount: 50, booked: false, excluded: false },
{ amount: 25, booked: true, excluded: true },
],
},
{
meta: { fixed_pricing: { price: 200 } },
transactions: [{ amount: 80, booked: true, excluded: false }],
},
]);
expect(totals.total).toBe(350);
expect(totals.booked).toBe(180);
expect(totals.notBooked).toBe(170);
});
});