Beispiel #1
0
def test_sales_unit_as_display_unit():
    sales_unit = SalesUnit(decimals=3)
    display_unit = SalesUnitAsDisplayUnit(sales_unit)
    assert display_unit.internal_unit == sales_unit
    assert display_unit.ratio == 1
    assert display_unit.decimals == sales_unit.decimals
    assert display_unit.comparison_value == 1
    assert display_unit.allow_bare_number is False
    assert display_unit.default is False
    assert display_unit.pk is None
    assert display_unit == display_unit

    # Name and symbol should be "lazy" to allow language switch
    sales_unit.set_current_language('en')
    sales_unit.symbol = "Kg"
    sales_unit.name = "Kilogram"
    assert display_unit.name == sales_unit.name
    assert display_unit.symbol == sales_unit.symbol
    assert '{}'.format(display_unit) == sales_unit.name
    sales_unit.set_current_language('fi')
    sales_unit.name = "kilogramma"
    sales_unit.symbol = "kg"
    assert display_unit.name == sales_unit.name
    assert display_unit.symbol == sales_unit.symbol
    assert '{}'.format(display_unit) == sales_unit.name
Beispiel #2
0
def test_unit_interface_init_unit_compatibility_check():
    su1 = SalesUnit(identifier="SU1", symbol="su1")
    su2 = SalesUnit(identifier="SU2", symbol="su2")
    du = DisplayUnit(name="DU", symbol="du", internal_unit=su1)
    UnitInterface(su1, du)  # OK
    with pytest.raises(AssertionError) as exc_info:
        UnitInterface(su2, du)
    assert str(exc_info.value) == ("Incompatible units: <SalesUnit:None-SU2>, <DisplayUnit:None>")
Beispiel #3
0
def test_sales_unit_as_display_unit():
    sales_unit = SalesUnit(decimals=3)
    display_unit = SalesUnitAsDisplayUnit(sales_unit)
    assert display_unit.internal_unit == sales_unit
    assert display_unit.ratio == 1
    assert display_unit.decimals == sales_unit.decimals
    assert display_unit.comparison_value == 1
    assert display_unit.allow_bare_number is False
    assert display_unit.default is False
    assert display_unit.pk is None
    assert display_unit == display_unit

    # Name and symbol should be "lazy" to allow language switch
    sales_unit.set_current_language('en')
    sales_unit.symbol = "Kg"
    sales_unit.name = "Kilogram"
    assert display_unit.name == sales_unit.name
    assert display_unit.symbol == sales_unit.symbol
    assert '{}'.format(display_unit) == sales_unit.name
    sales_unit.set_current_language('fi')
    sales_unit.name = "kilogramma"
    sales_unit.symbol = "kg"
    assert display_unit.name == sales_unit.name
    assert display_unit.symbol == sales_unit.symbol
    assert '{}'.format(display_unit) == sales_unit.name
Beispiel #4
0
def test_sales_unit_short_name():
    # test the deprecated compatibility property
    assert SalesUnit(symbol="kg").short_name == "kg"
    assert SalesUnit(short_name="kg").symbol == "kg"
    unit = SalesUnit()
    unit.short_name = "oz"
    assert unit.symbol == "oz"
    en_sales_units = SalesUnit.objects.language("en")
    unit2 = en_sales_units.create(decimals=1, name="Gram", short_name="g")
    assert unit2.name == "Gram"
    assert unit2.symbol == "g"
    unit3 = en_sales_units.get(pk=unit2.pk)
    unit3.set_current_language("en")
    assert unit3.name == "Gram"
    assert unit3.symbol == "g"
Beispiel #5
0
def test_sales_unit_short_name():
    # test the deprecated compatibility property
    assert SalesUnit(symbol="kg").short_name == "kg"
    assert SalesUnit(short_name="kg").symbol == "kg"
    unit = SalesUnit()
    unit.short_name = "oz"
    assert unit.symbol == "oz"
    en_sales_units = SalesUnit.objects.language("en")
    unit2 = en_sales_units.create(decimals=1, name="Gram", short_name="g")
    assert unit2.name == "Gram"
    assert unit2.symbol == "g"
    unit3 = en_sales_units.get(pk=unit2.pk)
    unit3.set_current_language('en')
    assert unit3.name == "Gram"
    assert unit3.symbol == "g"
