diff --git a/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py b/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py
index 3bc8dc4..325f3a7 100644
--- a/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py
+++ b/erpnext/hr/doctype/leave_allocation/test_leave_allocation.py
@@ -1,7 +1,7 @@
 from __future__ import unicode_literals
 import frappe
 import unittest
-from frappe.utils import nowdate, add_months, getdate
+from frappe.utils import nowdate, add_months, getdate, add_days
 from erpnext.hr.doctype.leave_type.test_leave_type import create_leave_type
 
 class TestLeaveAllocation(unittest.TestCase):
@@ -71,36 +71,27 @@
 	def test_carry_forward_allocation(self):
 		frappe.db.sql("delete from `tabLeave Allocation`")
 
-		employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
-		doc = frappe.get_doc({
-			"doctype": "Leave Allocation",
-			"__islocal": 1,
-			"employee": employee.name,
-			"employee_name": employee.employee_name,
-			"leave_type": "_Test Leave Type Carry Forward",
-			"from_date": nowdate(),
-			"to_date": add_months(nowdate(),-12),
-			"new_leaves_allocated": 10
-		})
-		doc.save()
-		doc = frappe.get_doc({
-			"doctype": "Leave Allocation",
-			"__islocal": 1,
-			"employee": employee.name,
-			"employee_name": employee.employee_name,
-			"leave_type": "_Test Leave Type Carry Forward",
-			"from_date": nowdate(),
-			"to_date": add_months(now_date(),12),
-			"carry_forward": 1
-		})
-		doc.save()
-		self.assertEquals(doc.total_leaves_allocated, 10)
+		leave_type = create_leave_type(
+			leave_type_name="_Test Carry Forward",
+			is_carry_forward=1,
+			carry_forward_leave_expiry=366)
+		leave_type.submit()
+
+		leave_allocation = create_leave_allocation(
+			from_date=add_months(nowdate(), -12),
+			to_date=add_days(nowdate(), -1),
+			leave_type=leave_type
+		)
+		leave_allocation.new_leaves_allocated = 10
+		leave_allocation.submit()
+
+		carry_forward_alloc = create_leave_allocation(leave_type=leave_type)
+		carry_forward_alloc.carry_forward = 1
+		carry_forward_alloc.save()
+		self.assertEquals(carry_forward_alloc.total_leaves_allocated, 10)
 
 def create_leave_allocation(**args):
 	args = frappe._dict(args)
-	if not frappe.db.exists("Leave Type", "_Test Leave Type"):
-		leave_type = create_leave_type(args.leave_type)
-		leave_type.insert()
 
 	employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
 	leave_allocation = frappe.get_doc({
@@ -108,10 +99,9 @@
 		"__islocal": 1,
 		"employee": employee.name,
 		"employee_name": employee.employee_name,
-		"leave_type": args.leave_type or "_Test Leave Type",
+		"leave_type": args.leave_type.leave_type_name or "_Test Leave Type",
 		"from_date": args.from_date or nowdate(),
-		"to_date": args.to_date or add_months(nowdate(), 12),
-		"new_leaves_allocated": args.new_leaves_allocated or 20
+		"to_date": args.to_date or add_months(nowdate(), 12)
 	})
 	return leave_allocation
 
diff --git a/erpnext/hr/doctype/leave_type/test_leave_type.py b/erpnext/hr/doctype/leave_type/test_leave_type.py
index 671865b..1006550 100644
--- a/erpnext/hr/doctype/leave_type/test_leave_type.py
+++ b/erpnext/hr/doctype/leave_type/test_leave_type.py
@@ -8,6 +8,7 @@
 test_records = frappe.get_test_records('Leave Type')
 
 def create_leave_type(**args):
+    args = frappe._dict(args)
     if frappe.db.exists("Leave Type", args.leave_type_name):
         return frappe.get_doc("Leave Type", args.leave_type_name)
     leave_type = frappe.get_doc({
@@ -18,7 +19,7 @@
         "is_earned_leave": args.is_earned_leave or 0,
         "is_lwp": args.is_lwp or 0,
         "is_carry_forward": args.is_carry_forward or 0,
-        "carry_forward_leave_expiry": args.is_carry_forward or 0,
+        "carry_forward_leave_expiry": args.carry_forward_leave_expiry or 0,
         "encashment_threshold_days": args.encashment_threshold_days or 5,
         "earning_component": "Leave Encashment"
     })
