public async Task PersistedTheSpecifiedSnapshot() { (var persistenceProvider, var subject) = CreateSubject(); var snapshot = new Examiner.Service.State.Snapshot { LastTrainingDataUpdate = DateTimeOffset.Parse("2020-05-21T10:15:00") }; await subject.SetStateSnapshotAsync(snapshot, CancellationToken.None); A.CallTo(() => persistenceProvider.SetBlobContentAsync(ConnectionString, ContainerName, A <string> .Ignored, A <Func <Stream, Task> > .Ignored, A <CancellationToken> .Ignored)); }
public async Task GetBalancedFaceDataWhenProcessing() { (var faceDataProvider, var recognitionEngine, var modelPersistor, var subject) = CreateSubject(); var snapshot = new Examiner.Service.State.Snapshot { LastTrainingDataUpdate = new DateTimeOffset(2020, 02, 17, 0, 0, 0, TimeSpan.Zero) }; var result = await subject.ProcessAsync(snapshot, CancellationToken.None); A.CallTo(() => faceDataProvider.GetBalancedItems(A <CancellationToken> .Ignored)).MustHaveHappenedOnceExactly(); }
public async Task NotRequireProcessingIfSnapshotLastUpdateIsEqualToLatestFaceData() { (var faceDataProvider, var recognitionEngine, var modelPersistor, var subject) = CreateSubject(); A.CallTo(() => faceDataProvider.GetDateOfLastChangeAsync(A <CancellationToken> .Ignored)).Returns(new DateTimeOffset(2020, 02, 17, 0, 0, 0, TimeSpan.Zero)); var snapshot = new Examiner.Service.State.Snapshot { LastTrainingDataUpdate = new DateTimeOffset(2020, 02, 17, 0, 0, 0, TimeSpan.Zero) }; var result = await subject.RequiresProcessingAsync(snapshot, CancellationToken.None); Assert.That(result, Is.False); }
public async Task PersistRecognitionModelWhenProcessing() { (var faceDataProvider, var recognitionEngine, var modelPersistor, var subject) = CreateSubject(); var snapshot = new Examiner.Service.State.Snapshot { LastTrainingDataUpdate = new DateTimeOffset(2020, 02, 17, 0, 0, 0, TimeSpan.Zero) }; var model = A.Fake <Examiner.Face.Recognition.IModel>(); A.CallTo(() => recognitionEngine.TrainAsync(A <IAsyncEnumerable <Examiner.Face.Data.Item> > .Ignored, A <CancellationToken> .Ignored)).Returns(Task.FromResult(model)); var result = await subject.ProcessAsync(snapshot, CancellationToken.None); A.CallTo(() => modelPersistor.SaveModelAsync(model, A <CancellationToken> .Ignored)).MustHaveHappenedOnceExactly(); }