-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpayment-reports.service.spec.ts
More file actions
88 lines (80 loc) · 2.81 KB
/
Copy pathpayment-reports.service.spec.ts
File metadata and controls
88 lines (80 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import { DbService } from "../../db/db.service";
import { SqlLoaderService } from "../../common/sql-loader.service";
import { PaymentReportsService } from "./payment-reports.service";
describe("PaymentReportsService", () => {
let service: PaymentReportsService;
let db: { query: jest.Mock };
let sql: { load: jest.Mock };
beforeEach(() => {
db = {
query: jest.fn().mockResolvedValue([
{
payment_created_at: new Date("2024-01-15T12:00:00.000Z"),
payment_id: "payment-123",
payment_description: "Challenge payout",
challenge_id: "3001",
payment_status: "OWED",
payment_type: "Challenge Payment",
payee_handle: "tourist",
payment_method: "PayPal",
billing_account_name: "BA One",
customer_name: "Client One",
reporting_account_name: "End Customer One",
member_id: "4001",
challenge_created_date: "2024-01-01",
user_payment_gross_amount: "150.50",
},
]),
};
sql = {
load: jest.fn().mockReturnValue("SELECT 1"),
};
service = new PaymentReportsService(
db as unknown as DbService,
sql as unknown as SqlLoaderService,
);
});
it("loads the payment SQL and maps the accrual rows", async () => {
await expect(
service.getMemberPaymentAccrual("2024-01-01", "2024-01-31", [
"Challenge Payment",
]),
).resolves.toEqual([
{
paymentCreatedAt: "2024-01-15T12:00:00.000Z",
paymentId: "payment-123",
paymentDescription: "Challenge payout",
challengeId: "3001",
paymentStatus: "OWED",
paymentType: "Challenge Payment",
payeeHandle: "tourist",
payeePaymentMethod: "PayPal",
billingAccountName: "BA One",
customerName: "Client One",
reportingAccountName: "End Customer One",
memberId: "4001",
challengeCreatedAt: "2024-01-01",
userPaymentGrossAmount: 150.5,
},
]);
expect(sql.load).toHaveBeenCalledWith(
"reports/payment/member-payment-accrual.sql",
);
expect(db.query).toHaveBeenCalledWith("SELECT 1", [
"2024-01-01",
"2024-01-31",
["Challenge Payment"],
]);
});
it("uses the full inclusive end date in the payment SQL", () => {
const paymentSql = new SqlLoaderService().load(
"reports/payment/member-payment-accrual.sql",
);
expect(paymentSql).toContain("NULLIF($1, '')::date AS start_date");
expect(paymentSql).toContain("NULLIF($2, '')::date AS end_date");
expect(paymentSql).toContain("p.created_at >= pr.start_date");
expect(paymentSql).toContain("pr.end_date + INTERVAL '1 day'");
expect(paymentSql).not.toContain("p.created_at <= pr.end_date");
expect(paymentSql).not.toContain("DATE_TRUNC('day', pr.end_date)");
});
});