private async Task <ISavedImage> SaveImage(IImage image, ImageSourceId sourceId) { ImageId id = await image.GetId(); _logger.Information("Saving image {ImageId} from source {SourceId}", id.Value, sourceId.Value); ISavedImage savedImage = await _imageRepository.SaveImage(new SourceQualifiedImageId(sourceId, id), image.GetImageStream); _logger.Information("Saved image {ImageId} from source {SourceId}", id.Value, sourceId.Value); return(savedImage); }
public Task <Option <ISavedImage> > Dequeue() { if (!_queue.Any()) { return(Task.FromResult(Option.None <ISavedImage>())); } ISavedImage image = _queue.Dequeue(); _logger.Information("Dequeuing image {ImageId} from source {SourceId}", image.Id.ImageId.Value, image.Id.SourceId.Value); return(Task.FromResult(image.Some())); }
public async Task SaveImage_PersistsImage_ReturnsImageThatCanBeFetchedFromPersistence() { var getImageStream = A.Fake <Func <Task <Stream> > >(); ISavedImage savedImage = await _imageRepository.SaveImage(_imageId, getImageStream); A.CallTo(() => _imagePersistence.SaveImage(_imageId.SourceId.Value, _imageId.ImageId.Value, getImageStream, A <ILogger> ._)) .MustHaveHappened(Repeated.Exactly.Once); savedImage.Id.Should().Be(_imageId); (await savedImage.GetStream()).Should().Be(_imageStreamFromPersistence); }
public async Task Dequeue_HasItemsInQueue_PullsFirstItemFromQueue() { ISavedImage firstImageInQueue = CreateSavedImage("1"); await _sut.Enqueue(new[] { firstImageInQueue, CreateSavedImage("2"), CreateSavedImage("3") }); var dequeued = await _sut.Dequeue(); ImageIds().Should().Equal("2", "3"); dequeued.HasValue.Should().BeTrue(); dequeued.ValueOrFailure().Should().Be(firstImageInQueue); }