1
+ from decimal import Decimal
2
+
1
3
import pytest
2
4
3
5
from aleph .sdk .exceptions import InvalidHashError
@@ -21,6 +23,51 @@ async def test_get_program_price_valid():
21
23
assert response == expected
22
24
23
25
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.001527777777777777" ),
50
+ payment_type = expected ["payment_type" ],
51
+ )
52
+
53
+ # Expected model for the old format
54
+ expected_model_old = PriceResponse (
55
+ required_tokens = Decimal (str (expected_old ["required_tokens" ])),
56
+ payment_type = expected_old ["payment_type" ],
57
+ )
58
+
59
+ mock_session = make_mock_get_session (expected )
60
+ mock_session_old = make_mock_get_session (expected_old )
61
+
62
+ async with mock_session :
63
+ response = await mock_session .get_program_price ("cacacacacacaca" )
64
+ assert response == expected_model
65
+
66
+ async with mock_session_old :
67
+ response = await mock_session_old .get_program_price ("cacacacacacaca" )
68
+ assert response == expected_model_old
69
+
70
+
24
71
@pytest .mark .asyncio
25
72
async def test_get_program_price_invalid ():
26
73
"""
0 commit comments