class MeasurementTestModel(models.Model): measurement_distance = MeasurementField( measurement=measures.Distance, validators=[ MinValueValidator(measures.Distance(mi=1.0)), MaxValueValidator(measures.Distance(mi=3.0)) ], blank=True, null=True, ) measurement_distance_km = MeasurementField( measurement=measures.Distance, unit_choices=(('km', 'km'),), validators=[ MinValueValidator(measures.Distance(km=1.0)), MaxValueValidator(measures.Distance(km=3.0)) ], blank=True, null=True, ) measurement_weight = MeasurementField( measurement=measures.Weight, validators=[ MinValueValidator(measures.Weight(kg=1.0)), MaxValueValidator(measures.Weight(kg=3.0)) ], blank=True, null=True, ) measurement_speed = MeasurementField( measurement=measures.Speed, validators=[ MinValueValidator(measures.Speed(mph=1.0)), MaxValueValidator(measures.Speed(mph=3.0)) ], blank=True, null=True, ) measurement_temperature = MeasurementField( measurement=measures.Temperature, validators=[ MinValueValidator(measures.Temperature(1.0)), MaxValueValidator(measures.Temperature(3.0)) ], blank=True, null=True, ) measurement_speed_mph = MeasurementField( measurement=measures.Speed, unit_choices=(('mi__hr', 'mph'),), validators=[ MinValueValidator(measures.Speed(mph=1.0)), MaxValueValidator(measures.Speed(mph=3.0)) ], blank=True, null=True, ) def __unicode__(self): return self.measurement
def test_form_bidir(self): form = MeasurementTestForm({ 'measurement_speed_0': 2.0, 'measurement_speed_1': 'mi__hr', }) assert form.is_valid() obj = form.save() assert obj.measurement_speed == measures.Speed(mi__hr=2)
def test_form_bidir(self): form = MeasurementTestForm({ "measurement_speed_0": 2.0, "measurement_speed_1": "mi__hr" }) assert form.is_valid() obj = form.save() assert obj.measurement_speed == measures.Speed(mi__hr=2)
def test_storage_of_bidimensional_measurement(self): measurement = measures.Speed(mph=20) instance = MeasurementTestModel() instance.measurement_speed = measurement instance.save() retrieved = MeasurementTestModel.objects.get(pk=instance.pk) assert retrieved.measurement_speed == measurement
def test_storage_and_retrieval_of_bidimensional_measurement(self): original_value = measures.Speed(mph=65) MeasurementTestModel.objects.create(measurement_speed=original_value, ) retrieved = MeasurementTestModel.objects.get() new_value = retrieved.measurement_speed assert new_value == original_value assert type(new_value) == type(original_value) assert new_value.unit == original_value.STANDARD_UNIT
assert kwargs["blank"] == field.blank assert kwargs["null"] == field.null assert kwargs["measurement"] == field.measurement new_cls = module_loading.import_string(path) new_field = new_cls(name=name, *args, **kwargs) assert type(field) == type(new_field) assert field.deconstruct() == (name, path, args, kwargs) @pytest.mark.parametrize( "fieldname, measure, expected_serialized_value", [ ("measurement_weight", measures.Weight(kg=4.0), "4.0:kg"), ("measurement_speed", measures.Speed(mi__hr=2.0), "2.0:mi__hr"), ], ) class TestSerialization: def test_deconstruct(self, fieldname, measure, expected_serialized_value): instance = MeasurementTestModel(pk=0) setattr(instance, fieldname, measure) serialized_object = serializers.serialize("python", [instance])[0] serialized_value = serialized_object["fields"][fieldname] assert isinstance(serialized_value, str) assert serialized_value == expected_serialized_value deserialized_obj = next( serializers.deserialize("python", [serialized_object])) deserialized_value = getattr(deserialized_obj.object, fieldname)
class MeasurementTestModel(models.Model): measurement_distance = MeasurementField( measurement=measures.Distance, validators=[ MinValueValidator(measures.Distance(mi=1.0)), MaxValueValidator(measures.Distance(mi=3.0)), ], blank=True, null=True, ) measurement_distance_km = MeasurementField( measurement=measures.Distance, unit_choices=(("km", "km"), ), validators=[ MinValueValidator(measures.Distance(km=1.0)), MaxValueValidator(measures.Distance(km=3.0)), ], blank=True, null=True, ) measurement_weight = MeasurementField( measurement=measures.Weight, validators=[ MinValueValidator(measures.Weight(kg=1.0)), MaxValueValidator(measures.Weight(kg=3.0)), ], blank=True, null=True, ) measurement_speed = MeasurementField( measurement=measures.Speed, validators=[ MinValueValidator(measures.Speed(mph=1.0)), MaxValueValidator(measures.Speed(mph=3.0)), ], blank=True, null=True, ) measurement_temperature = MeasurementField( measurement=measures.Temperature, validators=[ MinValueValidator(measures.Temperature(1.0)), MaxValueValidator(measures.Temperature(3.0)), ], blank=True, null=True, ) measurement_temperature2 = MeasurementField( measurement_class="Temperature", validators=[ MinValueValidator(measures.Temperature(1.0)), MaxValueValidator(measures.Temperature(3.0)), ], blank=True, null=True, ) measurement_speed_mph = MeasurementField( measurement=measures.Speed, unit_choices=(("mi__hr", "mph"), ), validators=[ MinValueValidator(measures.Speed(mph=1.0)), MaxValueValidator(measures.Speed(mph=3.0)), ], blank=True, null=True, ) measurement_custom_degree_per_time = MeasurementField( measurement=DegreePerTime, blank=True, null=True, ) measurement_custom_temperature = MeasurementField( measurement=Temperature, blank=True, null=True, ) measurement_custom_time = MeasurementField( measurement=Time, blank=True, null=True, ) def __str__(self): return self.measurement