Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    def test_storage_of_float_value(self):
        instance = MeasurementTestModel()
        instance.measurement_weight = 21.4
        instance.save()

        retrieved = MeasurementTestModel.objects.get(pk=instance.pk)

        assert retrieved.measurement_weight == measures.Weight(g=21.4)
Ejemplo n.º 3
0
    def test_storage_of_standard_measurement(self):
        measurement = measures.Weight(g=20)

        instance = MeasurementTestModel()
        instance.measurement_weight = measurement
        instance.save()

        retrieved = MeasurementTestModel.objects.get(pk=instance.pk)

        assert retrieved.measurement_weight == measurement
Ejemplo n.º 4
0
    def test_storage_and_retrieval_of_measurement(self):
        original_value = measures.Weight(lb=124)

        MeasurementTestModel.objects.create(
            measurement_weight=original_value, )

        retrieved = MeasurementTestModel.objects.get()
        new_value = retrieved.measurement_weight

        assert new_value == original_value
        assert type(new_value) == type(original_value)
        assert new_value.unit == original_value.STANDARD_UNIT
Ejemplo n.º 5
0
        assert args == []
        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]))
Ejemplo n.º 6
0
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