diff --git a/addons/hr_expense/__openerp__.py b/addons/hr_expense/__openerp__.py index ae13b0ce67b..5f1f24fc6cc 100644 --- a/addons/hr_expense/__openerp__.py +++ b/addons/hr_expense/__openerp__.py @@ -52,8 +52,9 @@ 'report/hr_expense_report_view.xml' ], 'demo_xml': ['hr_expense_demo.xml', -# 'hr.expense.expense.csv' +# '''hr.expense.expense.csv' ], + 'test': ['test/test_hr_expense.yml'], 'installable': True, 'active': False, 'certificate': '0062479841789', diff --git a/addons/hr_expense/test/test_hr_expense.yml b/addons/hr_expense/test/test_hr_expense.yml new file mode 100644 index 00000000000..2763b7227dc --- /dev/null +++ b/addons/hr_expense/test/test_hr_expense.yml @@ -0,0 +1,110 @@ +- | + In order to test hr_expenses for OpenERP, I create expense for employee and manage employee's expenses. +- + Creating unit of measure category "Working Time". +- + !record {model: product.uom.categ, id: product_uom_categ_workingtime0}: + name: Working Time. + +- | + Given that I have employee "employee1" and that address. + +- + !record {model: hr.employee, id: hr.employee1}: + address_home_id: base.res_partner_address_1 + address_id: base.main_address + +- + I create product unit of measure "Hour". +- + !record {model: product.uom, id: product_uom_hour0}: + category_id: 'product_uom_categ_workingtime0' + factor: 8.0 + name: Hour + rounding: 0.01 +- + Creating a product "travel" and select uom "Hour" and category "Working Time". +- + !record {model: product.product, id: product_product_travel0}: + categ_id: product.product_category_services + cost_method: standard + hr_expense_ok: 1 + list_price: 800.0 + mes_type: fixed + name: Travel + procure_method: make_to_stock + standard_price: 700.0 + supply_method: buy + type: product + uom_id: 'product_uom_hour0' + uom_po_id: 'product_uom_hour0' + volume: 0.0 + warranty: 0.0 + weight: 0.0 + weight_net: 0.0 + +- + Now I create Expense "visit to India" for employee1.and select product "travel". +- + !record {model: hr.expense.expense, id: hr_expense_expense_visitonindia0}: + company_id: base.main_company + currency_id: base.EUR + date: '2010-05-05' + employee_id: hr.employee1 + name: visit on India + line_ids: + - date_value: '2010-05-27' + name: Travel + product_id: 'product_product_travel0' + sequence: 0.0 + uom_id: product.product_uom_unit + unit_amount: 700.0 + user_id: base.user_root +- | + I check that expenses on "draft" state. +- + !assert {model: hr.expense.expense, id: hr_expense_expense_visitonindia0}: + - state == 'draft' +- | + I confirm this expenses by click on "Confirm" button. +- + !workflow {model: hr.expense.expense, action: confirm, ref: hr_expense_expense_visitonindia0} + +- | + I check that state is "Waiting Confirmation". +- + !assert {model: hr.expense.expense, id: hr_expense_expense_visitonindia0}: + - state == 'confirm' +- | + I accept this expense by click on "Accept" button. +- + !workflow {model: hr.expense.expense, action: validate, ref: hr_expense_expense_visitonindia0} + +- | + I invoiced this expenses by click on "Invoice" button. +- + !workflow {model: hr.expense.expense, action: invoice, ref: hr_expense_expense_visitonindia0} + +- | + I check that state is "Invoiced" +- + !assert {model: hr.expense.expense, id: hr_expense_expense_visitonindia0}: + - state == 'invoiced' +- | + Now I check that Invoice is created for that expenses. +- + !python {model: hr.expense.expense}: | + exp = self.browse(cr, uid, [ref('hr_expense_expense_visitonindia0')])[0] + invoice_obj = self.pool.get('account.invoice') + invoice_ids = invoice_obj.search(cr, uid, [('partner_id', '=', exp.employee_id.address_id.partner_id.id)]) + invoice_id = invoice_obj.browse(cr, uid, invoice_ids)[0] + + for invoice in invoice_id.invoice_line: + product = invoice.product_id.id + + for line in exp.line_ids: + product_exp = line.product_id.id + assert product == product_exp + assert exp.id == invoice_id.id + + \ No newline at end of file