public async Task GetApplicationsStatesAsync_TwoChecksInHistory_ReturnLatest()
        {
            // arrange
            var uow = new MemoryDbUoW();

            var application = new Application
            {
                Id            = Guid.NewGuid(),
                LastCheckDate = null
            };

            var checkRecordOld = new ApplicationStateHistory
            {
                RecordId      = Guid.NewGuid(),
                Application   = application,
                ApplicationId = application.Id,
                Date          = DateTime.UtcNow.AddMinutes(-10),
                State         = ApplicationState.CheckedWithError
            };

            var checkRecordLatest = new ApplicationStateHistory
            {
                RecordId      = Guid.NewGuid(),
                Application   = application,
                ApplicationId = application.Id,
                Date          = DateTime.UtcNow.AddMinutes(-2),
                State         = ApplicationState.Available
            };

            uow.Get <Application>().Add(application);
            uow.Get <ApplicationStateHistory>().Add(checkRecordOld);
            uow.Get <ApplicationStateHistory>().Add(checkRecordLatest);
            uow.SaveChanges();

            var uowFactory = new MemoryDbUowFactory(uow);

            var sut = CreateSut(uowFactory);

            // act
            ApplicationStateViewModel[] viewModels = await sut.GetApplicationsStatesAsync();

            // assert
            Assert.NotEmpty(viewModels);

            var model = viewModels[0];

            Assert.NotNull(model.CheckDate);
            Assert.Equal(checkRecordLatest.Date, model.CheckDate);
            Assert.Equal(checkRecordLatest.State, model.State);
        }
        private async Task SaveResultAsync(Application application, CheckResult checkResult)
        {
            var uow = _uowFactory.Create();

            var historyRecord = new ApplicationStateHistory
            {
                RecordId      = Guid.NewGuid(),
                ApplicationId = application.Id,
                Date          = DateTime.UtcNow,
                State         = checkResult.State
            };

            uow.Get <ApplicationStateHistory>().Add(historyRecord);
            application.LastCheckDate = historyRecord.Date;

            await uow.SaveChangesAsync();
        }