From 311631725e029e4377781a776a1781a3ecee0616 Mon Sep 17 00:00:00 2001 From: Drew Winstel Date: Sat, 18 May 2019 08:48:45 -0500 Subject: [PATCH] Add a field for default beer color inside the style model --- beers/migrations/0028_style_default_color.py | 18 ++++++++++++++++++ beers/models.py | 5 +++++ beers/test/factories.py | 1 + beers/test/test_views.py | 10 ++++++++-- 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 beers/migrations/0028_style_default_color.py diff --git a/beers/migrations/0028_style_default_color.py b/beers/migrations/0028_style_default_color.py new file mode 100644 index 00000000..7a121024 --- /dev/null +++ b/beers/migrations/0028_style_default_color.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.1 on 2019-05-18 13:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('beers', '0027_add_alt_innerspace_names'), + ] + + operations = [ + migrations.AddField( + model_name='style', + name='default_color', + field=models.CharField(blank=True, max_length=9, verbose_name='HTML color (in hex) to use if the beer has no known color'), + ), + ] diff --git a/beers/models.py b/beers/models.py index 870a3c9d..61cac586 100644 --- a/beers/models.py +++ b/beers/models.py @@ -12,6 +12,11 @@ class Style(models.Model): name = CITextField(unique=True) + default_color = models.CharField( + 'HTML color (in hex) to use if the beer has no known color', + max_length=9, # #00112233 -> RGBA + blank=True, + ) def merge_from(self, other_styles): alt_names = [] diff --git a/beers/test/factories.py b/beers/test/factories.py index 15d984f5..7b3f0a4d 100644 --- a/beers/test/factories.py +++ b/beers/test/factories.py @@ -7,6 +7,7 @@ class StyleFactory(factory.django.DjangoModelFactory): name = factory.Sequence(lambda n: 'style %d' % n) + default_color = factory.Sequence(lambda n: '#{:0>6X}'.format(n)) class Meta: model = Style diff --git a/beers/test/test_views.py b/beers/test/test_views.py index ec3d0bbc..2dc00414 100644 --- a/beers/test/test_views.py +++ b/beers/test/test_views.py @@ -6,7 +6,7 @@ from hsv_dot_beer.users.test.factories import UserFactory from taps.test.factories import TapFactory from beers.serializers import ManufacturerSerializer -from .factories import ManufacturerFactory, BeerFactory +from .factories import ManufacturerFactory, BeerFactory, StyleFactory fake = Faker() @@ -62,7 +62,8 @@ def test_patch(self): class BeerDetailTestCase(APITestCase): def setUp(self): - self.beer = BeerFactory() + self.style = StyleFactory() + self.beer = BeerFactory(style=self.style) self.url = reverse( 'beer-detail', kwargs={'pk': self.beer.pk}, ) @@ -71,6 +72,11 @@ def setUp(self): HTTP_AUTHORIZATION=f'Token {self.user.auth_token}' ) + def test_style_embedded(self): + response = self.client.get(self.url) + eq_(response.status_code, 200) + eq_(response.data['style']['default_color'], self.style.default_color) + def test_patch(self): data = { 'name': 'a beer',