def test_unit_interface_init_from_display_unit():
    sales_unit = SalesUnit(name="Test", symbol="tst")
    display_unit = DisplayUnit(name="Test2", symbol="t2",
                               internal_unit=sales_unit)
    unit = UnitInterface(display_unit=display_unit)
    assert unit.display_unit == display_unit
    assert unit.internal_unit == sales_unit
Beispiel #7
0
def test_sales_unit_decimals():
    assert SalesUnit(decimals=0).quantity_step == 1
    assert not SalesUnit(decimals=0).allow_fractions
    assert SalesUnit(decimals=1).quantity_step == Decimal("0.1")
    assert SalesUnit(decimals=1).allow_fractions
    assert SalesUnit(decimals=10).quantity_step == Decimal("0.0000000001")
    assert SalesUnit(decimals=2).round("1.509") == Decimal("1.51")
    assert SalesUnit(decimals=0).round("1.5") == Decimal("2")
Beispiel #8
0
def test_unit_interface_display_precision():
    sales_unit = SalesUnit(symbol="t")
    assert UnitInterface(
        display_unit=DisplayUnit(internal_unit=sales_unit, decimals=9
                                 )).display_precision == Decimal('0.000000001')
    assert UnitInterface(
        display_unit=DisplayUnit(internal_unit=sales_unit, decimals=4
                                 )).display_precision == Decimal('0.0001')
    assert UnitInterface(
        display_unit=DisplayUnit(internal_unit=sales_unit, decimals=2
                                 )).display_precision == Decimal('0.01')
    assert UnitInterface(
        display_unit=DisplayUnit(internal_unit=sales_unit,
                                 decimals=0)).display_precision == Decimal('1')
Beispiel #9
0
def test_unit_interface_init_from_internal_unit():
    sales_unit = SalesUnit(name="Test", symbol="tst")
    unit = UnitInterface(sales_unit)
    assert unit.internal_unit == sales_unit
    assert isinstance(unit.display_unit, SalesUnitAsDisplayUnit)
    assert unit.display_unit.internal_unit == sales_unit
Beispiel #10
0
def test_sales_unit_as_display_unit_allow_bare_number():
    each = SalesUnit(decimals=0, symbol='ea.')
    kg = SalesUnit(decimals=3, symbol='kg')
    assert SalesUnitAsDisplayUnit(each).allow_bare_number is True
    assert SalesUnitAsDisplayUnit(kg).allow_bare_number is False
Beispiel #11
0
def get_kilogram_sales_unit(decimals):
    return SalesUnit(name="Kilograms", symbol='kg', decimals=decimals)
Beispiel #12
0
def test_sales_unit_str():
    unit = SalesUnit()
    assert str(unit) == ""

    unit.identifier = "test"
    assert str(unit) == "test"

    unit.set_current_language("en")
    unit.name = "en"
    assert str(unit) == "en"

    unit.set_current_language("fi")
    unit.name = "fi"
    assert str(unit) == "fi"

    unit.set_current_language("en")
    assert unit.name == "en"

    # test fallback
    unit.set_current_language("ja")
    assert unit.name == "en"
Beispiel #13
0
def test_sales_unit_str():
    unit = SalesUnit()
    assert str(unit) == ""

    unit.identifier = "test"
    assert str(unit) == "test"

    unit.set_current_language("en")
    unit.name = "en"
    assert str(unit) == "en"

    unit.set_current_language("fi")
    unit.name = "fi"
    assert str(unit) == "fi"

    unit.set_current_language("en")
    assert unit.name == "en"

    # test fallback
    unit.set_current_language("ja")
    assert unit.name == "en"