public void AddImageToAlbum() { var directoryPath = Faker.System.DirectoryPathWindows(); var directory = new Directory { Id = Faker.Random.Int(1), Path = directoryPath, Images = new List <Image>() }; var images = Faker.Make(Faker.Random.Int(3, 5), () => new Image { Path = Path.Join(directoryPath) + Faker.System.FileName("jpg"), DirectoryId = directory.Id }); directory.Images.AddRange(images); var unitOfWork = Substitute.For <IUnitOfWork>(); unitOfWork.DirectoryRepository.Get() .ReturnsForAnyArgs(new[] { directory, FakerProfiles.FakeNewDirectory }); _unitOfWorkQueue.Enqueue(unitOfWork); var autoResetEvent = new AutoResetEvent(false); var imageManagementService = _autoSubstitute.Resolve <ImageManagementService>(); var albumName = Faker.Random.Words(2); var albumId = Faker.Random.Int(1); unitOfWork.AlbumRepository.Get().ReturnsForAnyArgs(new[] { new Album { Id = albumId, Name = albumName } }); unitOfWork.ImageRepository.GetById(Arg.Any <int>()) .ReturnsForAnyArgs(info => { return(images.First(i => i.Id == (int)info.Arg <object>())); }); imageManagementService.AddImagesToAlbum(albumId, images.Select(image => image.Id)) .Subscribe(unit => autoResetEvent.Set()); _testSchedulerProvider.TaskPool.AdvanceBy(1); autoResetEvent.WaitOne(10).Should().BeTrue(); unitOfWork.AlbumImageRepository.ReceivedWithAnyArgs(images.Count) .Insert(null); unitOfWork.Received(1).Save(); unitOfWork.Received(1).Dispose(); }
public void ScanFolder() { var directoryPath = Faker.System.DirectoryPathWindows(); var imagePath = Path.Join(directoryPath, Faker.System.FileName("jpg")); var directory = new Directory { Id = Faker.Random.Int(1), Path = directoryPath, Images = new List <Image>() }; var unitOfWork = Substitute.For <IUnitOfWork>(); unitOfWork.DirectoryRepository.Get() .ReturnsForAnyArgs(new[] { directory, FakerProfiles.FakeNewDirectory }); _unitOfWorkQueue.Enqueue(unitOfWork); _mockFileSystem.AddDirectory(directoryPath); _mockFileSystem.AddFile(imagePath, new MockFileData(new byte[0])); var autoResetEvent = new AutoResetEvent(false); _autoSubstitute.Resolve <IImageLocationService>() .GetImages(Arg.Any <string>()) .Returns(Observable.Return(new[] { imagePath })); var imageManagementService = _autoSubstitute.Resolve <ImageManagementService>(); imageManagementService.ScanFolder(directoryPath) .Subscribe(unit => autoResetEvent.Set()); _testSchedulerProvider.TaskPool.AdvanceBy(1); autoResetEvent.WaitOne(10).Should().BeTrue(); unitOfWork.ImageRepository.Received(1) .Insert(Arg.Any <Image>()); unitOfWork.Received(1) .Save(); unitOfWork.Received(1) .Dispose(); directory.Images.Count.Should().Be(1); }