[ui-testing] added test for production order (#10138)

* temporary commit for switching branches

* [ui-tests] added bill_of_materials test

* added warehouses required for production order

* [ui-test] added production order test

* debugging travis failure
diff --git a/erpnext/crm/doctype/item/test_item.js b/erpnext/crm/doctype/item/test_item.js
index 704e762..baaa21f 100644
--- a/erpnext/crm/doctype/item/test_item.js
+++ b/erpnext/crm/doctype/item/test_item.js
@@ -18,7 +18,8 @@
 				{item_group: "Products"},
 				{is_stock_item: is_stock_item},
 				{standard_rate: keyboard_cost},
-				{opening_stock: no_of_items_to_stock}
+				{opening_stock: no_of_items_to_stock},
+				{default_warehouse: "Stores - RB"}
 			]
 		),
 		() => {
@@ -43,7 +44,8 @@
 				{item_group: "Products"},
 				{is_stock_item: is_stock_item},
 				{standard_rate: screen_cost},
-				{opening_stock: no_of_items_to_stock}
+				{opening_stock: no_of_items_to_stock},
+				{default_warehouse: "Stores - RB"}
 			]
 		),
 
@@ -54,7 +56,8 @@
 				{item_group: "Products"},
 				{is_stock_item: is_stock_item},
 				{standard_rate: CPU_cost},
-				{opening_stock: no_of_items_to_stock}
+				{opening_stock: no_of_items_to_stock},
+				{default_warehouse: "Stores - RB"}
 			]
 		),
 
@@ -62,7 +65,8 @@
 		() => frappe.tests.make(
 			"Item", [
 				{item_code: "Laptop"},
-				{item_group: "Products"}
+				{item_group: "Products"},
+				{default_warehouse: "Stores - RB"}
 			]
 		),
 		() => frappe.tests.make(
@@ -80,7 +84,8 @@
 				{item_group: "Products"},
 				{is_stock_item: is_stock_item},
 				{standard_rate: scrap_cost},
-				{opening_stock: no_of_items_to_stock}
+				{opening_stock: no_of_items_to_stock},
+				{default_warehouse: "Stores - RB"}
 			]
 		),
 
diff --git a/erpnext/manufacturing/doctype/bom/test_bom.js b/erpnext/manufacturing/doctype/bom/test_bom.js
index 8187ef3..80a4ede 100644
--- a/erpnext/manufacturing/doctype/bom/test_bom.js
+++ b/erpnext/manufacturing/doctype/bom/test_bom.js
@@ -12,6 +12,7 @@
 				{item: "Laptop"},
 				{quantity: 1},
 				{with_operations: 1},
