| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import pytest
- from room_cal._utils import services as _services_list
- from room_cal.pricing.calc import (
- net_to_list,
- list_to_net,
- list_to_retail,
- retail_to_list,
- net_to_retail,
- retail_to_net,
- )
- _SERVICES = _services_list()
- _NET = 100.0
- @pytest.mark.parametrize('service', _SERVICES)
- def test_net_to_list_round_trip(service):
- result = list_to_net(service, net_to_list(service, _NET))
- assert result == pytest.approx(_NET, abs=0.02)
- @pytest.mark.parametrize('service', _SERVICES)
- def test_list_to_retail_round_trip(service):
- list_price = net_to_list(service, _NET)
- result = retail_to_list(service, list_to_retail(service, list_price))
- assert result == pytest.approx(list_price, abs=0.02)
- @pytest.mark.parametrize('service', _SERVICES)
- def test_net_to_retail_round_trip(service):
- result = retail_to_net(service, net_to_retail(service, _NET))
- assert result == pytest.approx(_NET, abs=0.02)
- @pytest.mark.parametrize('service', _SERVICES)
- def test_list_exceeds_net(service):
- assert net_to_list(service, _NET) > _NET
- @pytest.mark.parametrize('service', _SERVICES)
- def test_retail_exceeds_list(service):
- list_price = net_to_list(service, _NET)
- assert list_to_retail(service, list_price) > list_price
- @pytest.mark.parametrize('service', _SERVICES)
- def test_retail_exceeds_net(service):
- assert net_to_retail(service, _NET) > _NET
- def test_services_produce_different_list_prices():
- prices = {s: net_to_list(s, _NET) for s in _SERVICES}
- assert len(set(prices.values())) > 1, "All services returned identical list prices"
- def test_invalid_service_raises():
- with pytest.raises(ValueError):
- net_to_list('nonexistent_service', _NET)
- @pytest.mark.parametrize('service', _SERVICES)
- def test_monotone_higher_net_gives_higher_list(service):
- assert net_to_list(service, 200.0) > net_to_list(service, 100.0)
- @pytest.mark.parametrize('service', _SERVICES)
- def test_monotone_higher_list_gives_higher_retail(service):
- assert list_to_retail(service, 200.0) > list_to_retail(service, 100.0)
|