1+ from decimal import Decimal
2+
13import pytest
24
35from aleph .sdk .exceptions import InvalidHashError
@@ -21,6 +23,56 @@ async def test_get_program_price_valid():
2123 assert response == expected
2224
2325
26+ @pytest .mark .asyncio
27+ async def test_get_program_price_cost_and_required_token ():
28+ """
29+ Test that the get_program_price method returns the correct PriceResponse
30+ when
31+ 1 ) cost & required_token is here (priority to cost) who is a string that convert to decimal
32+ 2 ) When only required_token is here who is a float that now would be to be convert to decimal
33+ """
34+ # Case 1
35+ expected = {
36+ "required_tokens" : 0.001527777777777778 ,
37+ "cost" : "0.001527777777777777" ,
38+ "payment_type" : "credit" ,
39+ }
40+
41+ # Case 2
42+ expected_old = {
43+ "required_tokens" : 0.001527777777777778 ,
44+ "payment_type" : "credit" ,
45+ }
46+
47+ # Expected model using the cost field as the source of truth
48+ expected_model = PriceResponse (
49+ required_tokens = Decimal ("0.001527777777777778" ),
50+ cost = expected ["cost" ],
51+ payment_type = expected ["payment_type" ],
52+ )
53+
54+ # Expected model for the old format
55+ expected_model_old = PriceResponse (
56+ required_tokens = Decimal (str (expected_old ["required_tokens" ])),
57+ payment_type = expected_old ["payment_type" ],
58+ )
59+
60+ mock_session = make_mock_get_session (expected )
61+ mock_session_old = make_mock_get_session (expected_old )
62+
63+ async with mock_session :
64+ response = await mock_session .get_program_price ("cacacacacacaca" )
65+ assert str (response .required_tokens ) == str (expected_model .required_tokens )
66+ assert response .cost == expected_model .cost
67+ assert response .payment_type == expected_model .payment_type
68+
69+ async with mock_session_old :
70+ response = await mock_session_old .get_program_price ("cacacacacacaca" )
71+ assert str (response .required_tokens ) == str (expected_model_old .required_tokens )
72+ assert response .cost == expected_model_old .cost
73+ assert response .payment_type == expected_model_old .payment_type
74+
75+
2476@pytest .mark .asyncio
2577async def test_get_program_price_invalid ():
2678 """
0 commit comments