示例#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
    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)
示例#3
0
    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
示例#5
0
    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
示例#6
0
        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)
示例#7
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