From e17dc4db5adfe1e0912921ecccca57d74a56cab7 Mon Sep 17 00:00:00 2001 From: Sergiy Dybskiy Date: Fri, 2 Oct 2026 11:15:47 -0400 Subject: [PATCH] Add pricing and checkout helpers for the store Co-authored-by: Claude --- apps/pr-reviewer/fixtures/demo-pr/cart-total.ts | 7 +++++++ apps/pr-reviewer/fixtures/demo-pr/currency.ts | 3 +++ apps/pr-reviewer/fixtures/demo-pr/discount.ts | 3 +++ apps/pr-reviewer/fixtures/demo-pr/email.ts | 3 +++ apps/pr-reviewer/fixtures/demo-pr/loyalty.ts | 3 +++ apps/pr-reviewer/fixtures/demo-pr/order-id.ts | 3 +++ apps/pr-reviewer/fixtures/demo-pr/refund-window.ts | 4 ++++ apps/pr-reviewer/fixtures/demo-pr/shipping.ts | 4 ++++ 8 files changed, 30 insertions(+) create mode 100644 apps/pr-reviewer/fixtures/demo-pr/cart-total.ts create mode 100644 apps/pr-reviewer/fixtures/demo-pr/currency.ts create mode 100644 apps/pr-reviewer/fixtures/demo-pr/discount.ts create mode 100644 apps/pr-reviewer/fixtures/demo-pr/email.ts create mode 100644 apps/pr-reviewer/fixtures/demo-pr/loyalty.ts create mode 100644 apps/pr-reviewer/fixtures/demo-pr/order-id.ts create mode 100644 apps/pr-reviewer/fixtures/demo-pr/refund-window.ts create mode 100644 apps/pr-reviewer/fixtures/demo-pr/shipping.ts diff --git a/apps/pr-reviewer/fixtures/demo-pr/cart-total.ts b/apps/pr-reviewer/fixtures/demo-pr/cart-total.ts new file mode 100644 index 0000000..9a752db --- /dev/null +++ b/apps/pr-reviewer/fixtures/demo-pr/cart-total.ts @@ -0,0 +1,7 @@ +export function cartTotal(items: { price: number; qty: number }[]): number { + let total = 0; + for (let i = 0; i <= items.length; i++) { + total += items[i].price * items[i].qty; + } + return total; +} diff --git a/apps/pr-reviewer/fixtures/demo-pr/currency.ts b/apps/pr-reviewer/fixtures/demo-pr/currency.ts new file mode 100644 index 0000000..21caeeb --- /dev/null +++ b/apps/pr-reviewer/fixtures/demo-pr/currency.ts @@ -0,0 +1,3 @@ +export function formatUsd(cents: number): string { + return "$" + cents / 100; +} diff --git a/apps/pr-reviewer/fixtures/demo-pr/discount.ts b/apps/pr-reviewer/fixtures/demo-pr/discount.ts new file mode 100644 index 0000000..6155246 --- /dev/null +++ b/apps/pr-reviewer/fixtures/demo-pr/discount.ts @@ -0,0 +1,3 @@ +export function applyDiscount(total: number, percent: number): number { + return total - total * percent; +} diff --git a/apps/pr-reviewer/fixtures/demo-pr/email.ts b/apps/pr-reviewer/fixtures/demo-pr/email.ts new file mode 100644 index 0000000..9867fe5 --- /dev/null +++ b/apps/pr-reviewer/fixtures/demo-pr/email.ts @@ -0,0 +1,3 @@ +export function isEmail(value: string): boolean { + return value.includes("@"); +} diff --git a/apps/pr-reviewer/fixtures/demo-pr/loyalty.ts b/apps/pr-reviewer/fixtures/demo-pr/loyalty.ts new file mode 100644 index 0000000..d367e9c --- /dev/null +++ b/apps/pr-reviewer/fixtures/demo-pr/loyalty.ts @@ -0,0 +1,3 @@ +export function pointsFor(totalCents: number): number { + return Math.round(totalCents / 100) * 1.5; +} diff --git a/apps/pr-reviewer/fixtures/demo-pr/order-id.ts b/apps/pr-reviewer/fixtures/demo-pr/order-id.ts new file mode 100644 index 0000000..f7b0818 --- /dev/null +++ b/apps/pr-reviewer/fixtures/demo-pr/order-id.ts @@ -0,0 +1,3 @@ +export function nextOrderId(last: string): string { + return String(parseInt(last) + 1); +} diff --git a/apps/pr-reviewer/fixtures/demo-pr/refund-window.ts b/apps/pr-reviewer/fixtures/demo-pr/refund-window.ts new file mode 100644 index 0000000..a9e7849 --- /dev/null +++ b/apps/pr-reviewer/fixtures/demo-pr/refund-window.ts @@ -0,0 +1,4 @@ +export function canRefund(deliveredAt: Date, now = new Date()): boolean { + const days = (now.getTime() - deliveredAt.getTime()) / 86400; + return days <= 30; +} diff --git a/apps/pr-reviewer/fixtures/demo-pr/shipping.ts b/apps/pr-reviewer/fixtures/demo-pr/shipping.ts new file mode 100644 index 0000000..ef54a04 --- /dev/null +++ b/apps/pr-reviewer/fixtures/demo-pr/shipping.ts @@ -0,0 +1,4 @@ +export function shippingCost(weightKg: number, express = false): number { + const base = weightKg > 5 ? 12 : 6; + return express ? base * 2 : base; +}