cashbook/tests/test_category.py

176 lines
5.7 KiB
Python
Raw Normal View History

2022-08-09 13:08:41 +00:00
# -*- coding: utf-8 -*-
# This file is part of the cashbook-module from m-ds for Tryton.
# The COPYRIGHT file at the top level of this repository contains the
# full copyright notices and license terms.
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
from trytond.pool import Pool
from trytond.transaction import Transaction
from trytond.exceptions import UserError
class CategoryTestCase(ModuleTestCase):
'Test cashbook categoy module'
module = 'cashbook'
def prep_category(self, name='Cat1', cattype='out'):
""" create category
"""
pool = Pool()
Company = pool.get('company.company')
Category = pool.get('cashbook.category')
company = self.prep_company()
category, = Category.create([{
'company': company.id,
'name': name,
'cattype': cattype,
}])
return category
@with_transaction()
def test_category_create_check_category_type(self):
""" create category, update type of category
"""
pool = Pool()
Category = pool.get('cashbook.category')
company = self.prep_company()
category, = Category.create([{
'company': company.id,
'name': 'Level 1',
'cattype': 'in',
'childs': [('create', [{
'company': company.id,
'name': 'Level 2',
'cattype': 'in',
}])],
}])
self.assertEqual(category.rec_name, 'Level 1')
self.assertEqual(category.cattype, 'in')
self.assertEqual(len(category.childs), 1)
self.assertEqual(category.childs[0].rec_name, 'Level 1/Level 2')
self.assertEqual(category.childs[0].cattype, 'in')
self.assertRaisesRegex(UserError,
'The value for field "Type" in "Category" is not valid according to its domain.',
Category.write,
*[
[category.childs[0]],
{
'cattype': 'out',
},
])
Category.write(*[
[category],
{
'cattype': 'out',
}])
self.assertEqual(category.rec_name, 'Level 1')
self.assertEqual(category.cattype, 'out')
self.assertEqual(len(category.childs), 1)
self.assertEqual(category.childs[0].rec_name, 'Level 1/Level 2')
self.assertEqual(category.childs[0].cattype, 'out')
2022-08-09 13:08:41 +00:00
@with_transaction()
def test_category_create_nodupl_at_root(self):
""" create category, duplicates are allowed at root-level
"""
pool = Pool()
Category = pool.get('cashbook.category')
company = self.prep_company()
2022-08-09 13:08:41 +00:00
with Transaction().set_context({
'company': company.id,
}):
cat1, = Category.create([{
'name': 'Test 1',
'description': 'Info',
'cattype': 'in',
2022-08-09 13:08:41 +00:00
}])
self.assertEqual(cat1.name, 'Test 1')
self.assertEqual(cat1.rec_name, 'Test 1')
self.assertEqual(cat1.description, 'Info')
self.assertEqual(cat1.company.rec_name, 'm-ds')
self.assertEqual(cat1.parent, None)
# duplicate of different type, allowed
2022-08-09 13:08:41 +00:00
cat2, = Category.create([{
'name': 'Test 1',
'description': 'Info',
'cattype': 'out',
2022-08-09 13:08:41 +00:00
}])
self.assertEqual(cat2.name, 'Test 1')
self.assertEqual(cat2.rec_name, 'Test 1')
self.assertEqual(cat2.description, 'Info')
self.assertEqual(cat2.company.rec_name, 'm-ds')
self.assertEqual(cat2.parent, None)
# deny duplicate of same type
self.assertRaisesRegex(UserError,
'The category name already exists at this level.',
Category.create,
[{
'name': 'Test 1',
'description': 'Info',
'cattype': 'in',
}])
2022-08-09 13:08:41 +00:00
@with_transaction()
def test_category_create_nodupl_diff_level(self):
""" create category
"""
pool = Pool()
Category = pool.get('cashbook.category')
company = self.prep_company()
2022-08-09 13:08:41 +00:00
with Transaction().set_context({
'company': company.id,
}):
cat1, = Category.create([{
'name': 'Test 1',
'description': 'Info',
'childs': [('create', [{
'name': 'Test 1',
}])],
}])
self.assertEqual(cat1.name, 'Test 1')
self.assertEqual(cat1.rec_name, 'Test 1')
self.assertEqual(cat1.description, 'Info')
self.assertEqual(cat1.company.rec_name, 'm-ds')
self.assertEqual(len(cat1.childs), 1)
self.assertEqual(cat1.childs[0].rec_name, 'Test 1/Test 1')
@with_transaction()
def test_category_create_deny_dupl_at_sublevel(self):
""" create category
"""
pool = Pool()
Category = pool.get('cashbook.category')
company = self.prep_company()
2022-08-09 13:08:41 +00:00
with Transaction().set_context({
'company': company.id,
}):
self.assertRaisesRegex(UserError,
'The category name already exists at this level.',
Category.create,
[{
'name': 'Test 1',
'description': 'Info',
'childs': [('create', [{
'name': 'Test 1',
}, {
'name': 'Test 1',
}])],
}])
# end CategoryTestCase