Files
tryton/trytond/tests/test_field_binary.py
T

185 lines
5.4 KiB
Python
Raw Normal View History

2018-02-02 00:04:19 +01: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 shutil
import tempfile
import unittest
from trytond.config import config
2018-12-29 14:19:08 +01:00
from trytond.model.exceptions import RequiredValidationError
2018-02-02 00:04:19 +01:00
from trytond.model import fields
from trytond.pool import Pool
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.transaction import Transaction
cast = fields.Binary.cast
class FieldBinaryTestCase(unittest.TestCase):
"Test Field Binary"
@classmethod
def setUpClass(cls):
activate_module('tests')
def setUp(self):
path = config.get('database', 'path')
dtemp = tempfile.mkdtemp()
config.set('database', 'path', dtemp)
self.addCleanup(config.set, 'database', 'path', path)
self.addCleanup(shutil.rmtree, dtemp)
@with_transaction()
def test_create(self):
"Test create binary"
Binary = Pool().get('test.binary')
binary, = Binary.create([{
'binary': cast(b'foo'),
}])
self.assertEqual(binary.binary, cast(b'foo'))
@with_transaction()
def test_create_without_default(self):
"Test create binary without default"
Binary = Pool().get('test.binary')
binary, = Binary.create([{}])
self.assertEqual(binary.binary, None)
@with_transaction()
def test_create_with_default(self):
"Test create binary with default"
Binary = Pool().get('test.binary_default')
binary, = Binary.create([{}])
self.assertEqual(binary.binary, cast(b'default'))
@with_transaction()
def test_create_required_without_value(self):
"Test create binary without value"
Binary = Pool().get('test.binary_required')
2018-12-29 14:19:08 +01:00
with self.assertRaises(RequiredValidationError):
2018-02-02 00:04:19 +01:00
binary, = Binary.create([{}])
@with_transaction()
def test_create_required_with_value(self):
"Test create binary with default"
Binary = Pool().get('test.binary_default')
binary, = Binary.create([{
'binary': cast(b'baz'),
}])
self.assertEqual(binary.binary, cast(b'baz'))
@with_transaction()
def test_create_required_with_empty(self):
"Test create binary with empty"
Binary = Pool().get('test.binary_required')
2018-12-29 14:19:08 +01:00
with self.assertRaises(RequiredValidationError):
2018-02-02 00:04:19 +01:00
binary, = Binary.create([{
'binary': cast(b''),
}])
@with_transaction()
def test_create_filestorage(self):
"Test create binary with filestorage"
Binary = Pool().get('test.binary_filestorage')
binary, = Binary.create([{
'binary': cast(b'foo'),
}])
self.assertEqual(binary.binary, cast(b'foo'))
self.assertTrue(binary.binary_id)
@with_transaction()
def test_create_empty_filestorage(self):
"Test create binary empty with filestorage"
Binary = Pool().get('test.binary_filestorage')
binary, = Binary.create([{
'binary': None,
}])
self.assertEqual(binary.binary, None)
self.assertEqual(binary.binary_id, None)
@with_transaction()
def test_read_size(self):
"Test read binary size"
Binary = Pool().get('test.binary')
binary, = Binary.create([{
'binary': cast(b'foo'),
}])
with Transaction().set_context({'test.binary.binary': 'size'}):
binary = Binary(binary.id)
self.assertEqual(binary.binary, len(b'bar'))
@with_transaction()
def test_read_size_filestorage(self):
"Test read binary size with filestorage"
Binary = Pool().get('test.binary_filestorage')
binary, = Binary.create([{
'binary': cast(b'foo'),
}])
with Transaction().set_context(
{'test.binary_filestorage.binary': 'size'}):
binary = Binary(binary.id)
self.assertEqual(binary.binary, len(b'bar'))
@with_transaction()
def test_write(self):
"Test write binary"
Binary = Pool().get('test.binary')
binary, = Binary.create([{
'binary': cast(b'foo'),
}])
Binary.write([binary], {
'binary': cast(b'bar'),
})
self.assertEqual(binary.binary, cast(b'bar'))
@with_transaction()
def test_write_filestorage(self):
"Test write binary with filestorage"
Binary = Pool().get('test.binary_filestorage')
binary, = Binary.create([{
'binary': cast(b'foo'),
}])
Binary.write([binary], {
'binary': cast(b'bar'),
})
self.assertEqual(binary.binary, cast(b'bar'))
@with_transaction()
def test_write_empty_filestorage(self):
"Test write binary empty with filestorage"
Binary = Pool().get('test.binary_filestorage')
binary, = Binary.create([{
'binary': cast(b'foo'),
}])
Binary.write([binary], {
'binary': None,
})
self.assertEqual(binary.binary, None)
self.assertEqual(binary.binary_id, None)
def suite():
return unittest.TestLoader().loadTestsFromTestCase(FieldBinaryTestCase)