cashbook/tests/test_book.py

177 lines
5.1 KiB
Python
Raw Normal View History

2022-08-08 12:31:42 +00:00
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import os, requests
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
from trytond.pool import Pool
from trytond.transaction import Transaction
from trytond.exceptions import UserError
from datetime import date
class BookTestCase(ModuleTestCase):
'Test cashbook book module'
module = 'cashbook'
@with_transaction()
def test_book_create(self):
""" create cashbook
"""
pool = Pool()
Book = pool.get('cashbook.book')
Types = pool.get('cashbook.type')
types, = Types.search([('short', '=','CAS')])
book, = Book.create([{
'name': 'Book 1',
'btype': types.id,
}])
self.assertEqual(book.name, 'Book 1')
self.assertEqual(book.btype.rec_name, 'CAS - Cash')
self.assertEqual(book.state, 'open')
self.assertEqual(book.state_string, 'Open')
@with_transaction()
def test_book_deny_delete_open(self):
""" create cashbook, add lines, try to delete in state 'open'
"""
pool = Pool()
Book = pool.get('cashbook.book')
Types = pool.get('cashbook.type')
types, = Types.search([('short', '=', 'CAS')])
book, = Book.create([{
'name': 'Book 1',
'btype': types.id,
'lines': [('create', [{
'date': date(2022, 5, 1),
'description': 'test 1',
}])],
}])
self.assertEqual(book.name, 'Book 1')
self.assertEqual(book.state, 'open')
self.assertRaisesRegex(UserError,
"The cash book 'Book 1' cannot be deleted because it contains 1 lines and is not in the status 'Archive'.",
Book.delete,
[book])
@with_transaction()
def test_book_deny_delete_closed(self):
""" create cashbook, add lines, try to delete in state 'closed'
"""
pool = Pool()
Book = pool.get('cashbook.book')
Types = pool.get('cashbook.type')
types, = Types.search([('short', '=', 'CAS')])
book, = Book.create([{
'name': 'Book 1',
'btype': types.id,
'lines': [('create', [{
'date': date(2022, 5, 1),
'description': 'test 1',
}])],
}])
self.assertEqual(book.name, 'Book 1')
self.assertEqual(book.state, 'open')
Book.wfclosed([book])
self.assertEqual(book.state, 'closed')
self.assertRaisesRegex(UserError,
"The cash book 'Book 1' cannot be deleted because it contains 1 lines and is not in the status 'Archive'.",
Book.delete,
[book])
@with_transaction()
def test_book_deny_delete_archive(self):
""" create cashbook, add lines, try to delete in state 'archive'
"""
pool = Pool()
Book = pool.get('cashbook.book')
Types = pool.get('cashbook.type')
types, = Types.search([('short', '=', 'CAS')])
book, = Book.create([{
'name': 'Book 1',
'btype': types.id,
'lines': [('create', [{
'date': date(2022, 5, 1),
'description': 'test 1',
}])],
}])
self.assertEqual(book.name, 'Book 1')
self.assertEqual(book.state, 'open')
Book.wfclosed([book])
Book.wfarchive([book])
self.assertEqual(book.state, 'archive')
Book.delete([book])
@with_transaction()
def test_book_deny_update_1(self):
""" create cashbook, try to update in states open, closed, archive
"""
pool = Pool()
Book = pool.get('cashbook.book')
Types = pool.get('cashbook.type')
types, = Types.search([('short', '=', 'CAS')])
book, = Book.create([{
'name': 'Book 1',
'btype': types.id,
}])
self.assertEqual(book.name, 'Book 1')
self.assertEqual(book.state, 'open')
Book.write(*[
[book],
{
'name': 'Book 1a',
}])
self.assertEqual(book.name, 'Book 1a')
# wf: open --> closed
Book.wfclosed([book])
self.assertEqual(book.state, 'closed')
self.assertRaisesRegex(UserError,
"The cash book 'Book 1a' is 'Closed' and cannot be changed.",
Book.write,
*[
[book],
{
'name': 'Book 1b',
},
])
Book.wfopen([book])
self.assertEqual(book.state, 'open')
Book.write(*[
[book],
{
'name': 'Book 1c',
}])
self.assertEqual(book.name, 'Book 1c')
Book.wfclosed([book])
Book.wfarchive([book])
self.assertRaisesRegex(UserError,
"The cash book 'Book 1c' is 'Archive' and cannot be changed.",
Book.write,
*[
[book],
{
'name': 'Book 1d',
},
])
# end BookTestCase