Skip to content

Commit bdeb7e6

Browse files
committed
(#1341) Add tests
1 parent 63eec70 commit bdeb7e6

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

src/Lanceur.SharedKernel/Logging/TaskErrorExtension.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,15 @@ public static Task LogOnFaulted(
1111
ILogger logger,
1212
string message,
1313
params object?[] args)
14-
=> task.ContinueWith(
15-
context => logger.LogWarning(context.Exception, message, args),
14+
{
15+
task.ContinueWith(
16+
context => {
17+
logger.LogWarning(context.Exception, message, args);
18+
},
1619
TaskContinuationOptions.OnlyOnFaulted
1720
);
21+
return task;
22+
}
1823

1924
#endregion
2025
}

src/Tests/Lanceur.Tests/Services/ThumbnailServiceTest.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
using Dapper;
2+
using Lanceur.Core.Configuration;
3+
using Lanceur.Core.Configuration.Sections.Infrastructure;
24
using Lanceur.Core.Models;
35
using Lanceur.Core.Repositories;
46
using Lanceur.Core.Services;
57
using Lanceur.Infra.Services;
68
using Lanceur.Infra.SQLite.DataAccess;
79
using Lanceur.Infra.SQLite.DbActions;
810
using Lanceur.Infra.SQLite.Repositories;
11+
using Lanceur.Infra.Win32.Services;
912
using Lanceur.Infra.Win32.Thumbnails;
1013
using Lanceur.Infra.Win32.Thumbnails.Strategies;
1114
using Lanceur.Tests.Tools;
@@ -157,6 +160,40 @@ public void When_searching_alias_Then_additional_are_not_loaded()
157160
);
158161
}
159162

163+
[Fact]
164+
public async Task When_strategy_resolves_thumbnail_Then_remaining_strategies_are_skipped()
165+
{
166+
// ARRANGE
167+
var alias = new AliasQueryResult { FileName = "some_file_that_does_not_exist.exe" };
168+
var processed = new TaskCompletionSource();
169+
170+
var first = Substitute.For<IThumbnailStrategy>();
171+
var second = Substitute.For<IThumbnailStrategy>();
172+
var third = Substitute.For<IThumbnailStrategy>();
173+
174+
first.Priority.Returns(0);
175+
first.UpdateThumbnailAsync(Arg.Any<AliasQueryResult>(), Arg.Any<CancellationToken>())
176+
.Returns(_ => {
177+
processed.TrySetResult();
178+
return Task.FromResult(true);
179+
});
180+
second.Priority.Returns(1);
181+
third.Priority.Returns(2);
182+
183+
var section = Substitute.For<ISection<ThumbnailPipelineSection>>();
184+
section.Value.Returns(new ThumbnailPipelineSection { ConsumerCount = 1 });
185+
186+
await using var service = new ThumbnailService(LoggerFactory, [first, second, third], section);
187+
188+
// ACT
189+
service.UpdateThumbnail(alias);
190+
await processed.Task;
191+
192+
// ASSERT
193+
await second.DidNotReceive().UpdateThumbnailAsync(Arg.Any<AliasQueryResult>(), Arg.Any<CancellationToken>());
194+
await third.DidNotReceive().UpdateThumbnailAsync(Arg.Any<AliasQueryResult>(), Arg.Any<CancellationToken>());
195+
}
196+
160197
[Theory]
161198
[MemberData(nameof(GetStrategies))]
162199
public async Task When_strategy_updates_thumbnail_Then_additional_parameters_are_not_removed(

0 commit comments

Comments
 (0)