153 lines
5.5 KiB
Python
153 lines
5.5 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 LineTestCase(ModuleTestCase):
|
|
'Test cashbook line module'
|
|
module = 'cashbook'
|
|
|
|
@with_transaction()
|
|
def test_line_create_check_names_search(self):
|
|
""" create cashbook + line
|
|
"""
|
|
pool = Pool()
|
|
Book = pool.get('cashbook.book')
|
|
Types = pool.get('cashbook.type')
|
|
Lines = pool.get('cashbook.line')
|
|
|
|
types, = Types.search([('short', '=','CAS')])
|
|
|
|
book, = Book.create([{
|
|
'name': 'Book 1',
|
|
'btype': types.id,
|
|
'lines': [('create', [{
|
|
'date': date(2022, 5, 1),
|
|
'description': 'Text 1',
|
|
}, {
|
|
'date': date(2022, 5, 2),
|
|
'description': 'Text 2',
|
|
}])],
|
|
}])
|
|
self.assertEqual(book.name, 'Book 1')
|
|
self.assertEqual(book.btype.rec_name, 'CAS - Cash')
|
|
self.assertEqual(book.state, 'open')
|
|
self.assertEqual(len(book.lines), 2)
|
|
self.assertEqual(book.lines[0].date, date(2022, 5, 1))
|
|
self.assertEqual(book.lines[0].rec_name, '05/01/2022 Text 1')
|
|
self.assertEqual(book.lines[0].state_cashbook, 'open')
|
|
self.assertEqual(book.lines[1].date, date(2022, 5, 2))
|
|
self.assertEqual(book.lines[1].rec_name, '05/02/2022 Text 2')
|
|
|
|
self.assertEqual(Lines.search_count([('rec_name', '=', 'Text 1')]), 1)
|
|
self.assertEqual(Lines.search_count([('rec_name', '=', 'Text 1a')]), 0)
|
|
self.assertEqual(Lines.search_count([('rec_name', 'ilike', 'text%')]), 2)
|
|
|
|
self.assertEqual(Lines.search_count([('state_cashbook', '=', 'open')]), 2)
|
|
self.assertEqual(Lines.search_count([('state_cashbook', '=', 'closed')]), 0)
|
|
self.assertEqual(Lines.search_count([('cashbook.state', '=', 'open')]), 2)
|
|
self.assertEqual(Lines.search_count([('cashbook.state', '=', 'closed')]), 0)
|
|
|
|
@with_transaction()
|
|
def test_line_delete_with_book_in_open_state(self):
|
|
""" create cashbook + line, book in state=open, delete a line
|
|
"""
|
|
pool = Pool()
|
|
Book = pool.get('cashbook.book')
|
|
Types = pool.get('cashbook.type')
|
|
Lines = pool.get('cashbook.line')
|
|
|
|
types, = Types.search([('short', '=','CAS')])
|
|
|
|
book, = Book.create([{
|
|
'name': 'Book 1',
|
|
'btype': types.id,
|
|
'lines': [('create', [{
|
|
'date': date(2022, 5, 1),
|
|
'description': 'Text 1',
|
|
}, {
|
|
'date': date(2022, 5, 2),
|
|
'description': 'Text 2',
|
|
}])],
|
|
}])
|
|
self.assertEqual(book.name, 'Book 1')
|
|
self.assertEqual(len(book.lines), 2)
|
|
self.assertEqual(book.state, 'open')
|
|
|
|
Lines.delete([book.lines[0]])
|
|
|
|
@with_transaction()
|
|
def test_line_delete_with_book_in_closed_state(self):
|
|
""" create cashbook + line, book in state=closed, delete a line
|
|
"""
|
|
pool = Pool()
|
|
Book = pool.get('cashbook.book')
|
|
Types = pool.get('cashbook.type')
|
|
Lines = pool.get('cashbook.line')
|
|
|
|
types, = Types.search([('short', '=','CAS')])
|
|
|
|
book, = Book.create([{
|
|
'name': 'Book 1',
|
|
'btype': types.id,
|
|
'lines': [('create', [{
|
|
'date': date(2022, 5, 1),
|
|
'description': 'Text 1',
|
|
}, {
|
|
'date': date(2022, 5, 2),
|
|
'description': 'Text 2',
|
|
}])],
|
|
}])
|
|
self.assertEqual(book.name, 'Book 1')
|
|
self.assertEqual(len(book.lines), 2)
|
|
self.assertEqual(book.state, 'open')
|
|
Book.wfclosed([book])
|
|
self.assertEqual(book.state, 'closed')
|
|
|
|
self.assertRaisesRegex(UserError,
|
|
"The cashbook line '05/01/2022 Text 1' cannot be deleted because the Cashbook 'Book 1' is in state 'Closed'.",
|
|
Lines.delete,
|
|
[book.lines[0]])
|
|
|
|
@with_transaction()
|
|
def test_line_delete_with_line_in_check_state(self):
|
|
""" create cashbook + line, line in state=check, delete a line
|
|
"""
|
|
pool = Pool()
|
|
Book = pool.get('cashbook.book')
|
|
Types = pool.get('cashbook.type')
|
|
Lines = pool.get('cashbook.line')
|
|
|
|
types, = Types.search([('short', '=','CAS')])
|
|
|
|
book, = Book.create([{
|
|
'name': 'Book 1',
|
|
'btype': types.id,
|
|
'lines': [('create', [{
|
|
'date': date(2022, 5, 1),
|
|
'description': 'Text 1',
|
|
}, {
|
|
'date': date(2022, 5, 2),
|
|
'description': 'Text 2',
|
|
}])],
|
|
}])
|
|
self.assertEqual(book.name, 'Book 1')
|
|
self.assertEqual(len(book.lines), 2)
|
|
self.assertEqual(book.state, 'open')
|
|
|
|
self.assertEqual(book.lines[0].state, 'edit')
|
|
Lines.wfcheck([book.lines[0]])
|
|
self.assertEqual(book.lines[0].state, 'check')
|
|
|
|
self.assertRaisesRegex(UserError,
|
|
"The cashbook line '05/01/2022 Text 1' cannot be deleted, its in state 'Checked'.",
|
|
Lines.delete,
|
|
[book.lines[0]])
|
|
|
|
# end BookTestCase
|