Skip to content

Commit a0d6497

Browse files
committed
Enhance mock nft detector
1 parent 6cec73f commit a0d6497

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

mock/nft_mock.go

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,68 @@
11
package mock
22

33
import (
4+
"sync"
5+
6+
"github.com/ethereum/go-ethereum/common"
47
"github.com/ethereum/go-ethereum/core/types"
58
)
69

710
type MockNFTDetector struct {
811
IsNFTTransactionFunc func(tx *types.Transaction) bool
12+
knownContracts sync.Map
13+
callCount int
914
}
1015

1116
func NewMockNFTDetector() *MockNFTDetector {
12-
return &MockNFTDetector{
17+
detector := &MockNFTDetector{
1318
IsNFTTransactionFunc: func(tx *types.Transaction) bool {
1419
return false
1520
},
1621
}
22+
23+
// Initialize with some test NFT contract addresses
24+
testContracts := map[string]bool{
25+
"0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D": true, // Test BAYC
26+
"0x23581767a106ae21c074b2276D25e5C3e136a68b": true, // Test Moonbirds
27+
}
28+
29+
for addr := range testContracts {
30+
detector.knownContracts.Store(common.HexToAddress(addr), true)
31+
}
32+
33+
return detector
1734
}
1835

1936
func (m *MockNFTDetector) IsNFTTransaction(tx *types.Transaction) bool {
37+
m.callCount++
38+
2039
if m.IsNFTTransactionFunc != nil {
2140
return m.IsNFTTransactionFunc(tx)
2241
}
23-
return false
42+
43+
// Default implementation using known contracts
44+
if tx.To() == nil {
45+
return false
46+
}
47+
48+
isContract, exists := m.knownContracts.Load(*tx.To())
49+
return exists && isContract.(bool)
50+
}
51+
52+
// Helper methods for testing
53+
func (m *MockNFTDetector) GetCallCount() int {
54+
return m.callCount
55+
}
56+
57+
func (m *MockNFTDetector) AddKnownContract(address common.Address) {
58+
m.knownContracts.Store(address, true)
59+
}
60+
61+
func (m *MockNFTDetector) RemoveKnownContract(address common.Address) {
62+
m.knownContracts.Delete(address)
63+
}
64+
65+
func (m *MockNFTDetector) Reset() {
66+
m.callCount = 0
67+
m.knownContracts = sync.Map{}
2468
}

0 commit comments

Comments
 (0)