line: anzig+einstellungen ok + test

This commit is contained in:
Frederik Jaeckel 2022-11-05 00:19:41 +01:00
parent 4d0dc9e7ac
commit a2d715a54d
10 changed files with 338 additions and 120 deletions

View file

@ -170,6 +170,195 @@ class ReportTestCase(CashbookTestCase):
('cashbook_hasbookings', '=', True)
]), 0)
@with_transaction()
def test_report_check_limited_access(self):
""" check query of cashbook-lines selected by
cashbook-type, limited by user-permissions
"""
pool = Pool()
ResUser = pool.get('res.user')
ResGroup = pool.get('res.group')
ModelData = pool.get('ir.model.data')
Currency = pool.get('currency.currency')
Evaluation = pool.get('cashbook_report.evaluation')
Type = pool.get('cashbook.type')
Cashbook = pool.get('cashbook.book')
Line = pool.get('cashbook_report.eval_line')
books = self.prep_report_3books()
company = self.prep_company()
# add 2x user, set owner of cashbooks to them
group_cashbook = ResGroup(ModelData.get_id('cashbook', 'group_cashbook'))
users = ResUser.create([{
'name': 'User 1',
'login': 'user1',
'password': 'test1234',
'groups': [('add', [group_cashbook.id])],
'company': company.id,
'companies': [('add', [company.id])],
}, {
'name': 'User 2',
'login': 'user2',
'password': 'test1234',
'groups': [('add', [group_cashbook.id])],
'company': company.id,
'companies': [('add', [company.id])],
}])
Cashbook.write(*[
[books[0], books[1]],
{
'owner': users[0].id,
},
[books[2]],
{
'owner': users[1].id,
},
])
# check access to data
with Transaction().set_user(users[0].id):
with Transaction().set_context({
'_check_access': True,
'company': company.id,
}):
books_owner1 = Cashbook.search([])
self.assertEqual(len(books_owner1), 2)
self.assertEqual(books_owner1[0].name, 'Book 1')
self.assertEqual(books_owner1[0].balance, Decimal('25.0'))
self.assertEqual(books_owner1[1].name, 'Book 2')
self.assertEqual(books_owner1[1].balance, Decimal('12.5'))
evaluation1, = Evaluation.create([{
'name': 'Evaluation User 1 - Cashbooks',
'dtype': 'cashbooks',
'cashbooks': [('add', [x.id for x in books_owner1])],
}])
self.assertEqual(len(evaluation1.cashbooks), 2)
self.assertEqual(evaluation1.currency.rec_name, 'Euro')
self.assertEqual(len(evaluation1.line_values), 2)
self.assertEqual(evaluation1.line_values[0].name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(evaluation1.line_values[0].balance, Decimal('23.81'))
self.assertEqual(evaluation1.line_values[1].name, 'Book 2 | 12.50 usd | Open')
self.assertEqual(evaluation1.line_values[1].balance, Decimal('11.9'))
evaluation2, = Evaluation.create([{
'name': 'Evaluation User 1 - Types',
'dtype': 'types',
'types': [('add', [x.id for x in Type.search([])])],
}])
self.assertEqual(len(evaluation2.types), 2)
self.assertEqual(evaluation2.currency.rec_name, 'Euro')
self.assertEqual(len(evaluation2.line_values), 2)
self.assertEqual(evaluation2.line_values[0].name, 'BK - Bank')
self.assertEqual(evaluation2.line_values[0].balance, Decimal('0.0'))
self.assertEqual(evaluation2.line_values[1].name, 'CAS - Cash')
self.assertEqual(evaluation2.line_values[1].balance, Decimal('35.71'))
evaluation3, = Evaluation.create([{
'name': 'Evaluation User 1 - Currencies',
'dtype': 'currencies',
'currencies': [('add', [x.id for x in Currency.search([])])],
}])
self.assertEqual(len(evaluation3.currencies), 2)
self.assertEqual(evaluation3.currency.rec_name, 'Euro')
self.assertEqual(len(evaluation3.line_values), 2)
self.assertEqual(evaluation3.line_values[0].name, 'Euro')
self.assertEqual(evaluation3.line_values[0].balance, Decimal('0.0'))
self.assertEqual(evaluation3.line_values[1].name, 'usd')
self.assertEqual(evaluation3.line_values[1].balance, Decimal('35.71'))
with Transaction().set_user(users[1].id):
with Transaction().set_context({
'_check_access': True,
'company': company.id,
}):
books_owner2 = Cashbook.search([])
self.assertEqual(len(books_owner2), 1)
self.assertEqual(books_owner2[0].name, 'Book 3')
evaluation1, = Evaluation.create([{
'name': 'Evaluation User 2 - Cashbooks',
'dtype': 'cashbooks',
'cashbooks': [('add', [x.id for x in books_owner2])],
}])
self.assertEqual(len(evaluation1.cashbooks), 1)
self.assertEqual(evaluation1.currency.rec_name, 'Euro')
self.assertEqual(len(evaluation1.line_values), 1)
self.assertEqual(evaluation1.line_values[0].name, 'Book 3 | 23.00 € | Open')
self.assertEqual(evaluation1.line_values[0].balance, Decimal('23.0'))
evaluation2, = Evaluation.create([{
'name': 'Evaluation User 2 - Types',
'dtype': 'types',
'types': [('add', [x.id for x in Type.search([])])],
}])
self.assertEqual(len(evaluation2.types), 2)
self.assertEqual(evaluation2.currency.rec_name, 'Euro')
self.assertEqual(len(evaluation2.line_values), 2)
self.assertEqual(evaluation2.line_values[0].name, 'BK - Bank')
self.assertEqual(evaluation2.line_values[0].balance, Decimal('23.0'))
self.assertEqual(evaluation2.line_values[1].name, 'CAS - Cash')
self.assertEqual(evaluation2.line_values[1].balance, Decimal('0.0'))
evaluation3, = Evaluation.create([{
'name': 'Evaluation User 3 - Currencies',
'dtype': 'currencies',
'currencies': [('add', [x.id for x in Currency.search([])])],
}])
self.assertEqual(len(evaluation3.currencies), 2)
self.assertEqual(evaluation3.currency.rec_name, 'Euro')
self.assertEqual(len(evaluation3.line_values), 2)
self.assertEqual(evaluation3.line_values[0].name, 'Euro')
self.assertEqual(evaluation3.line_values[0].balance, Decimal('23.0'))
self.assertEqual(evaluation3.line_values[1].name, 'usd')
self.assertEqual(evaluation3.line_values[1].balance, Decimal('0.0'))
@with_transaction()
def test_report_update_name_of_line(self):
""" check replace rec_name-value on line with
manually updates value
"""
pool = Pool()
Evaluation = pool.get('cashbook_report.evaluation')
Line = pool.get('cashbook_report.eval_line')
books = self.prep_report_3books()
company = self.prep_company()
with Transaction().set_context({
'company': company.id,
}):
evaluation, = Evaluation.create([{
'name': 'Evaluation 1',
'dtype': 'cashbooks',
'cashbooks': [('add', [x.id for x in books])],
}])
self.assertEqual(len(evaluation.cashbooks), 3)
self.assertEqual(len(evaluation.line_values), 3)
self.assertEqual(evaluation.line_values[0].name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(evaluation.line_values[0].name_line, None)
# update 'name'
Line.write(*[
[evaluation.line_values[0]],
{
'name': 'Book updated',
}])
self.assertEqual(evaluation.line_values[0].name, 'Book updated')
self.assertEqual(evaluation.line_values[0].name_line, 'Book updated')
# delete 'name' value to reset to origin
Line.write(*[
[evaluation.line_values[0]],
{
'name': None,
}])
self.assertEqual(evaluation.line_values[0].name, 'Book 1 | 25.00 usd | Open')
self.assertEqual(evaluation.line_values[0].name_line, None)
@with_transaction()
def test_report_dtype_update(self):
""" check unlink of cashbooks/types/currencies
@ -317,7 +506,7 @@ class ReportTestCase(CashbookTestCase):
<field name="name"/>
</x>
<y>
<field name="balance" fill="1" empty="0" string="cashbooks"/>
<field name="balance" fill="1" empty="0" string="Cashbooks"/>
</y>
</graph>
""")