diff --git a/jsignature/tests/__init__.py b/jsignature/tests/__init__.py index be2e4bb..29ac698 100644 --- a/jsignature/tests/__init__.py +++ b/jsignature/tests/__init__.py @@ -2,3 +2,4 @@ from .widgets import JSignatureWidgetTest from .forms import JSignatureFormFieldTest from .fields import JSignatureFieldTest from .mixins import JSignatureFieldsMixinTest +from .utils import UtilsTest diff --git a/jsignature/tests/utils.py b/jsignature/tests/utils.py new file mode 100644 index 0000000..bf3c827 --- /dev/null +++ b/jsignature/tests/utils.py @@ -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())) diff --git a/jsignature/utils.py b/jsignature/utils.py index e41a189..320df90 100644 --- a/jsignature/utils.py +++ b/jsignature/utils.py @@ -24,8 +24,8 @@ def draw_signature(data, as_file=False): raise ValueError # Compute box - width = max(chain(*[d['x'] for d in data])) + 10 - height = max(chain(*[d['y'] for d in data])) + 10 + width = max(chain(*[d['x'] for d in drawing])) + 10 + height = max(chain(*[d['y'] for d in drawing])) + 10 # Draw image im = Image.new("RGBA", (width*AA, height*AA)) @@ -45,7 +45,7 @@ def draw_signature(data, as_file=False): if as_file: ret = im._dump(format='PNG') else: - ret = img + ret = im return ret