153 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import time
 | |
| import unittest
 | |
| 
 | |
| import frappe
 | |
| import requests
 | |
| 
 | |
| from erpnext.erpnext_integrations.connectors.woocommerce_connection import order
 | |
| 
 | |
| 
 | |
| class TestWoocommerce(unittest.TestCase):
 | |
| 	def setUp(self):
 | |
| 
 | |
| 		woo_settings = frappe.get_doc("Woocommerce Settings")
 | |
| 		if not woo_settings.secret:
 | |
| 			woo_settings.secret = "ec434676aa1de0e502389f515c38f89f653119ab35e9117c7a79e576"
 | |
| 			woo_settings.woocommerce_server_url = "https://woocommerce.mntechnique.com/"
 | |
| 			woo_settings.api_consumer_key = "ck_fd43ff5756a6abafd95fadb6677100ce95a758a1"
 | |
| 			woo_settings.api_consumer_secret = "cs_94360a1ad7bef7fa420a40cf284f7b3e0788454e"
 | |
| 			woo_settings.enable_sync = 1
 | |
| 			woo_settings.company = "_Test Company"
 | |
| 			woo_settings.tax_account = "Sales Expenses - _TC"
 | |
| 			woo_settings.f_n_f_account = "Expenses - _TC"
 | |
| 			woo_settings.creation_user = "Administrator"
 | |
| 			woo_settings.save(ignore_permissions=True)
 | |
| 
 | |
| 	def test_sales_order_for_woocommerce(self):
 | |
| 		frappe.flags.woocomm_test_order_data = {
 | |
| 			"id": 75,
 | |
| 			"parent_id": 0,
 | |
| 			"number": "74",
 | |
| 			"order_key": "wc_order_5aa1281c2dacb",
 | |
| 			"created_via": "checkout",
 | |
| 			"version": "3.3.3",
 | |
| 			"status": "processing",
 | |
| 			"currency": "INR",
 | |
| 			"date_created": "2018-03-08T12:10:04",
 | |
| 			"date_created_gmt": "2018-03-08T12:10:04",
 | |
| 			"date_modified": "2018-03-08T12:10:04",
 | |
| 			"date_modified_gmt": "2018-03-08T12:10:04",
 | |
| 			"discount_total": "0.00",
 | |
| 			"discount_tax": "0.00",
 | |
| 			"shipping_total": "150.00",
 | |
| 			"shipping_tax": "0.00",
 | |
| 			"cart_tax": "0.00",
 | |
| 			"total": "649.00",
 | |
| 			"total_tax": "0.00",
 | |
| 			"prices_include_tax": False,
 | |
| 			"customer_id": 12,
 | |
| 			"customer_ip_address": "103.54.99.5",
 | |
| 			"customer_user_agent": "mozilla\\/5.0 (x11; linux x86_64) applewebkit\\/537.36 (khtml, like gecko) chrome\\/64.0.3282.186 safari\\/537.36",
 | |
| 			"customer_note": "",
 | |
| 			"billing": {
 | |
| 				"first_name": "Tony",
 | |
| 				"last_name": "Stark",
 | |
| 				"company": "_Test Company",
 | |
| 				"address_1": "Mumbai",
 | |
| 				"address_2": "",
 | |
| 				"city": "Dadar",
 | |
| 				"state": "MH",
 | |
| 				"postcode": "123",
 | |
| 				"country": "IN",
 | |
| 				"email": "tony@gmail.com",
 | |
| 				"phone": "123457890",
 | |
| 			},
 | |
| 			"shipping": {
 | |
| 				"first_name": "Tony",
 | |
| 				"last_name": "Stark",
 | |
| 				"company": "",
 | |
| 				"address_1": "Mumbai",
 | |
| 				"address_2": "",
 | |
| 				"city": "Dadar",
 | |
| 				"state": "MH",
 | |
| 				"postcode": "123",
 | |
| 				"country": "IN",
 | |
| 			},
 | |
| 			"payment_method": "cod",
 | |
| 			"payment_method_title": "Cash on delivery",
 | |
| 			"transaction_id": "",
 | |
| 			"date_paid": "",
 | |
| 			"date_paid_gmt": "",
 | |
| 			"date_completed": "",
 | |
| 			"date_completed_gmt": "",
 | |
| 			"cart_hash": "8e76b020d5790066496f244860c4703f",
 | |
| 			"meta_data": [],
 | |
| 			"line_items": [
 | |
| 				{
 | |
| 					"id": 80,
 | |
| 					"name": "Marvel",
 | |
| 					"product_id": 56,
 | |
| 					"variation_id": 0,
 | |
| 					"quantity": 1,
 | |
| 					"tax_class": "",
 | |
| 					"subtotal": "499.00",
 | |
| 					"subtotal_tax": "0.00",
 | |
| 					"total": "499.00",
 | |
| 					"total_tax": "0.00",
 | |
| 					"taxes": [],
 | |
| 					"meta_data": [],
 | |
| 					"sku": "",
 | |
| 					"price": 499,
 | |
| 				}
 | |
| 			],
 | |
| 			"tax_lines": [],
 | |
| 			"shipping_lines": [
 | |
| 				{
 | |
| 					"id": 81,
 | |
| 					"method_title": "Flat rate",
 | |
| 					"method_id": "flat_rate:1",
 | |
| 					"total": "150.00",
 | |
| 					"total_tax": "0.00",
 | |
| 					"taxes": [],
 | |
| 					"meta_data": [{"id": 623, "key": "Items", "value": "Marvel × 1"}],
 | |
| 				}
 | |
| 			],
 | |
| 			"fee_lines": [],
 | |
| 			"coupon_lines": [],
 | |
| 			"refunds": [],
 | |
| 		}
 | |
