@@ -14,19 +14,17 @@ namespace ImmichFrame.Core.Tests.Logic.Pool;
1414[ TestFixture ]
1515public class MemoryAssetsPoolTests
1616{
17- private Mock < IApiCache > _mockApiCache ;
1817 private Mock < ImmichApi > _mockImmichApi ;
1918 private Mock < IAccountSettings > _mockAccountSettings ;
2019 private MemoryAssetsPool _memoryAssetsPool ;
2120
2221 [ SetUp ]
2322 public void Setup ( )
2423 {
25- _mockApiCache = new Mock < IApiCache > ( ) ; // Base constructor requires ILogger and IOptions, pass null for simplicity in mock
2624 _mockImmichApi = new Mock < ImmichApi > ( null , null ) ; // Base constructor requires ILogger, IHttpClientFactory, IOptions, pass null
2725 _mockAccountSettings = new Mock < IAccountSettings > ( ) ;
2826
29- _memoryAssetsPool = new MemoryAssetsPool ( _mockApiCache . Object , _mockImmichApi . Object , _mockAccountSettings . Object ) ;
27+ _memoryAssetsPool = new MemoryAssetsPool ( _mockImmichApi . Object , _mockAccountSettings . Object ) ;
3028 }
3129
3230 private List < AssetResponseDto > CreateSampleAssets ( int count , bool withExif , int yearCreated )
@@ -76,10 +74,6 @@ public async Task LoadAssets_CallsSearchMemoriesAsync()
7674 // Let's simulate this by calling a method that would trigger LoadAssets if cache is empty.
7775 // Since LoadAssets is protected, we'll test its effects via GetAsset.
7876 // We need to ensure the cache is empty or expired for LoadAssets to be called.
79- _mockApiCache . Setup ( c => c . GetOrAddAsync ( It . IsAny < string > ( ) , It . IsAny < Func < Task < IEnumerable < AssetResponseDto > > > > ( ) ) )
80- . Returns < string , Func < Task < IEnumerable < AssetResponseDto > > > > ( async ( key , factory ) => await factory ( ) ) ;
81-
82-
8377 await _memoryAssetsPool . GetAssets ( 1 , CancellationToken . None ) ; // This should trigger LoadAssets
8478
8579 // Assert
@@ -99,9 +93,6 @@ public async Task LoadAssets_FetchesAssetInfo_WhenExifInfoIsNull()
9993 _mockImmichApi . Setup ( x => x . GetAssetInfoAsync ( new Guid ( assetId ) , null , It . IsAny < CancellationToken > ( ) ) )
10094 . ReturnsAsync ( new AssetResponseDto { Id = assetId , ExifInfo = new ExifResponseDto { DateTimeOriginal = new DateTime ( memoryYear , 1 , 1 ) } , People = new List < PersonWithFacesResponseDto > ( ) } ) ;
10195
102- _mockApiCache . Setup ( c => c . GetOrAddAsync < IEnumerable < AssetResponseDto > > ( It . IsAny < string > ( ) , It . IsAny < Func < Task < IEnumerable < AssetResponseDto > > > > ( ) ) )
103- . Returns < string , Func < Task < IEnumerable < AssetResponseDto > > > > ( async ( key , factory ) => await factory ( ) ) ;
104-
10596 // Act
10697 var resultAsset = ( await _memoryAssetsPool . GetAssets ( 1 , CancellationToken . None ) ) . First ( ) ; // Triggers LoadAssets
10798
@@ -122,9 +113,6 @@ public async Task LoadAssets_DoesNotFetchAssetInfo_WhenExifInfoIsPresent()
122113 _mockImmichApi . Setup ( x => x . SearchMemoriesAsync ( It . IsAny < DateTimeOffset > ( ) , null , null , null , It . IsAny < CancellationToken > ( ) ) )
123114 . ReturnsAsync ( memories ) ;
124115
125- _mockApiCache . Setup ( c => c . GetOrAddAsync < IEnumerable < AssetResponseDto > > ( It . IsAny < string > ( ) , It . IsAny < Func < Task < IEnumerable < AssetResponseDto > > > > ( ) ) )
126- . Returns < string , Func < Task < IEnumerable < AssetResponseDto > > > > ( async ( key , factory ) => await factory ( ) ) ;
127-
128116 // Act
129117 var resultAsset = ( await _memoryAssetsPool . GetAssets ( 1 , CancellationToken . None ) ) . First ( ) ; // Triggers LoadAssets
130118
@@ -154,11 +142,7 @@ public async Task LoadAssets_CorrectlyFormatsDescription_YearsAgo()
154142 _mockImmichApi . Setup ( x => x . SearchMemoriesAsync ( It . IsAny < DateTimeOffset > ( ) , null , null , null , It . IsAny < CancellationToken > ( ) ) )
155143 . ReturnsAsync ( memories ) ;
156144
157- // Reset and re-setup cache mock for each iteration to ensure factory is called
158- _mockApiCache = new Mock < IApiCache > ( ) ;
159- _mockApiCache . Setup ( c => c . GetOrAddAsync < IEnumerable < AssetResponseDto > > ( It . IsAny < string > ( ) , It . IsAny < Func < Task < IEnumerable < AssetResponseDto > > > > ( ) ) )
160- . Returns < string , Func < Task < IEnumerable < AssetResponseDto > > > > ( async ( key , factory ) => await factory ( ) ) ;
161- _memoryAssetsPool = new MemoryAssetsPool ( _mockApiCache . Object , _mockImmichApi . Object , _mockAccountSettings . Object ) ;
145+ _memoryAssetsPool = new MemoryAssetsPool ( _mockImmichApi . Object , _mockAccountSettings . Object ) ;
162146
163147
164148 // Act
@@ -180,9 +164,6 @@ public async Task LoadAssets_AggregatesAssetsFromMultipleMemories()
180164 _mockImmichApi . Setup ( x => x . SearchMemoriesAsync ( It . IsAny < DateTimeOffset > ( ) , null , null , null , It . IsAny < CancellationToken > ( ) ) )
181165 . ReturnsAsync ( memories ) . Verifiable ( Times . Once ) ;
182166
183- _mockApiCache . Setup ( c => c . GetOrAddAsync ( It . IsAny < string > ( ) , It . IsAny < Func < Task < IEnumerable < AssetResponseDto > > > > ( ) ) )
184- . Returns < string , Func < Task < IEnumerable < AssetResponseDto > > > > ( async ( key , factory ) => await factory ( ) ) ;
185-
186167 // Act
187168 // We will rely on the fact that the factory in GetFromCacheAsync is called, and it returns the list.
188169 // The count can be indirectly verified if we could access the pool's internal list after LoadAssets.
@@ -191,15 +172,7 @@ public async Task LoadAssets_AggregatesAssetsFromMultipleMemories()
191172 // We need a way to inspect the result of LoadAssets directly.
192173 // We can make LoadAssets internal and use InternalsVisibleTo, or use reflection.
193174 // Or, we can rely on the setup of GetFromCacheAsync to capture the factory's result.
194- IEnumerable < AssetResponseDto > loadedAssets = null ;
195- _mockApiCache . Setup ( c => c . GetOrAddAsync < IEnumerable < AssetResponseDto > > ( It . IsAny < string > ( ) , It . IsAny < Func < Task < IEnumerable < AssetResponseDto > > > > ( ) ) )
196- . Returns < string , Func < Task < IEnumerable < AssetResponseDto > > > > ( async ( key , factory ) =>
197- {
198- loadedAssets = await factory ( ) ;
199- return loadedAssets ;
200- } ) ;
201-
202- await _memoryAssetsPool . GetAssets ( 4 , CancellationToken . None ) ; // Trigger load
175+ var loadedAssets = await _memoryAssetsPool . GetAssets ( 4 , CancellationToken . None ) ; // Trigger load
203176
204177 // Assert
205178 Assert . That ( loadedAssets , Is . Not . Null ) ;
0 commit comments