Enhanced unittests

This commit is contained in:
Rebecca Breu 2021-03-28 11:06:04 +02:00
parent aa75b30094
commit 8d7460de61
5 changed files with 49 additions and 18 deletions

View file

@ -170,7 +170,13 @@ class SQLiteIO:
item.filename))
item.save_id = self.cursor.lastrowid
pixmap = item.pixmap_to_bytes()
name = '%04d.png' % item.save_id
if item.filename:
basename = os.path.splitext(os.path.basename(item.filename))[0]
name = '%04d-%s.png' % (item.save_id, basename)
else:
name = '%04d.png' % item.save_id
self.ex(
'INSERT INTO sqlar (item_id, name, mode, sz, data) '
'VALUES (?, ?, 644, ?, ?)',

View file

@ -1,10 +1,20 @@
import os.path
from unittest import TestCase
from PyQt6 import QtWidgets
root = os.path.dirname(__file__)
imgfilename3x3 = os.path.join(root, 'assets', 'test3x3.png')
with open(imgfilename3x3, 'rb') as f:
imgdata3x3 = f.read()
class BeeTestCase(TestCase):
imgfilename3x3 = imgfilename3x3
imgdata3x3 = imgdata3x3
@classmethod
def setUpClass(cls):
cls.app = QtWidgets.QApplication([])

View file

@ -84,7 +84,7 @@ class SQLiteIOWriteTestCase(BeeTestCase):
metamock.assert_called_once()
def test_inserts_new_item(self):
item = BeePixmapItem(QtGui.QImage(), filename='bee.png')
item = BeePixmapItem(QtGui.QImage(), filename='bee.jpg')
item.setScale(1.3)
item.setPos(44, 55)
item.pixmap_to_bytes = MagicMock(return_value=b'abc')
@ -93,15 +93,29 @@ class SQLiteIOWriteTestCase(BeeTestCase):
assert item.save_id == 1
result = self.io.fetchone(
'SELECT pos_x, pos_y, scale, filename, sqlar.data, type '
'SELECT pos_x, pos_y, scale, filename, type, '
'sqlar.data, sqlar.name '
'FROM items '
'INNER JOIN sqlar on sqlar.item_id = items.id')
assert result[0] == 44.0
assert result[1] == 55.0
assert result[2] == 1.3
assert result[3] == 'bee.png'
assert result[4] == b'abc'
assert result[5] == 'pixmap'
assert result[3] == 'bee.jpg'
assert result[4] == 'pixmap'
assert result[5] == b'abc'
assert result[6] == '0001-bee.png'
def test_inserts_new_item_without_filename(self):
item = BeePixmapItem(QtGui.QImage())
self.scene.addItem(item)
self.io.write()
assert item.save_id == 1
result = self.io.fetchone(
'SELECT filename, sqlar.name FROM items '
'INNER JOIN sqlar on sqlar.item_id = items.id')
assert result[0] is None
assert result[1] == '0001.png'
def test_updates_existing_item(self):
item = BeePixmapItem(QtGui.QImage(), filename='bee.png')
@ -165,11 +179,6 @@ class SQLiteIOReadTestCase(BeeTestCase):
self.scene = BeeGraphicsScene(None)
def test_reads_readonly(self):
root = os.path.dirname(__file__)
imgfilename = os.path.join(root, '..', 'assets', 'test3x3.png')
with open(imgfilename, 'rb') as f:
imgdata = f.read()
with tempfile.TemporaryDirectory() as dirname:
fname = os.path.join(dirname, 'test.bee')
io = SQLiteIO(fname, self.scene, create_new=True)
@ -178,7 +187,7 @@ class SQLiteIOReadTestCase(BeeTestCase):
'VALUES (?, ?, ?, ?, ?) ',
('pixmap', 22.2, 33.3, 3.4, 'bee.png'))
io.ex('INSERT INTO sqlar (item_id, data) VALUES (?, ?)',
(1, imgdata))
(1, self.imgdata3x3))
io.connection.commit()
del(io)

View file

@ -1,7 +1,5 @@
from unittest.mock import patch, PropertyMock
import os.path
from PyQt6 import QtGui, QtWidgets
from beeref.items import BeePixmapItem
@ -11,16 +9,15 @@ from .base import BeeTestCase
class BeePixmapItemTestCase(BeeTestCase):
def test_init(self):
root = os.path.dirname(__file__)
filename = os.path.join(root, 'assets', 'test3x3.png')
item = BeePixmapItem(QtGui.QImage(filename), filename)
item = BeePixmapItem(
QtGui.QImage(self.imgfilename3x3), self.imgfilename3x3)
assert item.width == 3
assert item.height == 3
assert item.scale_factor == 1
assert item.flags() == (
QtWidgets.QGraphicsItem.GraphicsItemFlags.ItemIsMovable
| QtWidgets.QGraphicsItem.GraphicsItemFlags.ItemIsSelectable)
assert item.filename == filename
assert item.filename == self.imgfilename3x3
def test_set_scale(self):
item = BeePixmapItem(QtGui.QImage())

View file

@ -24,6 +24,9 @@ class BeeGraphicsSceneNormalizeTestCase(BeeTestCase):
item1.setScale.assert_called_once_with(1.5)
item2.setScale.assert_called_once_with(0.75)
def test_normalize_height_when_no_items(self):
self.scene.normalize_height()
def test_normalize_width(self):
item1 = MagicMock(width=100, scale_factor=1)
item2 = MagicMock(width=200, scale_factor=3)
@ -35,6 +38,9 @@ class BeeGraphicsSceneNormalizeTestCase(BeeTestCase):
item1.setScale.assert_called_once_with(1.5)
item2.setScale.assert_called_once_with(0.75)
def test_normalize_width_when_no_items(self):
self.scene.normalize_width()
def test_normalize_size(self):
item1 = MagicMock(width=100, height=200, scale_factor=1)
item2 = MagicMock(width=400, height=100, scale_factor=3)
@ -45,3 +51,6 @@ class BeeGraphicsSceneNormalizeTestCase(BeeTestCase):
item1.setScale.assert_called_once_with(math.sqrt(1.5))
item2.setScale.assert_called_once_with(math.sqrt(0.75))
def test_normalize_size_when_no_items(self):
self.scene.normalize_size()