+				{company: "Razer Blade"},
 				{operations: [
 					[
 						{operation: "Assemble CPU"},
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.js b/erpnext/manufacturing/doctype/production_order/test_production_order.js
new file mode 100644
index 0000000..57299db
--- /dev/null
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.js
@@ -0,0 +1,41 @@
+QUnit.test("test: production order", function (assert) {
+	assert.expect(2);
+	let done = assert.async();
+	let laptop_quantity = 5;
+	let single_laptop_cost = 1340; // Calculated in workstation (time * per_hour_cost) for every item
+
+	frappe.run_serially([
+		// test production order
+		() => frappe.set_route("List", "Production Order"),
+		() => frappe.timeout(0.5),
+
+		// Create a laptop production order
+		() => frappe.new_doc("Production Order"),
+		() => frappe.timeout(1),
+		() => cur_frm.set_value("production_item", "Laptop"),
+		() => frappe.timeout(2),
+		() => cur_frm.set_value("company", "Razer Blade"),
+		() => frappe.timeout(2),
+		() => cur_frm.set_value("qty", laptop_quantity),
+		() => frappe.timeout(2),
+		() => cur_frm.set_value("scrap_warehouse", "Laptop Scrap Warehouse - RB"),
+		() => frappe.timeout(1),
+		() => cur_frm.set_value("wip_warehouse", "Work In Progress - RB"),
+		() => frappe.timeout(1),
+		() => cur_frm.set_value("fg_warehouse", "Finished Goods - RB"),
+		() => cur_frm.save(),
+		() => frappe.timeout(1),
+
+		() => {
+			assert.equal(cur_frm.doc.planned_operating_cost, cur_frm.doc.total_operating_cost, "Total and Planned Cost is equal");
+			assert.equal(cur_frm.doc.planned_operating_cost, laptop_quantity*single_laptop_cost, "Total cost is calculated correctly "+cur_frm.doc.planned_operating_cost);
+		},
+
+		() => cur_frm.savesubmit(),
+		() => frappe.timeout(1),
+		() => frappe.click_button('Yes'),
+		() => frappe.timeout(1),
+
+		() => done()
+	]);
+});
diff --git a/erpnext/setup/doctype/company/test_company.js b/erpnext/setup/doctype/company/tests/test_company.js
similarity index 100%
rename from erpnext/setup/doctype/company/test_company.js
rename to erpnext/setup/doctype/company/tests/test_company.js
diff --git a/erpnext/setup/doctype/company/tests/test_company_production.js b/erpnext/setup/doctype/company/tests/test_company_production.js
new file mode 100644
index 0000000..73bd710
--- /dev/null
+++ b/erpnext/setup/doctype/company/tests/test_company_production.js
@@ -0,0 +1,19 @@
+QUnit.test("Test: Company", function (assert) {
+	assert.expect(0);
+
+	let done = assert.async();
+
+	frappe.run_serially([
+		// Added company for Production Order testing
+		() => frappe.set_route("List", "Company"),
+		() => frappe.new_doc("Company"),
+		() => frappe.timeout(1),
+		() => cur_frm.set_value("company_name", "Razer Blade"),
+		() => cur_frm.set_value("abbr", "RB"),
+		() => cur_frm.set_value("default_currency", "USD"),
+		() => cur_frm.save(),
+		() => frappe.timeout(1),
+
+		() => done()
+	]);
+});
\ No newline at end of file
diff --git a/erpnext/stock/doctype/warehouse/test_warehouse.js b/erpnext/stock/doctype/warehouse/test_warehouse.js
new file mode 100644
index 0000000..3763613
--- /dev/null
+++ b/erpnext/stock/doctype/warehouse/test_warehouse.js
@@ -0,0 +1,19 @@
+QUnit.test("test: warehouse", function (assert) {
+	assert.expect(0);
+	let done = assert.async();
+
+	frappe.run_serially([
+		// test warehouse creation
+		() => frappe.set_route("List", "Warehouse"),
+
+		// Create a Laptop Scrap Warehouse
+		() => frappe.tests.make(
+			"Warehouse", [
+				{warehouse_name: "Laptop Scrap Warehouse"},
+				{company: "Razer Blade"}
+			]
+		),
+
+		() => done()
+	]);
+});
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index b87ff03..3943144 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -1,11 +1,12 @@
 erpnext/tests/ui/make_fixtures.js #long
-erpnext/setup/doctype/company/test_company.js
+erpnext/setup/doctype/company/tests/test_company.js
 erpnext/accounts/doctype/account/test_account.js
 erpnext/accounts/doctype/account/test_make_tax_account.js
 erpnext/accounts/doctype/sales_taxes_and_charges_template/test_sales_taxes_and_charges_template.js
 erpnext/crm/doctype/lead/test_lead.js
 erpnext/crm/doctype/opportunity/test_opportunity.js
 erpnext/selling/doctype/quotation/test_quotation.js
+erpnext/setup/doctype/company/tests/test_company_production.js
 erpnext/crm/doctype/item/test_item.js
 erpnext/manufacturing/doctype/workstation/test_workstation.js
 erpnext/manufacturing/doctype/operation/test_operation.js
@@ -31,5 +32,7 @@
 erpnext/schools/doctype/student_category/test_student_category.js
 erpnext/schools/doctype/room/test_room.js
 erpnext/schools/doctype/instructor/test_instructor.js
+erpnext/stock/doctype/warehouse/test_warehouse.js
+erpnext/manufacturing/doctype/production_order/test_production_order.js
 erpnext/accounts/page/pos/test_pos.js
 erpnext/selling/doctype/product_bundle/test_product_bundle.js