# 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