From 6fab2703a1ecf1a6f5b81b0566bd2356347947f5 Mon Sep 17 00:00:00 2001 From: Konsta Vesterinen Date: Mon, 20 Jan 2014 17:52:41 +0200 Subject: [PATCH] Fix color type string processing --- sqlalchemy_utils/types/color.py | 2 +- tests/types/test_color.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/sqlalchemy_utils/types/color.py b/sqlalchemy_utils/types/color.py index bd766ed..d5baf17 100644 --- a/sqlalchemy_utils/types/color.py +++ b/sqlalchemy_utils/types/color.py @@ -61,7 +61,7 @@ class ColorType(types.TypeDecorator, ScalarCoercible): self.impl = types.Unicode(max_length) def process_bind_param(self, value, dialect): - if value: + if value and isinstance(value, colour.Color): return six.text_type(getattr(value, self.STORE_FORMAT)) return value diff --git a/tests/types/test_color.py b/tests/types/test_color.py index 59eb512..5d970b1 100644 --- a/tests/types/test_color.py +++ b/tests/types/test_color.py @@ -1,3 +1,4 @@ +from flexmock import flexmock from pytest import mark import sqlalchemy as sa from sqlalchemy_utils import ColorType @@ -18,6 +19,22 @@ class TestColorType(TestCase): self.Document = Document + def test_string_parameter_processing(self): + from colour import Color + + flexmock(ColorType).should_receive('_coerce').and_return( + u'white' + ) + document = self.Document( + bg_color='white' + ) + + self.session.add(document) + self.session.commit() + + document = self.session.query(self.Document).first() + assert document.bg_color.hex == Color(u'white').hex + def test_color_parameter_processing(self): from colour import Color