|
24 | 24 | test_nft_type = BtcNftType.COLLECTION |
25 | 25 |
|
26 | 26 |
|
27 | | -def test_parse_nfts(requests_mock, unisat_client, inscription_data): |
28 | | - """Test basic NFT parsing with valid data""" |
29 | | - requests_mock.get( |
30 | | - f"{unisat_client.api_options.base_url}v1/indexer/address/{nfts_test_address}/inscription-data", |
31 | | - text=inscription_data, |
32 | | - ) |
33 | | - |
34 | | - result = unisat_client.fetch_nfts(nfts_test_address) |
35 | | - assert not result.errors, f"Fetch errors: {result.errors}" |
36 | | - |
37 | | - parsed = unisat_client.parse_nfts(result) |
38 | | - assert not parsed.errors, f"Parse errors: {parsed.errors}" |
39 | | - assert len(parsed.data) == 2 |
40 | | - |
41 | | - # Test first NFT |
42 | | - nft1 = parsed.data[0] |
43 | | - assert ( |
44 | | - nft1.ident |
45 | | - == "6fb976ab49dcec017f1e2015b625126c5c4d6b71174f5bc5af4f39b274a4b6b5i0" |
46 | | - ) |
47 | | - assert ( |
48 | | - nft1.contract |
49 | | - == "6fb976ab49dcec017f1e2015b625126c5c4d6b71174f5bc5af4f39b274a4b6b5" |
50 | | - ) |
51 | | - assert nft1.standard == "ordinals" |
52 | | - assert nft1.name == "Ordinal #12345" |
53 | | - assert nft1.amount == 1 |
54 | | - assert nft1.blockchain == Blockchain.BITCOIN |
55 | | - assert nft1.asset_type == AssetType.AVAILABLE |
56 | | - |
57 | | - # Test second NFT |
58 | | - nft2 = parsed.data[1] |
59 | | - assert ( |
60 | | - nft2.ident |
61 | | - == "7fb976ab49dcec017f1e2015b625126c5c4d6b71174f5bc5af4f39b274a4b6b5i0" |
62 | | - ) |
63 | | - assert ( |
64 | | - nft2.contract |
65 | | - == "7fb976ab49dcec017f1e2015b625126c5c4d6b71174f5bc5af4f39b274a4b6b5" |
66 | | - ) |
67 | | - assert nft2.standard == "ordinals" |
68 | | - assert nft2.name == "Ordinal #12346" |
69 | | - assert nft2.amount == 1 |
70 | | - assert nft2.blockchain == Blockchain.BITCOIN |
71 | | - assert nft2.asset_type == AssetType.AVAILABLE |
72 | | - |
73 | | - |
74 | | -def test_parse_nfts_edge_cases( |
75 | | - requests_mock, unisat_client, inscription_data_edge_cases |
76 | | -): |
77 | | - """Test NFT parsing with various edge cases""" |
78 | | - requests_mock.get( |
79 | | - f"{unisat_client.api_options.base_url}v1/indexer/address/{nfts_test_address}/inscription-data", |
80 | | - text=inscription_data_edge_cases, |
81 | | - ) |
82 | | - |
83 | | - result = unisat_client.fetch_nfts(nfts_test_address) |
84 | | - assert not result.errors, f"Fetch errors: {result.errors}" |
85 | | - |
86 | | - parsed = unisat_client.parse_nfts(result) |
87 | | - assert not parsed.errors, f"Parse errors: {parsed.errors}" |
88 | | - # Should only parse the last inscription as it's the only one with all required fields |
89 | | - assert len(parsed.data) == 1 |
90 | | - |
91 | | - nft = parsed.data[0] |
92 | | - assert ( |
93 | | - nft.ident |
94 | | - == "8fb976ab49dcec017f1e2015b625126c5c4d6b71174f5bc5af4f39b274a4b6b5i0" |
95 | | - ) |
96 | | - assert ( |
97 | | - nft.contract |
98 | | - == "8fb976ab49dcec017f1e2015b625126c5c4d6b71174f5bc5af4f39b274a4b6b5" |
99 | | - ) |
100 | | - assert nft.standard == "ordinals" |
101 | | - assert nft.name == "Ordinal #2" |
102 | | - assert nft.amount == 1 |
103 | | - assert nft.blockchain == Blockchain.BITCOIN |
104 | | - assert nft.asset_type == AssetType.AVAILABLE |
105 | | - |
106 | | - |
107 | 27 | def test_fetch_collection(requests_mock, unisat_client, collection_stats): |
108 | 28 | requests_mock.post( |
109 | 29 | f"{unisat_client.api_options.base_url}v3/market/collection/auction/collection_statistic", |
|
0 commit comments