From 68330843d8d04eb29d629973cef976f7ea88a9e6 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 26 Jun 2026 10:32:43 +0530 Subject: [PATCH] test: add coverage for Purchase Receipt Trends report Co-Authored-By: Claude Opus 4.8 (1M context) --- .../test_purchase_receipt_trends.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 erpnext/stock/report/purchase_receipt_trends/test_purchase_receipt_trends.py diff --git a/erpnext/stock/report/purchase_receipt_trends/test_purchase_receipt_trends.py b/erpnext/stock/report/purchase_receipt_trends/test_purchase_receipt_trends.py new file mode 100644 index 00000000000..87511222754 --- /dev/null +++ b/erpnext/stock/report/purchase_receipt_trends/test_purchase_receipt_trends.py @@ -0,0 +1,40 @@ +# Copyright (c) 2026, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +import frappe + +from erpnext.stock.doctype.item.test_item import make_item +from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt +from erpnext.stock.report.purchase_receipt_trends.purchase_receipt_trends import execute +from erpnext.tests.utils import ERPNextTestSuite + + +class TestPurchaseReceiptTrends(ERPNextTestSuite): + def run_report(self, **extra): + filters = frappe._dict( + { + "company": "_Test Company", + "fiscal_year": "_Test Fiscal Year 2026", + "period": "Yearly", + "based_on": "Item", + "group_by": "", + } + ) + filters.update(extra) + return execute(filters)[1] + + def test_receipt_qty_in_trend(self): + item = make_item(properties={"is_stock_item": 1, "is_purchase_item": 1}).name + make_purchase_receipt( + item_code=item, qty=10, rate=100, company="_Test Company", posting_date="2026-06-01" + ) + + data = self.run_report() + + # Row layout for based_on="Item", Yearly, no group_by: + # [item_code, item_name, currency, FY(Qty), FY(Amt), Total(Qty), Total(Amt)] + row = next(r for r in data if r[0] == item) + self.assertEqual(row[3], 10) # fiscal-year qty + self.assertEqual(row[4], 1000) # fiscal-year amount (10 * 100) + self.assertEqual(row[5], 10) # Total(Qty) + self.assertEqual(row[6], 1000) # Total(Amt)