177 lines
5.1 KiB
Python
177 lines
5.1 KiB
Python
![]() |
# 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
|