Added Lead fixture, Added test for Lead, Opportunity (#9607)

* Added fixtures for Address and Contact

* Fixed formatting errors

* Added Test for terms, Added Tax and Terms fixture

* Add tests for tax

* Added Test for Print Format
diff --git a/erpnext/tests/ui/test_sellling.js b/erpnext/tests/ui/test_sellling.js
index 5543a67..f676152 100644
--- a/erpnext/tests/ui/test_sellling.js
+++ b/erpnext/tests/ui/test_sellling.js
@@ -1,29 +1,120 @@
-QUnit.module('sales');
+QUnit.module("sales");
 
-QUnit.test("test quotation", function(assert) {
-	assert.expect(2);
+QUnit.test("test: lead", function (assert) {
+	assert.expect(1);
+	let done = assert.async();
+	let random = frappe.utils.get_random(10);
+	frappe.run_serially([
+		() => frappe.tests.setup_doctype("Lead"),
+		() => frappe.set_route("List", "Lead"),
+		() => frappe.new_doc("Lead"),
+		() => cur_frm.set_value("lead_name", random),
+		() => cur_frm.save(),
+		() => {
+			assert.ok(cur_frm.doc.lead_name.includes(random));
+			return done();
+		}
+	]);
+});
+
+QUnit.test("test: opportunity", function (assert) {
+	assert.expect(1);
 	let done = assert.async();
 	frappe.run_serially([
-		() => frappe.tests.setup_doctype('Customer'),
-		() => frappe.tests.setup_doctype('Item'),
 		() => {
-			return frappe.tests.make('Quotation', [
-				{customer: 'Test Customer 1'},
-				{items: [
-					[
-						{'item_code': 'Test Product 1'},
-						{'qty': 5}
+			return frappe.tests.make("Opportunity", [{
+				enquiry_from: "Lead"
+			},
+			{
+				lead: "LEAD-00002"
+			}
+			]);
+		},
+		() => {
+			assert.ok(cur_frm.doc.lead === "LEAD-00002");
+			return done();
+		}
+	]);
+});
+
+QUnit.test("test: quotation", function (assert) {
+	assert.expect(18);
+	let done = assert.async();
+	frappe.run_serially([
+		() => frappe.tests.setup_doctype("Customer"),
+		() => frappe.tests.setup_doctype("Item"),
+		() => frappe.tests.setup_doctype("Address"),
+		() => frappe.tests.setup_doctype("Contact"),
+		() => frappe.tests.setup_doctype("Price List"),
+		() => frappe.tests.setup_doctype("Terms and Conditions"),
+		() => frappe.tests.setup_doctype("Sales Taxes and Charges Template"),
+		() => {
+			return frappe.tests.make("Quotation", [{
+				customer: "Test Customer 1"
+			},
+			{
+				items: [
+					[{
+						"item_code": "Test Product 1"
+					},
+					{
+						"qty": 5
+					}
 					]
-				]}
+				]
+			}
 			]);
 		},
 		() => {
 			// get_item_details
-			assert.ok(cur_frm.doc.items[0].item_name=='Test Product 1');
+			assert.ok(cur_frm.doc.items[0].item_name == "Test Product 1", "Added Test Product 1");
 
 			// calculate_taxes_and_totals
-			assert.ok(cur_frm.doc.grand_total==500);
+			assert.ok(cur_frm.doc.grand_total === 500, "Total Amount is correct");
 		},
+		() => cur_frm.set_value("customer_address", "Test1-Billing"),
+		() => cur_frm.set_value("shipping_address_name", "Test1-Warehouse"),
+		() => cur_frm.set_value("contact_person", "Contact 1-Test Customer 1"),
+		() => cur_frm.set_value("currency", "USD"),
+		() => frappe.timeout(0.3),
+		() => cur_frm.set_value("selling_price_list", "Test-Selling-USD"),
+		() => frappe.timeout(0.5),
+		() => cur_frm.doc.items[0].rate = 200,
+		() => frappe.timeout(0.3),
+		() => cur_frm.set_value("tc_name", "Test Term 1"),
+		() => cur_frm.set_value("taxes_and_charges", "TEST In State GST"),
+		() => frappe.timeout(0.3),
+		() => cur_frm.save(),
+		() => {
+			// Check Address and Contact Info
+			assert.ok(cur_frm.doc.address_display.includes("Billing Street 1"), "Address Changed");
+			assert.ok(cur_frm.doc.shipping_address.includes("Warehouse Street 1"), "Address Changed");
+			assert.ok(cur_frm.doc.contact_display == "Contact 1", "Contact info changed");
+
+			// Check Currency
+			assert.ok(cur_frm.doc_currency == "USD", "Currency Changed");
+			assert.ok(cur_frm.doc.selling_price_list == "Test-Selling-USD", "Price List Changed");
+			assert.ok(cur_frm.doc.items[0].rate == 200, "Price Changed Manually");
+			assert.ok(cur_frm.doc.total == 1000, "New Total Calculated");
+
+			// Check Terms and Condtions
+			assert.ok(cur_frm.doc.tc_name == "Test Term 1", "Terms and Conditions Checked");
+
+			// Check Taxes
+			assert.ok(cur_frm.doc.taxes[0].account_head.includes("CGST"));
+			assert.ok(cur_frm.doc.taxes[1].account_head.includes("SGST"));
+			assert.ok(cur_frm.doc.grand_total == 1180, "Tax Amount Added to Total");
+			assert.ok(cur_frm.doc.taxes_and_charges == "TEST In State GST", "Tax Template Selected");
+		},
+		() => frappe.timeout(0.3),
+		() => cur_frm.print_doc(),
+		() => frappe.timeout(1),
+		() => assert.ok($('.btn-print-print').is(':visible'), "Print Format Available"),
+		() => assert.ok(RegExp(/QTN-\d\d\d\d\d/g).test($("#header-html small").text())),
+		() => assert.ok($(".important .text-right.value").text().includes("$ 1,180.00")),
+		() => assert.ok($(".section-break+ .section-break .column-break:nth-child(1) .data-field:nth-child(1) .value").text().includes("Billing Street 1"), "Print Preview Works As Expected"),
+		() => frappe.timeout(0.3),
+		() => cur_frm.print_doc(),
 		() => done()
 	]);
-});
+});
\ No newline at end of file