TST: 100% coverage

This commit is contained in:
Matthew Ryan Dillon 2016-08-21 18:47:16 -07:00
parent 02a21306fe
commit 8622e2323d
8 changed files with 166 additions and 79 deletions

View file

@ -1,6 +1,7 @@
from django.contrib import admin
from .models import MeasurementUnit, MeasurementType, Container, Material, Color
from .models import (MeasurementUnit, MeasurementType, Container, Material,
Color)
class MeasurementUnitAdmin(admin.ModelAdmin):
@ -13,56 +14,52 @@ class MeasurementUnitAdmin(admin.ModelAdmin):
class MeasurementTypeAdmin(admin.ModelAdmin):
list_display = ('name', 'code', 'measurement_type_class', 'description',
'measurement_unit_code', 'sort_order')
'measurement_unit_code', 'sort_order')
list_display_links = ('name',)
search_fields = ('name', 'code', 'measurement_type_class',
'default_measurement_unit__code', 'description')
'default_measurement_unit__code', 'description')
list_per_page = 25
fields = ('name', 'code', 'measurement_type_class', 'description',
'default_measurement_unit', 'sort_order')
'default_measurement_unit', 'sort_order')
def measurement_unit_code(self, obj):
if obj.default_measurement_unit:
return obj.default_measurement_unit.code
return obj.default_measurement_unit
dmu = obj.default_measurement_unit
return dmu.code if dmu else dmu
measurement_unit_code.admin_order_field = 'default_measurement_unit__code'
measurement_unit_code.short_description = 'Default Measurement Unit'
class ContainerAdmin(admin.ModelAdmin):
list_display = ('name', 'code', 'application', 'color_name', 'material_name',
'volume', 'measurement_unit_name', 'sort_order')
list_display = ('name', 'code', 'application', 'color_name',
'material_name', 'volume', 'measurement_unit_name',
'sort_order')
list_display_links = ('name',)
search_fields = ('name', 'code', 'application', 'color__name',
'material__name', 'volume', 'measurement_unit__name')
'material__name', 'volume', 'measurement_unit__name')
list_per_page = 25
fields = ('name', 'code', 'application', 'color', 'material',
'volume', 'measurement_unit', 'sort_order')
fields = ('name', 'code', 'application', 'color', 'material', 'volume',
'measurement_unit', 'sort_order')
def color_name(self, obj):
if obj.color:
return obj.color.name
return obj.color
return obj.color.name if obj.color else obj.color
color_name.admin_order_field = 'color__name'
color_name.short_description = 'Color'
def material_name(self, obj):
if obj.material:
return obj.material.name
return obj.material
return obj.material.name if obj.material else obj.material
material_name.admin_order_field = 'material__name'
material_name.short_description = 'Material'
def measurement_unit_name(self, obj):
if obj.measurement_unit:
return obj.measurement_unit.name
return obj.measurement_unit
mu = obj.measurement_unit
return mu.name if mu else mu
measurement_unit_name.admin_order_field = 'measurement_unit__name'
measurement_unit_name.short_description = 'Measurement Unit'
class MaterialAdmin(admin.ModelAdmin):
list_display = ('name', 'code', 'material_class', 'description', 'sort_order')
list_display = ('name', 'code', 'material_class', 'description',
'sort_order')
list_display_links = ('name',)
search_fields = ('name', 'code', 'material_class', 'description')
list_per_page = 25

View file

@ -0,0 +1,41 @@
from django.test import TestCase
from django.contrib.admin.sites import AdminSite
from ..models import MeasurementType, Container
from ..admin import MeasurementTypeAdmin, ContainerAdmin
from .factories import MeasurementTypeFactory, ContainerFactory
class MeasurementTypeAdminTests(TestCase):
def setUp(self):
self.mu = MeasurementTypeFactory()
self.site = AdminSite()
def test_list_display(self):
admin_obj = MeasurementTypeAdmin(MeasurementType, self.site)
self.assertEqual(admin_obj.check(), [])
mu_code_from_callable = admin_obj.measurement_unit_code(self.mu)
self.assertEqual(mu_code_from_callable,
self.mu.default_measurement_unit.code)
class ContainerAdminTests(TestCase):
def setUp(self):
self.container = ContainerFactory()
self.site = AdminSite()
def test_list_display(self):
admin_obj = ContainerAdmin(Container, self.site)
self.assertEqual(admin_obj.check(), [])
color_name_from_callable = admin_obj.color_name(self.container)
self.assertEqual(color_name_from_callable, self.container.color.name)
material_name_from_callable = admin_obj.material_name(self.container)
self.assertEqual(material_name_from_callable,
self.container.material.name)
mu_name_from_callable = admin_obj.measurement_unit_name(self.container)
self.assertEqual(mu_name_from_callable,
self.container.measurement_unit.name)