diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 760d63b..3aaefaf 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -16,7 +16,8 @@
 from erpnext.stock.doctype.stock_entry.test_stock_entry \
 	import make_stock_entry, make_serialized_item, get_qty_after_transaction
 from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos, SerialNoWarehouseError
-from erpnext.stock.doctype.stock_reconciliation.test_stock_reconciliation import create_stock_reconciliation
+from erpnext.stock.doctype.stock_reconciliation.test_stock_reconciliation \
+	import create_stock_reconciliation, set_valuation_method
 
 class TestDeliveryNote(unittest.TestCase):
 	def test_over_billing_against_dn(self):
@@ -57,7 +58,7 @@
 	def test_delivery_note_gl_entry(self):
 		set_perpetual_inventory()
 		self.assertEqual(cint(frappe.defaults.get_global_default("auto_accounting_for_stock")), 1)
-		frappe.db.set_value("Item", "_Test Item", "valuation_method", "FIFO")
+		set_valuation_method("_Test Item", "FIFO")
 
 		make_stock_entry(target="_Test Warehouse - _TC", qty=5, basic_rate=100)
 
@@ -326,13 +327,15 @@
 
 	def test_delivery_of_bundled_items_to_target_warehouse(self):
 		set_perpetual_inventory()
-		frappe.db.set_value("Item", "_Test Item", "valuation_method", "FIFO")
+		
+		set_valuation_method("_Test Item", "FIFO")
+		set_valuation_method("_Test Item Home Desktop 100", "FIFO")
 
 		for warehouse in ("_Test Warehouse - _TC", "_Test Warehouse 1 - _TC"):
 			create_stock_reconciliation(item_code="_Test Item", target=warehouse,
-				qty=50, rate=100)
+				qty=100, rate=100)
 			create_stock_reconciliation(item_code="_Test Item Home Desktop 100",
-				target=warehouse, qty=50, rate=100)
+				target=warehouse, qty=100, rate=100)
 
 		opening_qty_test_warehouse_1 = get_qty_after_transaction(warehouse="_Test Warehouse 1 - _TC")
 
@@ -343,19 +346,21 @@
 
 		# qty after delivery
 		actual_qty = get_qty_after_transaction(warehouse="_Test Warehouse - _TC")
-		self.assertEquals(actual_qty, 25)
+		self.assertEquals(actual_qty, 75)
 
 		actual_qty = get_qty_after_transaction(warehouse="_Test Warehouse 1 - _TC")
 		self.assertEquals(actual_qty, opening_qty_test_warehouse_1 + 25)
 
 		# stock value diff for source warehouse
-		stock_value_difference = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
-			"voucher_no": dn.name, "item_code": "_Test Item Home Desktop 100", "warehouse": "_Test Warehouse - _TC"},
+		stock_value_difference = frappe.db.get_value("Stock Ledger Entry", 
+			{"voucher_type": "Delivery Note", "voucher_no": dn.name, 
+				"item_code": "_Test Item Home Desktop 100", "warehouse": "_Test Warehouse - _TC"},
 			"stock_value_difference")
 
 		# stock value diff for target warehouse
-		stock_value_difference1 = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
-			"voucher_no": dn.name, "item_code": "_Test Item Home Desktop 100", "warehouse": "_Test Warehouse 1 - _TC"},
+		stock_value_difference1 = frappe.db.get_value("Stock Ledger Entry", 
+			{"voucher_type": "Delivery Note", "voucher_no": dn.name, 
+				"item_code": "_Test Item Home Desktop 100", "warehouse": "_Test Warehouse 1 - _TC"},
 			"stock_value_difference")
 
 		self.assertEquals(abs(stock_value_difference), stock_value_difference1)
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index cfaa499..1c6be1f 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -36,8 +36,8 @@
 		]
 
 		for d in input_data:
-			repost_stock_as_per_valuation_method(valuation_method)
-
+			set_valuation_method("_Test Item", valuation_method)
+			
 			last_sle = get_previous_sle({
 				"item_code": "_Test Item",
 				"warehouse": "_Test Warehouse - _TC",
@@ -114,11 +114,13 @@
 		pass
 	return sr
 
-def repost_stock_as_per_valuation_method(valuation_method):
-	frappe.db.set_value("Item", "_Test Item", "valuation_method", valuation_method)
-	update_entries_after({
-		"item_code": "_Test Item",
-		"warehouse": "_Test Warehouse - _TC",
-	}, allow_negative_stock=1)
+def set_valuation_method(item_code, valuation_method):
+	frappe.db.set_value("Item", item_code, "valuation_method", valuation_method)
+
+	for warehouse in frappe.get_all("Warehouse", filters={"company": "_Test Company"}):
+		update_entries_after({
+				"item_code": item_code,
+				"warehouse": warehouse
+		}, allow_negative_stock=1)
 
 test_dependencies = ["Item", "Warehouse"]
