Fix bugs in draw_signature and add tests

This commit is contained in:
Florent Lebreton
2013-09-29 11:18:00 +02:00
parent 95860405f3
commit ca5ba2d0f8
3 changed files with 36 additions and 3 deletions

View File

@@ -2,3 +2,4 @@ from .widgets import JSignatureWidgetTest
from .forms import JSignatureFormFieldTest from .forms import JSignatureFormFieldTest
from .fields import JSignatureFieldTest from .fields import JSignatureFieldTest
from .mixins import JSignatureFieldsMixinTest from .mixins import JSignatureFieldsMixinTest
from .utils import UtilsTest

32
jsignature/tests/utils.py Normal file
View File

@@ -0,0 +1,32 @@
import json
import os
import imghdr
from PIL import Image
from django.test import SimpleTestCase
from ..utils import draw_signature
DUMMY_VALUE = [{"x":[205,210],"y":[59,63]},{"x":[205,207],"y":[67,64]}]
DUMMY_STR_VALUE = json.dumps(DUMMY_VALUE)
class UtilsTest(SimpleTestCase):
def test_inputs(self):
# Bad str value
self.assertRaises(ValueError, draw_signature, 'foo_bar')
# Bad type value
self.assertRaises(ValueError, draw_signature, object())
# Good list value
draw_signature(DUMMY_VALUE)
# Good str value
draw_signature(DUMMY_STR_VALUE)
def test_outputs(self):
# As a file
output = draw_signature(DUMMY_VALUE, as_file=True)
self.assertTrue(os.path.isfile(output))
self.assertIsNotNone(imghdr.what(output))
# As an Image
output = draw_signature(DUMMY_VALUE)
self.assertTrue(issubclass(output.__class__, Image.Image))
self.assertTrue(all(output.getbbox()))

View File

@@ -24,8 +24,8 @@ def draw_signature(data, as_file=False):
raise ValueError raise ValueError
# Compute box # Compute box
width = max(chain(*[d['x'] for d in data])) + 10 width = max(chain(*[d['x'] for d in drawing])) + 10
height = max(chain(*[d['y'] for d in data])) + 10 height = max(chain(*[d['y'] for d in drawing])) + 10
# Draw image # Draw image
im = Image.new("RGBA", (width*AA, height*AA)) im = Image.new("RGBA", (width*AA, height*AA))
@@ -45,7 +45,7 @@ def draw_signature(data, as_file=False):
if as_file: if as_file:
ret = im._dump(format='PNG') ret = im._dump(format='PNG')
else: else:
ret = img ret = im
return ret return ret