# Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors # MIT License. See license.txt import unittest import frappe from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile from erpnext.selling.page.point_of_sale.point_of_sale import get_items from erpnext.stock.doctype.item.test_item import make_item from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry class TestPointOfSale(unittest.TestCase): @classmethod def setUpClass(cls) -> None: frappe.db.savepoint("before_test_point_of_sale") @classmethod def tearDownClass(cls) -> None: frappe.db.rollback(save_point="before_test_point_of_sale") def test_item_search(self): """ Test Stock and Service Item Search. """ pos_profile = make_pos_profile(name="Test POS Profile for Search") item1 = make_item("Test Search Stock Item", {"is_stock_item": 1}) make_stock_entry( item_code="Test Search Stock Item", qty=10, to_warehouse="_Test Warehouse - _TC", rate=500, ) result = get_items( start=0, page_length=20, price_list=None, item_group=item1.item_group, pos_profile=pos_profile.name, search_term="Test Search Stock Item", ) filtered_items = result.get("items") self.assertEqual(len(filtered_items), 1) self.assertEqual(filtered_items[0]["item_code"], item1.item_code) self.assertEqual(filtered_items[0]["actual_qty"], 10) item2 = make_item("Test Search Service Item", {"is_stock_item": 0}) result = get_items( start=0, page_length=20, price_list=None, item_group=item2.item_group, pos_profile=pos_profile.name, search_term="Test Search Service Item", ) filtered_items = result.get("items") self.assertEqual(len(filtered_items), 1) self.assertEqual(filtered_items[0]["item_code"], item2.item_code)