mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-15 11:09:17 +00:00
Merge pull request #53948 from frappe/mergify/bp/version-16-hotfix/pr-53795
refactor(test): enforce ERPNextTestSuite across repo (backport #53795)
This commit is contained in:
@@ -15,7 +15,7 @@ from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_orde
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestAdvancePaymentLedgerEntry(AccountsTestMixin, ERPNextTestSuite):
|
class TestAdvancePaymentLedgerEntry(ERPNextTestSuite, AccountsTestMixin):
|
||||||
"""
|
"""
|
||||||
Integration tests for AdvancePaymentLedgerEntry.
|
Integration tests for AdvancePaymentLedgerEntry.
|
||||||
Use this class for testing interactions between multiple components.
|
Use this class for testing interactions between multiple components.
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestBankReconciliationTool(AccountsTestMixin, ERPNextTestSuite):
|
class TestBankReconciliationTool(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_customer()
|
self.create_customer()
|
||||||
|
|||||||
@@ -2,10 +2,11 @@
|
|||||||
# See license.txt
|
# See license.txt
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.tests import UnitTestCase
|
|
||||||
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestBankTransactionFees(UnitTestCase):
|
class TestBankTransactionFees(ERPNextTestSuite):
|
||||||
def test_included_fee_throws(self):
|
def test_included_fee_throws(self):
|
||||||
"""A fee that's part of a withdrawal cannot be bigger than the
|
"""A fee that's part of a withdrawal cannot be bigger than the
|
||||||
withdrawal itself."""
|
withdrawal itself."""
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestExchangeRateRevaluation(AccountsTestMixin, ERPNextTestSuite):
|
class TestExchangeRateRevaluation(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_usd_receivable_account()
|
self.create_usd_receivable_account()
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from erpnext.accounts.utils import run_ledger_health_checks
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestLedgerHealth(AccountsTestMixin, ERPNextTestSuite):
|
class TestLedgerHealth(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_customer()
|
self.create_customer()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestProcessStatementOfAccounts(AccountsTestMixin, ERPNextTestSuite):
|
class TestProcessStatementOfAccounts(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
frappe.db.set_single_value("Selling Settings", "validate_selling_price", 0)
|
frappe.db.set_single_value("Selling Settings", "validate_selling_price", 0)
|
||||||
letterhead = frappe.get_doc("Letter Head", "Company Letterhead - Grey")
|
letterhead = frappe.get_doc("Letter Head", "Company Letterhead - Grey")
|
||||||
|
|||||||
@@ -9,29 +9,25 @@ from frappe.utils import add_days, nowdate, today
|
|||||||
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
|
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
|
||||||
from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request
|
from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request
|
||||||
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
||||||
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|
||||||
from erpnext.accounts.utils import get_fiscal_year
|
from erpnext.accounts.utils import get_fiscal_year
|
||||||
from erpnext.stock.doctype.item.test_item import make_item
|
from erpnext.stock.doctype.item.test_item import make_item
|
||||||
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import get_gl_entries, make_purchase_receipt
|
from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import get_gl_entries, make_purchase_receipt
|
||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
class TestRepostAccountingLedger(ERPNextTestSuite):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
|
||||||
self.create_customer()
|
|
||||||
self.create_item()
|
|
||||||
frappe.db.set_single_value("Selling Settings", "validate_selling_price", 0)
|
frappe.db.set_single_value("Selling Settings", "validate_selling_price", 0)
|
||||||
update_repost_settings()
|
update_repost_settings()
|
||||||
|
|
||||||
def test_01_basic_functions(self):
|
def test_01_basic_functions(self):
|
||||||
si = create_sales_invoice(
|
si = create_sales_invoice(
|
||||||
item=self.item,
|
item="_Test Item",
|
||||||
company=self.company,
|
company="_Test Company",
|
||||||
customer=self.customer,
|
customer="_Test Customer",
|
||||||
debit_to=self.debit_to,
|
debit_to="Debtors - _TC",
|
||||||
parent_cost_center=self.cost_center,
|
parent_cost_center="Main - _TC",
|
||||||
cost_center=self.cost_center,
|
cost_center="Main - _TC",
|
||||||
rate=100,
|
rate=100,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -48,7 +44,7 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
|
|
||||||
# Test Validation Error
|
# Test Validation Error
|
||||||
ral = frappe.new_doc("Repost Accounting Ledger")
|
ral = frappe.new_doc("Repost Accounting Ledger")
|
||||||
ral.company = self.company
|
ral.company = "_Test Company"
|
||||||
ral.delete_cancelled_entries = True
|
ral.delete_cancelled_entries = True
|
||||||
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
|
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
|
||||||
ral.append(
|
ral.append(
|
||||||
@@ -65,7 +61,7 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
ral.save()
|
ral.save()
|
||||||
|
|
||||||
# manually set an incorrect debit amount in DB
|
# manually set an incorrect debit amount in DB
|
||||||
gle = frappe.db.get_all("GL Entry", filters={"voucher_no": si.name, "account": self.debit_to})
|
gle = frappe.db.get_all("GL Entry", filters={"voucher_no": si.name, "account": "Debtors - _TC"})
|
||||||
frappe.db.set_value("GL Entry", gle[0], "debit", 90)
|
frappe.db.set_value("GL Entry", gle[0], "debit", 90)
|
||||||
|
|
||||||
gl = qb.DocType("GL Entry")
|
gl = qb.DocType("GL Entry")
|
||||||
@@ -94,23 +90,23 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
|
|
||||||
def test_02_deferred_accounting_valiations(self):
|
def test_02_deferred_accounting_valiations(self):
|
||||||
si = create_sales_invoice(
|
si = create_sales_invoice(
|
||||||
item=self.item,
|
item="_Test Item",
|
||||||
company=self.company,
|
company="_Test Company",
|
||||||
customer=self.customer,
|
customer="_Test Customer",
|
||||||
debit_to=self.debit_to,
|
debit_to="Debtors - _TC",
|
||||||
parent_cost_center=self.cost_center,
|
parent_cost_center="Main - _TC",
|
||||||
cost_center=self.cost_center,
|
cost_center="Main - _TC",
|
||||||
rate=100,
|
rate=100,
|
||||||
do_not_submit=True,
|
do_not_submit=True,
|
||||||
)
|
)
|
||||||
si.items[0].enable_deferred_revenue = True
|
si.items[0].enable_deferred_revenue = True
|
||||||
si.items[0].deferred_revenue_account = self.deferred_revenue
|
si.items[0].deferred_revenue_account = "Deferred Revenue - _TC"
|
||||||
si.items[0].service_start_date = nowdate()
|
si.items[0].service_start_date = nowdate()
|
||||||
si.items[0].service_end_date = add_days(nowdate(), 90)
|
si.items[0].service_end_date = add_days(nowdate(), 90)
|
||||||
si.save().submit()
|
si.save().submit()
|
||||||
|
|
||||||
ral = frappe.new_doc("Repost Accounting Ledger")
|
ral = frappe.new_doc("Repost Accounting Ledger")
|
||||||
ral.company = self.company
|
ral.company = "_Test Company"
|
||||||
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
|
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
|
||||||
self.assertRaises(frappe.ValidationError, ral.save)
|
self.assertRaises(frappe.ValidationError, ral.save)
|
||||||
|
|
||||||
@@ -118,35 +114,35 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
def test_04_pcv_validation(self):
|
def test_04_pcv_validation(self):
|
||||||
# Clear old GL entries so PCV can be submitted.
|
# Clear old GL entries so PCV can be submitted.
|
||||||
gl = frappe.qb.DocType("GL Entry")
|
gl = frappe.qb.DocType("GL Entry")
|
||||||
qb.from_(gl).delete().where(gl.company == self.company).run()
|
qb.from_(gl).delete().where(gl.company == "_Test Company").run()
|
||||||
|
|
||||||
si = create_sales_invoice(
|
si = create_sales_invoice(
|
||||||
item=self.item,
|
item="_Test Item",
|
||||||
company=self.company,
|
company="_Test Company",
|
||||||
customer=self.customer,
|
customer="_Test Customer",
|
||||||
debit_to=self.debit_to,
|
debit_to="Debtors - _TC",
|
||||||
parent_cost_center=self.cost_center,
|
parent_cost_center="Main - _TC",
|
||||||
cost_center=self.cost_center,
|
cost_center="Main - _TC",
|
||||||
rate=100,
|
rate=100,
|
||||||
)
|
)
|
||||||
fy = get_fiscal_year(today(), company=self.company)
|
fy = get_fiscal_year(today(), company="_Test Company")
|
||||||
pcv = frappe.get_doc(
|
pcv = frappe.get_doc(
|
||||||
{
|
{
|
||||||
"doctype": "Period Closing Voucher",
|
"doctype": "Period Closing Voucher",
|
||||||
"transaction_date": today(),
|
"transaction_date": today(),
|
||||||
"period_start_date": fy[1],
|
"period_start_date": fy[1],
|
||||||
"period_end_date": today(),
|
"period_end_date": today(),
|
||||||
"company": self.company,
|
"company": "_Test Company",
|
||||||
"fiscal_year": fy[0],
|
"fiscal_year": fy[0],
|
||||||
"cost_center": self.cost_center,
|
"cost_center": "Main - _TC",
|
||||||
"closing_account_head": self.retained_earnings,
|
"closing_account_head": "Retained Earnings - _TC",
|
||||||
"remarks": "test",
|
"remarks": "test",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
pcv.save().submit()
|
pcv.save().submit()
|
||||||
|
|
||||||
ral = frappe.new_doc("Repost Accounting Ledger")
|
ral = frappe.new_doc("Repost Accounting Ledger")
|
||||||
ral.company = self.company
|
ral.company = "_Test Company"
|
||||||
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
|
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
|
||||||
self.assertRaises(frappe.ValidationError, ral.save)
|
self.assertRaises(frappe.ValidationError, ral.save)
|
||||||
|
|
||||||
@@ -156,12 +152,12 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
|
|
||||||
def test_03_deletion_flag_and_preview_function(self):
|
def test_03_deletion_flag_and_preview_function(self):
|
||||||
si = create_sales_invoice(
|
si = create_sales_invoice(
|
||||||
item=self.item,
|
item="_Test Item",
|
||||||
company=self.company,
|
company="_Test Company",
|
||||||
customer=self.customer,
|
customer="_Test Customer",
|
||||||
debit_to=self.debit_to,
|
debit_to="Debtors - _TC",
|
||||||
parent_cost_center=self.cost_center,
|
parent_cost_center="Main - _TC",
|
||||||
cost_center=self.cost_center,
|
cost_center="Main - _TC",
|
||||||
rate=100,
|
rate=100,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -170,7 +166,7 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
|
|
||||||
# with deletion flag set
|
# with deletion flag set
|
||||||
ral = frappe.new_doc("Repost Accounting Ledger")
|
ral = frappe.new_doc("Repost Accounting Ledger")
|
||||||
ral.company = self.company
|
ral.company = "_Test Company"
|
||||||
ral.delete_cancelled_entries = True
|
ral.delete_cancelled_entries = True
|
||||||
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
|
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
|
||||||
ral.append("vouchers", {"voucher_type": pe.doctype, "voucher_no": pe.name})
|
ral.append("vouchers", {"voucher_type": pe.doctype, "voucher_no": pe.name})
|
||||||
@@ -181,12 +177,12 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
|
|
||||||
def test_05_without_deletion_flag(self):
|
def test_05_without_deletion_flag(self):
|
||||||
si = create_sales_invoice(
|
si = create_sales_invoice(
|
||||||
item=self.item,
|
item="_Test Item",
|
||||||
company=self.company,
|
company="_Test Company",
|
||||||
customer=self.customer,
|
customer="_Test Customer",
|
||||||
debit_to=self.debit_to,
|
debit_to="Debtors - _TC",
|
||||||
parent_cost_center=self.cost_center,
|
parent_cost_center="Main - _TC",
|
||||||
cost_center=self.cost_center,
|
cost_center="Main - _TC",
|
||||||
rate=100,
|
rate=100,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -195,7 +191,7 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
|
|
||||||
# without deletion flag set
|
# without deletion flag set
|
||||||
ral = frappe.new_doc("Repost Accounting Ledger")
|
ral = frappe.new_doc("Repost Accounting Ledger")
|
||||||
ral.company = self.company
|
ral.company = "_Test Company"
|
||||||
ral.delete_cancelled_entries = False
|
ral.delete_cancelled_entries = False
|
||||||
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
|
ral.append("vouchers", {"voucher_type": si.doctype, "voucher_no": si.name})
|
||||||
ral.append("vouchers", {"voucher_type": pe.doctype, "voucher_no": pe.name})
|
ral.append("vouchers", {"voucher_type": pe.doctype, "voucher_no": pe.name})
|
||||||
@@ -210,16 +206,16 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
provisional_account = create_account(
|
provisional_account = create_account(
|
||||||
account_name="Provision Account",
|
account_name="Provision Account",
|
||||||
parent_account="Current Liabilities - _TC",
|
parent_account="Current Liabilities - _TC",
|
||||||
company=self.company,
|
company="_Test Company",
|
||||||
)
|
)
|
||||||
|
|
||||||
another_provisional_account = create_account(
|
another_provisional_account = create_account(
|
||||||
account_name="Another Provision Account",
|
account_name="Another Provision Account",
|
||||||
parent_account="Current Liabilities - _TC",
|
parent_account="Current Liabilities - _TC",
|
||||||
company=self.company,
|
company="_Test Company",
|
||||||
)
|
)
|
||||||
|
|
||||||
company = frappe.get_doc("Company", self.company)
|
company = frappe.get_doc("Company", "_Test Company")
|
||||||
company.enable_provisional_accounting_for_non_stock_items = 1
|
company.enable_provisional_accounting_for_non_stock_items = 1
|
||||||
company.default_provisional_account = provisional_account
|
company.default_provisional_account = provisional_account
|
||||||
company.save()
|
company.save()
|
||||||
@@ -229,7 +225,7 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
|
|
||||||
item = make_item(properties={"is_stock_item": 0})
|
item = make_item(properties={"is_stock_item": 0})
|
||||||
|
|
||||||
pr = make_purchase_receipt(company=self.company, item_code=item.name, rate=1000.0, qty=1.0)
|
pr = make_purchase_receipt(company="_Test Company", item_code=item.name, rate=1000.0, qty=1.0)
|
||||||
pr_gl_entries = get_gl_entries(pr.doctype, pr.name, skip_cancelled=True)
|
pr_gl_entries = get_gl_entries(pr.doctype, pr.name, skip_cancelled=True)
|
||||||
expected_pr_gles = [
|
expected_pr_gles = [
|
||||||
{"account": provisional_account, "debit": 0.0, "credit": 1000.0, "cost_center": test_cc},
|
{"account": provisional_account, "debit": 0.0, "credit": 1000.0, "cost_center": test_cc},
|
||||||
@@ -246,7 +242,7 @@ class TestRepostAccountingLedger(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
)
|
)
|
||||||
|
|
||||||
repost_doc = frappe.new_doc("Repost Accounting Ledger")
|
repost_doc = frappe.new_doc("Repost Accounting Ledger")
|
||||||
repost_doc.company = self.company
|
repost_doc.company = "_Test Company"
|
||||||
repost_doc.delete_cancelled_entries = True
|
repost_doc.delete_cancelled_entries = True
|
||||||
repost_doc.append("vouchers", {"voucher_type": pr.doctype, "voucher_no": pr.name})
|
repost_doc.append("vouchers", {"voucher_type": pr.doctype, "voucher_no": pr.name})
|
||||||
repost_doc.save().submit()
|
repost_doc.save().submit()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_orde
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestUnreconcilePayment(AccountsTestMixin, ERPNextTestSuite):
|
class TestUnreconcilePayment(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_customer()
|
self.create_customer()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestAccountsPayable(AccountsTestMixin, ERPNextTestSuite):
|
class TestAccountsPayable(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_customer()
|
self.create_customer()
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_orde
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestAccountsReceivable(AccountsTestMixin, ERPNextTestSuite):
|
class TestAccountsReceivable(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_customer()
|
self.create_customer()
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestAccountsReceivable(AccountsTestMixin, ERPNextTestSuite):
|
class TestAccountsReceivable(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.maxDiff = None
|
self.maxDiff = None
|
||||||
self.create_company()
|
self.create_company()
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from erpnext.controllers.sales_and_purchase_return import make_return_doc
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestCustomerLedgerSummary(AccountsTestMixin, ERPNextTestSuite):
|
class TestCustomerLedgerSummary(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_customer()
|
self.create_customer()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestItemWisePurchaseRegister(AccountsTestMixin, ERPNextTestSuite):
|
class TestItemWisePurchaseRegister(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_supplier()
|
self.create_supplier()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestItemWiseSalesRegister(AccountsTestMixin, ERPNextTestSuite):
|
class TestItemWiseSalesRegister(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_customer()
|
self.create_customer()
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestProfitAndLossStatement(AccountsTestMixin, ERPNextTestSuite):
|
class TestProfitAndLossStatement(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_customer()
|
self.create_customer()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestItemWiseSalesRegister(AccountsTestMixin, ERPNextTestSuite):
|
class TestItemWiseSalesRegister(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_customer()
|
self.create_customer()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestSupplierLedgerSummary(AccountsTestMixin, ERPNextTestSuite):
|
class TestSupplierLedgerSummary(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_supplier()
|
self.create_supplier()
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ from erpnext.accounts.utils import get_fiscal_year
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestTaxWithholdingDetails(AccountsTestMixin, ERPNextTestSuite):
|
class TestTaxWithholdingDetails(ERPNextTestSuite, AccountsTestMixin):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.clear_old_entries()
|
self.clear_old_entries()
|
||||||
|
|||||||
@@ -229,23 +229,3 @@ class AccountsTestMixin:
|
|||||||
]
|
]
|
||||||
for doctype in doctype_list:
|
for doctype in doctype_list:
|
||||||
qb.from_(qb.DocType(doctype)).delete().where(qb.DocType(doctype).company == self.company).run()
|
qb.from_(qb.DocType(doctype)).delete().where(qb.DocType(doctype).company == self.company).run()
|
||||||
|
|
||||||
def create_price_list(self):
|
|
||||||
pl_name = "Mixin Price List"
|
|
||||||
if not frappe.db.exists("Price List", pl_name):
|
|
||||||
self.price_list = (
|
|
||||||
frappe.get_doc(
|
|
||||||
{
|
|
||||||
"doctype": "Price List",
|
|
||||||
"currency": "INR",
|
|
||||||
"enabled": True,
|
|
||||||
"selling": True,
|
|
||||||
"buying": True,
|
|
||||||
"price_list_name": pl_name,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.insert()
|
|
||||||
.name
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
self.price_list = frappe.get_doc("Price List", pl_name).name
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|
||||||
from erpnext.controllers.taxes_and_totals import calculate_taxes_and_totals
|
from erpnext.controllers.taxes_and_totals import calculate_taxes_and_totals
|
||||||
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestTaxesAndTotals(AccountsTestMixin, ERPNextTestSuite):
|
class TestTaxesAndTotals(ERPNextTestSuite):
|
||||||
@ERPNextTestSuite.change_settings("Selling Settings", {"allow_multiple_items": 1})
|
@ERPNextTestSuite.change_settings("Selling Settings", {"allow_multiple_items": 1})
|
||||||
def test_distributed_discount_amount(self):
|
def test_distributed_discount_amount(self):
|
||||||
so = make_sales_order(do_not_save=1)
|
so = make_sales_order(do_not_save=1)
|
||||||
|
|||||||
@@ -2,36 +2,17 @@ import frappe
|
|||||||
from frappe import qb
|
from frappe import qb
|
||||||
from frappe.utils import today
|
from frappe.utils import today
|
||||||
|
|
||||||
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import disable_dimension
|
|
||||||
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|
||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestReactivity(AccountsTestMixin, ERPNextTestSuite):
|
class TestReactivity(ERPNextTestSuite):
|
||||||
def setUp(self):
|
|
||||||
self.create_company()
|
|
||||||
self.create_customer()
|
|
||||||
self.create_item()
|
|
||||||
self.create_usd_receivable_account()
|
|
||||||
self.create_price_list()
|
|
||||||
self.clear_old_entries()
|
|
||||||
|
|
||||||
def disable_dimensions(self):
|
|
||||||
res = frappe.db.get_all("Accounting Dimension", filters={"disabled": False})
|
|
||||||
for x in res:
|
|
||||||
dim = frappe.get_doc("Accounting Dimension", x.name)
|
|
||||||
dim.disabled = True
|
|
||||||
dim.save()
|
|
||||||
|
|
||||||
def test_01_basic_item_details(self):
|
def test_01_basic_item_details(self):
|
||||||
self.disable_dimensions()
|
|
||||||
|
|
||||||
# set Item Price
|
# set Item Price
|
||||||
frappe.get_doc(
|
frappe.get_doc(
|
||||||
{
|
{
|
||||||
"doctype": "Item Price",
|
"doctype": "Item Price",
|
||||||
"item_code": self.item,
|
"item_code": "_Test Item",
|
||||||
"price_list": self.price_list,
|
"price_list": "Standard Selling",
|
||||||
"price_list_rate": 90,
|
"price_list_rate": 90,
|
||||||
"selling": True,
|
"selling": True,
|
||||||
"rate": 90,
|
"rate": 90,
|
||||||
@@ -42,17 +23,18 @@ class TestReactivity(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
si = frappe.get_doc(
|
si = frappe.get_doc(
|
||||||
{
|
{
|
||||||
"doctype": "Sales Invoice",
|
"doctype": "Sales Invoice",
|
||||||
"company": self.company,
|
"company": "_Test Company",
|
||||||
"customer": self.customer,
|
"customer": "_Test Customer",
|
||||||
"debit_to": self.debit_to,
|
"debit_to": "Debtors - _TC",
|
||||||
"posting_date": today(),
|
"posting_date": today(),
|
||||||
"cost_center": self.cost_center,
|
"cost_center": "Main - _TC",
|
||||||
|
"currency": "INR",
|
||||||
"conversion_rate": 1,
|
"conversion_rate": 1,
|
||||||
"selling_price_list": self.price_list,
|
"selling_price_list": "Standard Selling",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
itm = si.append("items")
|
itm = si.append("items")
|
||||||
itm.item_code = self.item
|
itm.item_code = "_Test Item"
|
||||||
si.process_item_selection(itm.idx)
|
si.process_item_selection(itm.idx)
|
||||||
self.assertEqual(itm.rate, 90)
|
self.assertEqual(itm.rate, 90)
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
# See license.txt
|
# See license.txt
|
||||||
|
|
||||||
# import frappe
|
# import frappe
|
||||||
from frappe.tests.utils import FrappeTestCase
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestCodeList(FrappeTestCase):
|
class TestCodeList(ERPNextTestSuite):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
# See license.txt
|
# See license.txt
|
||||||
|
|
||||||
# import frappe
|
# import frappe
|
||||||
from frappe.tests.utils import FrappeTestCase
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestCommonCode(FrappeTestCase):
|
class TestCommonCode(ERPNextTestSuite):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
from unittest import TestCase
|
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
|
|
||||||
from erpnext.regional.address_template.setup import get_address_templates, update_address_template
|
from erpnext.regional.address_template.setup import get_address_templates, update_address_template
|
||||||
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
def ensure_country(country):
|
def ensure_country(country):
|
||||||
@@ -14,7 +13,7 @@ def ensure_country(country):
|
|||||||
return c
|
return c
|
||||||
|
|
||||||
|
|
||||||
class TestRegionalAddressTemplate(TestCase):
|
class TestRegionalAddressTemplate(ERPNextTestSuite):
|
||||||
def test_get_address_templates(self):
|
def test_get_address_templates(self):
|
||||||
"""Get the countries and paths from the templates directory."""
|
"""Get the countries and paths from the templates directory."""
|
||||||
templates = get_address_templates()
|
templates = get_address_templates()
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ from frappe.core.doctype.user_permission.test_user_permission import create_user
|
|||||||
from frappe.tests import change_settings
|
from frappe.tests import change_settings
|
||||||
from frappe.utils import add_days, flt, nowdate, today
|
from frappe.utils import add_days, flt, nowdate, today
|
||||||
|
|
||||||
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
|
||||||
from erpnext.controllers.accounts_controller import InvalidQtyError, get_due_date, update_child_qty_rate
|
from erpnext.controllers.accounts_controller import InvalidQtyError, get_due_date, update_child_qty_rate
|
||||||
from erpnext.maintenance.doctype.maintenance_schedule.test_maintenance_schedule import (
|
from erpnext.maintenance.doctype.maintenance_schedule.test_maintenance_schedule import (
|
||||||
make_maintenance_schedule,
|
make_maintenance_schedule,
|
||||||
@@ -35,10 +34,7 @@ from erpnext.stock.get_item_details import get_bin_details
|
|||||||
from erpnext.tests.utils import ERPNextTestSuite
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
class TestSalesOrder(ERPNextTestSuite):
|
||||||
def setUp(self):
|
|
||||||
self.create_customer("_Test Customer Credit")
|
|
||||||
|
|
||||||
@ERPNextTestSuite.change_settings(
|
@ERPNextTestSuite.change_settings(
|
||||||
"Stock Settings",
|
"Stock Settings",
|
||||||
{
|
{
|
||||||
@@ -2439,7 +2435,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
def test_credit_limit_on_so_reopning(self):
|
def test_credit_limit_on_so_reopning(self):
|
||||||
# set credit limit
|
# set credit limit
|
||||||
company = "_Test Company"
|
company = "_Test Company"
|
||||||
customer = frappe.get_doc("Customer", self.customer)
|
customer = frappe.get_doc("Customer", "_Test Customer")
|
||||||
customer.credit_limits = []
|
customer.credit_limits = []
|
||||||
customer.append(
|
customer.append(
|
||||||
"credit_limits", {"company": company, "credit_limit": 1000, "bypass_credit_limit_check": False}
|
"credit_limits", {"company": company, "credit_limit": 1000, "bypass_credit_limit_check": False}
|
||||||
@@ -2447,35 +2443,33 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
customer.save()
|
customer.save()
|
||||||
|
|
||||||
so1 = make_sales_order(qty=9, rate=100, do_not_submit=True)
|
so1 = make_sales_order(qty=9, rate=100, do_not_submit=True)
|
||||||
so1.customer = self.customer
|
so1.customer = customer.name
|
||||||
so1.save().submit()
|
so1.save().submit()
|
||||||
|
|
||||||
so1.update_status("Closed")
|
so1.update_status("Closed")
|
||||||
|
|
||||||
so2 = make_sales_order(qty=9, rate=100, do_not_submit=True)
|
so2 = make_sales_order(qty=9, rate=100, do_not_submit=True)
|
||||||
so2.customer = self.customer
|
so2.customer = customer.name
|
||||||
so2.save().submit()
|
so2.save().submit()
|
||||||
|
|
||||||
self.assertRaises(frappe.ValidationError, so1.update_status, "Draft")
|
self.assertRaises(frappe.ValidationError, so1.update_status, "Draft")
|
||||||
|
|
||||||
@ERPNextTestSuite.change_settings("Stock Settings", {"enable_stock_reservation": True})
|
@ERPNextTestSuite.change_settings("Stock Settings", {"enable_stock_reservation": True})
|
||||||
def test_warehouse_mapping_based_on_stock_reservation(self):
|
def test_warehouse_mapping_based_on_stock_reservation(self):
|
||||||
self.create_company(company_name="Glass Ceiling", abbr="GC")
|
warehouse = "Stores - _TC"
|
||||||
self.create_item("Lamy Safari 2", True, self.warehouse_stores, self.company, 2000)
|
warehouse_finished = "Finished Goods - _TC"
|
||||||
self.create_customer()
|
|
||||||
self.clear_old_entries()
|
|
||||||
|
|
||||||
so = frappe.new_doc("Sales Order")
|
so = frappe.new_doc("Sales Order")
|
||||||
so.company = self.company
|
so.company = "_Test Company"
|
||||||
so.customer = self.customer
|
so.customer = "_Test Customer"
|
||||||
so.transaction_date = today()
|
so.transaction_date = today()
|
||||||
so.append(
|
so.append(
|
||||||
"items",
|
"items",
|
||||||
{
|
{
|
||||||
"item_code": self.item,
|
"item_code": "_Test Item",
|
||||||
"qty": 10,
|
"qty": 10,
|
||||||
"rate": 2000,
|
"rate": 2000,
|
||||||
"warehouse": self.warehouse_stores,
|
"warehouse": "Stores - _TC",
|
||||||
"delivery_date": today(),
|
"delivery_date": today(),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@@ -2485,12 +2479,12 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
se = frappe.get_doc(
|
se = frappe.get_doc(
|
||||||
{
|
{
|
||||||
"doctype": "Stock Entry",
|
"doctype": "Stock Entry",
|
||||||
"company": self.company,
|
"company": "_Test Company",
|
||||||
"stock_entry_type": "Material Receipt",
|
"stock_entry_type": "Material Receipt",
|
||||||
"posting_date": today(),
|
"posting_date": today(),
|
||||||
"items": [
|
"items": [
|
||||||
{"item_code": self.item, "t_warehouse": self.warehouse_stores, "qty": 5},
|
{"item_code": "_Test Item", "t_warehouse": warehouse, "qty": 5},
|
||||||
{"item_code": self.item, "t_warehouse": self.warehouse_finished_goods, "qty": 5},
|
{"item_code": "_Test Item", "t_warehouse": warehouse_finished, "qty": 5},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -2503,7 +2497,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
{
|
{
|
||||||
"sales_order_item": itm.name,
|
"sales_order_item": itm.name,
|
||||||
"item_code": itm.item_code,
|
"item_code": itm.item_code,
|
||||||
"warehouse": self.warehouse_stores,
|
"warehouse": warehouse,
|
||||||
"qty_to_reserve": 2,
|
"qty_to_reserve": 2,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2513,7 +2507,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
{
|
{
|
||||||
"sales_order_item": itm.name,
|
"sales_order_item": itm.name,
|
||||||
"item_code": itm.item_code,
|
"item_code": itm.item_code,
|
||||||
"warehouse": self.warehouse_finished_goods,
|
"warehouse": warehouse_finished,
|
||||||
"qty_to_reserve": 3,
|
"qty_to_reserve": 3,
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2523,31 +2517,31 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
dn = make_delivery_note(so.name, kwargs={"for_reserved_stock": True})
|
dn = make_delivery_note(so.name, kwargs={"for_reserved_stock": True})
|
||||||
self.assertEqual(2, len(dn.items))
|
self.assertEqual(2, len(dn.items))
|
||||||
self.assertEqual(dn.items[0].qty, 2)
|
self.assertEqual(dn.items[0].qty, 2)
|
||||||
self.assertEqual(dn.items[0].warehouse, self.warehouse_stores)
|
self.assertEqual(dn.items[0].warehouse, warehouse)
|
||||||
self.assertEqual(dn.items[1].qty, 3)
|
self.assertEqual(dn.items[1].qty, 3)
|
||||||
self.assertEqual(dn.items[1].warehouse, self.warehouse_finished_goods)
|
self.assertEqual(dn.items[1].warehouse, warehouse_finished)
|
||||||
|
|
||||||
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
|
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
|
||||||
|
|
||||||
warehouse = create_warehouse("Test Warehouse 1", company=self.company)
|
warehouse = create_warehouse("Test Warehouse 1", company="_Test Company")
|
||||||
|
|
||||||
make_stock_entry(
|
make_stock_entry(
|
||||||
item_code=self.item,
|
item_code="_Test Item",
|
||||||
target=warehouse,
|
target=warehouse,
|
||||||
qty=5,
|
qty=5,
|
||||||
company=self.company,
|
company="_Test Company",
|
||||||
)
|
)
|
||||||
|
|
||||||
so = frappe.new_doc("Sales Order")
|
so = frappe.new_doc("Sales Order")
|
||||||
so.reserve_stock = 1
|
so.reserve_stock = 1
|
||||||
so.company = self.company
|
so.company = "_Test Company"
|
||||||
so.customer = self.customer
|
so.customer = "_Test Customer"
|
||||||
so.transaction_date = today()
|
so.transaction_date = today()
|
||||||
so.currency = "INR"
|
so.currency = "INR"
|
||||||
so.append(
|
so.append(
|
||||||
"items",
|
"items",
|
||||||
{
|
{
|
||||||
"item_code": self.item,
|
"item_code": "_Test Item",
|
||||||
"qty": 5,
|
"qty": 5,
|
||||||
"rate": 2000,
|
"rate": 2000,
|
||||||
"warehouse": warehouse,
|
"warehouse": warehouse,
|
||||||
|
|||||||
@@ -1980,6 +1980,14 @@ class BootStrapTestData:
|
|||||||
["_Test Payable", "Current Liabilities", 0, "Payable", None],
|
["_Test Payable", "Current Liabilities", 0, "Payable", None],
|
||||||
["_Test Receivable USD", "Current Assets", 0, "Receivable", "USD"],
|
["_Test Receivable USD", "Current Assets", 0, "Receivable", "USD"],
|
||||||
["_Test Payable USD", "Current Liabilities", 0, "Payable", "USD"],
|
["_Test Payable USD", "Current Liabilities", 0, "Payable", "USD"],
|
||||||
|
# Deferred Account
|
||||||
|
["Deferred Revenue", "Current Liabilities", 0, None, None],
|
||||||
|
["Deferred Expense", "Current Assets", 0, None, None],
|
||||||
|
# Bank
|
||||||
|
["HDFC", "Bank Accounts", 0, "Bank", None],
|
||||||
|
# Advance Account
|
||||||
|
["Advance Received", "Current Liabilities", 0, "Receivable", None],
|
||||||
|
["Advance Paid", "Current Assets", 0, "Payable", None],
|
||||||
# Loyalty Account
|
# Loyalty Account
|
||||||
["Loyalty", "Direct Expenses", 0, "Expense Account", None],
|
["Loyalty", "Direct Expenses", 0, "Expense Account", None],
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user