| 		order()
 | |
| 
 | |
| 		self.assertTrue(frappe.get_value("Customer", {"woocommerce_email": "tony@gmail.com"}))
 | |
| 		self.assertTrue(frappe.get_value("Item", {"woocommerce_id": 56}))
 | |
| 		self.assertTrue(frappe.get_value("Sales Order", {"woocommerce_id": 75}))
 | |
| 		frappe.flags.woocomm_test_order_data = {}
 | |
| 
 | |
| 
 | |
| def emulate_request():
 | |
| 	# Emulate Woocommerce Request
 | |
| 	headers = {
 | |
| 		"X-Wc-Webhook-Event": "created",
 | |
| 		"X-Wc-Webhook-Signature": "h1SjzQMPwd68MF5bficeFq20/RkQeRLsb9AVCUz/rLs=",
 | |
| 	}
 | |
| 	# Emulate Request Data
 | |
| 	data = """{"id":74,"parent_id":0,"number":"74","order_key":"wc_order_5aa1281c2dacb","created_via":"checkout","version":"3.3.3","status":"processing","currency":"INR","date_created":"2018-03-08T12:10:04","date_created_gmt":"2018-03-08T12:10:04","date_modified":"2018-03-08T12:10:04","date_modified_gmt":"2018-03-08T12:10:04","discount_total":"0.00","discount_tax":"0.00","shipping_total":"150.00","shipping_tax":"0.00","cart_tax":"0.00","total":"649.00","total_tax":"0.00","prices_include_tax":false,"customer_id":12,"customer_ip_address":"103.54.99.5","customer_user_agent":"mozilla\\/5.0 (x11; linux x86_64) applewebkit\\/537.36 (khtml, like gecko) chrome\\/64.0.3282.186 safari\\/537.36","customer_note":"","billing":{"first_name":"Tony","last_name":"Stark","company":"Woocommerce","address_1":"Mumbai","address_2":"","city":"Dadar","state":"MH","postcode":"123","country":"IN","email":"tony@gmail.com","phone":"123457890"},"shipping":{"first_name":"Tony","last_name":"Stark","company":"","address_1":"Mumbai","address_2":"","city":"Dadar","state":"MH","postcode":"123","country":"IN"},"payment_method":"cod","payment_method_title":"Cash on delivery","transaction_id":"","date_paid":null,"date_paid_gmt":null,"date_completed":null,"date_completed_gmt":null,"cart_hash":"8e76b020d5790066496f244860c4703f","meta_data":[],"line_items":[{"id":80,"name":"Marvel","product_id":56,"variation_id":0,"quantity":1,"tax_class":"","subtotal":"499.00","subtotal_tax":"0.00","total":"499.00","total_tax":"0.00","taxes":[],"meta_data":[],"sku":"","price":499}],"tax_lines":[],"shipping_lines":[{"id":81,"method_title":"Flat rate","method_id":"flat_rate:1","total":"150.00","total_tax":"0.00","taxes":[],"meta_data":[{"id":623,"key":"Items","value":"Marvel × 1"}]}],"fee_lines":[],"coupon_lines":[],"refunds":[]}"""
 | |
| 
 | |
| 	# Build URL
 | |
| 	port = frappe.get_site_config().webserver_port or "8000"
 | |
| 
 | |
| 	if os.environ.get("CI"):
 | |
| 		host = "localhost"
 | |
| 	else:
 | |
| 		host = frappe.local.site
 | |
| 
 | |
| 	url = "http://{site}:{port}/api/method/erpnext.erpnext_integrations.connectors.woocommerce_connection.order".format(
 | |
| 		site=host, port=port
 | |
| 	)
 | |
| 
 | |
| 	r = requests.post(url=url, headers=headers, data=data)
 | |
| 
 | |
| 	time.sleep(5)
 | |
| 	return r
 |