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
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>")
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
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_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
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")
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')
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
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
def get_kilogram_sales_unit(decimals): return SalesUnit(name="Kilograms", symbol='kg', decimals=decimals)
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"
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"