@@ -47,7 +47,7 @@ func TestNewCachedFetcher_WithDefaults(t *testing.T) {
4747 mockDB := new (mockTokenDB )
4848
4949 // Test with zero values (should use defaults)
50- fetcher := newCachedFetcher (mockDB , 0 , 0 , 0 )
50+ fetcher := NewCachedFetcher (mockDB , 0 , 0 , 0 )
5151
5252 assert .NotNil (t , fetcher )
5353 assert .Equal (t , defaultCacheFreshnessInterval , fetcher .freshnessInterval )
@@ -62,7 +62,7 @@ func TestNewCachedFetcher_WithCustomValues(t *testing.T) {
6262 customFreshness := 60 * time .Second
6363 customMaxQueries := 200
6464
65- fetcher := newCachedFetcher (mockDB , customSize , customFreshness , customMaxQueries )
65+ fetcher := NewCachedFetcher (mockDB , customSize , customFreshness , customMaxQueries )
6666
6767 assert .NotNil (t , fetcher )
6868 assert .Equal (t , customFreshness , fetcher .freshnessInterval )
@@ -72,13 +72,13 @@ func TestNewCachedFetcher_WithCustomValues(t *testing.T) {
7272
7373func TestCachedFetcher_IsCacheStale (t * testing.T ) {
7474 mockDB := new (mockTokenDB )
75- fetcher := newCachedFetcher (mockDB , 0 , 100 * time .Millisecond , 0 )
75+ fetcher := NewCachedFetcher (mockDB , 0 , 100 * time .Millisecond , 0 )
7676
7777 // Initially cache should be stale (lastFetched is zero time)
7878 assert .True (t , fetcher .isCacheStale ())
7979
8080 // Update lastFetched to now
81- fetcher .lastFetched = time .Now ()
81+ atomic . StoreInt64 ( & fetcher .lastFetched , time .Now (). UnixNano () )
8282 assert .False (t , fetcher .isCacheStale ())
8383
8484 // Wait for cache to become stale
@@ -89,7 +89,7 @@ func TestCachedFetcher_IsCacheStale(t *testing.T) {
8989func TestCachedFetcher_IsCacheOverused (t * testing.T ) {
9090 mockDB := new (mockTokenDB )
9191 maxQueries := 5
92- fetcher := newCachedFetcher (mockDB , 0 , 0 , maxQueries )
92+ fetcher := NewCachedFetcher (mockDB , 0 , 0 , maxQueries )
9393
9494 // Initially not overused
9595 assert .False (t , fetcher .isCacheOverused ())
@@ -107,7 +107,7 @@ func TestCachedFetcher_IsCacheOverused(t *testing.T) {
107107
108108func TestCachedFetcher_Update (t * testing.T ) {
109109 mockDB := new (mockTokenDB )
110- fetcher := newCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
110+ fetcher := NewCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
111111
112112 // Create test tokens
113113 tokens := []* token2.UnspentTokenInWallet {
@@ -158,7 +158,7 @@ func TestCachedFetcher_Update(t *testing.T) {
158158
159159func TestCachedFetcher_UnspentTokensIteratorBy_CacheHit (t * testing.T ) {
160160 mockDB := new (mockTokenDB )
161- fetcher := newCachedFetcher (mockDB , 0 , 10 * time .Second , 100 )
161+ fetcher := NewCachedFetcher (mockDB , 0 , 10 * time .Second , 100 )
162162
163163 // Populate cache
164164 tokens := []* token2.UnspentTokenInWallet {
@@ -179,7 +179,7 @@ func TestCachedFetcher_UnspentTokensIteratorBy_CacheHit(t *testing.T) {
179179
180180 require .NoError (t , err )
181181 assert .NotNil (t , it )
182- assert .True (t , it .(enhancedIterator [ * token2. UnspentTokenInWallet ] ).HasNext ())
182+ assert .True (t , it .(interface { HasNext () bool } ).HasNext ())
183183
184184 // Verify query counter incremented
185185 assert .Equal (t , uint32 (1 ), atomic .LoadUint32 (& fetcher .queriesResponded ))
@@ -189,7 +189,7 @@ func TestCachedFetcher_UnspentTokensIteratorBy_CacheHit(t *testing.T) {
189189
190190func TestCachedFetcher_UnspentTokensIteratorBy_CacheMiss (t * testing.T ) {
191191 mockDB := new (mockTokenDB )
192- fetcher := newCachedFetcher (mockDB , 0 , 10 * time .Second , 100 )
192+ fetcher := NewCachedFetcher (mockDB , 0 , 10 * time .Second , 100 )
193193
194194 // Populate cache with different key
195195 tokens := []* token2.UnspentTokenInWallet {
@@ -211,15 +211,15 @@ func TestCachedFetcher_UnspentTokensIteratorBy_CacheMiss(t *testing.T) {
211211 require .NoError (t , err )
212212 assert .NotNil (t , it )
213213 // Should return empty iterator
214- assert .False (t , it .(enhancedIterator [ * token2. UnspentTokenInWallet ] ).HasNext ())
214+ assert .False (t , it .(interface { HasNext () bool } ).HasNext ())
215215
216216 mockDB .AssertExpectations (t )
217217}
218218
219219func TestCachedFetcher_UnspentTokensIteratorBy_StaleCache (t * testing.T ) {
220220 mockDB := new (mockTokenDB )
221221 // Very short freshness interval
222- fetcher := newCachedFetcher (mockDB , 0 , 50 * time .Millisecond , 100 )
222+ fetcher := NewCachedFetcher (mockDB , 0 , 50 * time .Millisecond , 100 )
223223
224224 // Initial population
225225 tokens1 := []* token2.UnspentTokenInWallet {
@@ -260,7 +260,7 @@ func TestCachedFetcher_UnspentTokensIteratorBy_StaleCache(t *testing.T) {
260260
261261func TestCachedFetcher_CacheClear (t * testing.T ) {
262262 mockDB := new (mockTokenDB )
263- fetcher := newCachedFetcher (mockDB , 0 , 10 * time .Second , 100 )
263+ fetcher := NewCachedFetcher (mockDB , 0 , 10 * time .Second , 100 )
264264
265265 // First update with tokens
266266 tokens1 := []* token2.UnspentTokenInWallet {
@@ -299,7 +299,7 @@ func TestCachedFetcher_CacheClear(t *testing.T) {
299299 mockDB .On ("SpendableTokensIteratorBy" , mock .Anything , "" , token2 .Type ("" )).Return (mockIterator2 , nil ).Once ()
300300
301301 // Force cache to be stale so update will actually run
302- fetcher .lastFetched = time .Now ().Add (- 20 * time .Second )
302+ atomic . StoreInt64 ( & fetcher .lastFetched , time .Now ().Add (- 20 * time .Second ). UnixNano () )
303303
304304 fetcher .update (ctx )
305305
@@ -317,7 +317,7 @@ func TestCachedFetcher_CacheClear(t *testing.T) {
317317func TestNewMixedFetcher (t * testing.T ) {
318318 mockDB := new (mockTokenDB )
319319
320- fetcher := newMixedFetcher (mockDB , nil , 100 , 30 * time .Second , 100 )
320+ fetcher := NewMixedFetcher (mockDB , nil , 100 , 30 * time .Second , 100 )
321321
322322 assert .NotNil (t , fetcher )
323323 assert .NotNil (t , fetcher .lazyFetcher )
@@ -486,7 +486,7 @@ func TestLazyFetcher_UnspentTokensIteratorBy_ErrorHandling(t *testing.T) {
486486
487487func TestMixedFetcher_FallbackBehavior (t * testing.T ) {
488488 mockDB := new (mockTokenDB )
489- fetcher := newMixedFetcher (mockDB , NewMetrics (& disabled.Provider {}), 0 , 10 * time .Second , 100 )
489+ fetcher := NewMixedFetcher (mockDB , NewMetrics (& disabled.Provider {}), 0 , 10 * time .Second , 100 )
490490
491491 t .Run ("uses lazy fetcher when eager returns error" , func (t * testing.T ) {
492492 // Setup: eager fetcher will fail to update
@@ -553,7 +553,7 @@ func TestMixedFetcher_FallbackBehavior(t *testing.T) {
553553
554554func TestCachedFetcher_ConcurrentAccess (t * testing.T ) {
555555 mockDB := new (mockTokenDB )
556- fetcher := newCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
556+ fetcher := NewCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
557557
558558 t .Run ("handles concurrent reads during update" , func (t * testing.T ) {
559559 // Populate cache
@@ -596,7 +596,7 @@ func TestCachedFetcher_ConcurrentAccess(t *testing.T) {
596596
597597func TestCachedFetcher_GroupTokensByKey (t * testing.T ) {
598598 mockDB := new (mockTokenDB )
599- fetcher := newCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
599+ fetcher := NewCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
600600
601601 t .Run ("groups tokens correctly" , func (t * testing.T ) {
602602 tokens := []* token2.UnspentTokenInWallet {
@@ -637,7 +637,7 @@ func TestCachedFetcher_GroupTokensByKey(t *testing.T) {
637637// TestCachedFetcher_UpdateCache verifies cache updates without race conditions (add before remove).
638638func TestCachedFetcher_UpdateCache (t * testing.T ) {
639639 mockDB := new (mockTokenDB )
640- fetcher := newCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
640+ fetcher := NewCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
641641
642642 t .Run ("removes stale keys" , func (t * testing.T ) {
643643 ctx := t .Context ()
@@ -751,7 +751,7 @@ func TestCachedFetcher_UpdateCache(t *testing.T) {
751751func TestCachedFetcher_SoftRefresh (t * testing.T ) {
752752 mockDB := new (mockTokenDB )
753753 maxQueries := 3
754- fetcher := newCachedFetcher (mockDB , 0 , 10 * time .Second , maxQueries )
754+ fetcher := NewCachedFetcher (mockDB , 0 , 10 * time .Second , maxQueries )
755755
756756 t .Run ("triggers soft refresh when overused" , func (t * testing.T ) {
757757 // Initial population
@@ -886,7 +886,7 @@ func TestFetcherProvider_GetFetcher(t *testing.T) {
886886// TestCachedFetcher_UpdateWithDatabaseError verifies cache stays stale when DB update fails.
887887func TestCachedFetcher_UpdateWithDatabaseError (t * testing.T ) {
888888 mockDB := new (mockTokenDB )
889- fetcher := newCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
889+ fetcher := NewCachedFetcher (mockDB , 0 , 1 * time .Second , 100 )
890890
891891 t .Run ("handles database error gracefully" , func (t * testing.T ) {
892892 expectedErr := errors .New ("database connection failed" )
@@ -929,7 +929,7 @@ func TestTokenKey_EdgeCases(t *testing.T) {
929929func TestMixedFetcher_MetricsTracking (t * testing.T ) {
930930 mockDB := new (mockTokenDB )
931931 metrics := NewMetrics (& disabled.Provider {})
932- fetcher := newMixedFetcher (mockDB , metrics , 0 , 10 * time .Second , 100 )
932+ fetcher := NewMixedFetcher (mockDB , metrics , 0 , 10 * time .Second , 100 )
933933
934934 t .Run ("tracks eager fetcher usage" , func (t * testing.T ) {
935935 // Populate cache
0 commit comments