public async Task SearchByVersionManual(string input, int count) { var versionMatcher = new VersionMatcher(NullLogger <VersionMatcher> .Instance); var handler = new SearchVersionHandler(NullLogger <SearchVersionHandler> .Instance, versionMatcher); var command = new SearchVersionCommand { Version = input }; var results = await handler.Handle(command, CancellationToken.None); results.Should().NotBeNullOrEmpty(); var list = results.ToList(); list.Count.Should().Be(count); }
public async Task SearchByVersionServices(string input, int count) { var services = new ServiceCollection() .AddChallengeServices() .AddScoped(typeof(ILogger <>), typeof(NullLogger <>)); var provider = services.BuildServiceProvider(); var mediator = provider.GetRequiredService <IMediator>(); var command = new SearchVersionCommand { Version = input }; var results = await mediator.Send(command); results.Should().NotBeNullOrEmpty(); var list = results.ToList(); list.Count.Should().Be(count); }
public Task <IEnumerable <Software> > Handle(SearchVersionCommand request, CancellationToken cancellationToken) { try { _logger.LogTrace("Processing request '{request}' ...", request); var watch = Stopwatch.StartNew(); var matched = SoftwareManager .GetAllSoftware() .Where(software => _versionMatcher.IsGreaterThan(software.Version, request.Version)) .ToList(); watch.Stop(); _logger.LogTrace("Processed request '{requestName}': {elapsed} ms", request, watch.ElapsedMilliseconds); return(Task.FromResult <IEnumerable <Software> >(matched)); } catch (Exception ex) { _logger.LogError(ex, "Error processing request '{requestName}': {errorMessage}", request, ex.Message); throw; } }