public async void GetAllAsync_ShouldReturnListOfLibraries_WithAsManyElementsAsImportedLibrariesList() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); var settings = new Settings() { ImportedLibraries = new List <string>() { "Tests\\path1.plib", "Tests\\path2.plib", "Tests\\path3.plib" } }; settingsProviderMock.Setup(x => x.Settings) .Returns(settings); libraryFileServiceMock.Setup(x => x.ReadLibraryFromStreamAsync(It.IsAny <Stream>(), It.IsAny <Origin>())) .Returns(Task.FromResult(GetLibrary())); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); var libraries = await repository.GetAllAsync(); Assert.True(libraries.ToList().Count == settings.ImportedLibraries.Count); }
public async void RemoveRangeAsync_ShouldCallRemoveMethod_ForeachLibraryInACollection() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); var libraries = new List <Library>() { new Library() { FullName = "Tests\\path1.plib" }, new Library() { FullName = "Tests\\path2.plib" } }; fileServiceMock.Setup(x => x.Remove(libraries[0].FullName)) .Verifiable(); fileServiceMock.Setup(x => x.Remove(libraries[1].FullName)) .Verifiable(); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); await repository.RemoveRangeAsync(libraries); fileServiceMock.Verify(x => x.Remove(libraries[0].FullName)); fileServiceMock.Verify(x => x.Remove(libraries[1].FullName)); }
public async void GetAllAsync_ShouldOpenFileAndReadFromIt_ForeachFilePathInImportedLibraries() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); var settings = new Settings() { ImportedLibraries = new List <string>() { "Tests\\path1.plib", "Tests\\path2.plib", "Tests\\path3.plib" } }; settingsProviderMock.Setup(x => x.Settings) .Returns(settings); int openFileCallCounter = 0; int readLibraryCallCounter = 0; fileServiceMock.Setup(x => x.OpenFile(It.IsAny <string>(), It.IsAny <FileMode>(), It.IsAny <FileAccess>(), It.IsAny <FileShare>())) .Callback(() => { openFileCallCounter++; }); libraryFileServiceMock.Setup(x => x.ReadLibraryFromStreamAsync(It.IsAny <Stream>(), It.IsAny <Origin>())) .Callback(() => { readLibraryCallCounter++; }); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); var libraries = await repository.GetAllAsync(); Assert.True(openFileCallCounter == settings.ImportedLibraries.Count && readLibraryCallCounter == settings.ImportedLibraries.Count); }
public async void UpdateAsync_ShouldThrowArgumentNullException_WhenLibraryIsNull() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); Library library = null; var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); await Assert.ThrowsAsync <ArgumentNullException>(() => repository.UpdateAsync(library)); }
public async void RemoveAsync_ShouldCallRemoveMethod() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); fileServiceMock.Setup(x => x.Remove(It.IsAny <string>())) .Verifiable(); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); await repository.RemoveAsync("Tests\\path1.plib"); fileServiceMock.Verify(x => x.Remove(It.IsAny <string>())); }
public async void GetAllAsync_ShouldReturnEmptyList_WhenImportedLibrariesListIsNull() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); var settings = new Settings() { ImportedLibraries = null }; settingsProviderMock.Setup(x => x.Settings) .Returns(settings); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); var libraries = await repository.GetAllAsync(); Assert.Empty(libraries); }
public async void GetByPathAsync_ShouldReturnLibrary() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); var library = new Library() { FullName = "Tests\\path1.plib" }; libraryFileServiceMock.Setup(x => x.ReadLibraryFromStreamAsync(It.IsAny <Stream>(), It.IsAny <Origin>())) .Returns(Task.FromResult(library)); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); var result = await repository.GetByPathAsync(It.IsAny <string>()); Assert.True(result.FullName == library.FullName); }
public async void GetByPathAsync_ShouldOpenAndReadFromASpecifiedFile() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); var filePath = "Tests\\path1.plib"; var memoryStream = new MemoryStream(); fileServiceMock.Setup(x => x.OpenFile(filePath, It.IsAny <FileMode>(), It.IsAny <FileAccess>(), It.IsAny <FileShare>())) .Returns(memoryStream); libraryFileServiceMock.Setup(x => x.ReadLibraryFromStreamAsync(memoryStream, It.IsAny <Origin>())) .Verifiable(); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); var library = await repository.GetByPathAsync(filePath); fileServiceMock.Verify(x => x.OpenFile(filePath, It.IsAny <FileMode>(), It.IsAny <FileAccess>(), It.IsAny <FileShare>())); libraryFileServiceMock.Verify(x => x.ReadLibraryFromStreamAsync(memoryStream, It.IsAny <Origin>())); }
public async void AddAsync_ShouldCallOpenFileMethod_ForPreviouslyCreatedFile() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); var settings = new Settings() { ImportedLibraries = new List <string>() }; settingsProviderMock.Setup(x => x.Settings) .Returns(settings); var library = GetLibrary(); fileServiceMock.Setup(x => x.OpenFile(library.FullName, It.IsAny <FileMode>(), It.IsAny <FileAccess>(), It.IsAny <FileShare>())) .Verifiable(); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); await repository.AddAsync(library); fileServiceMock.Verify(x => x.OpenFile(library.FullName, It.IsAny <FileMode>(), It.IsAny <FileAccess>(), It.IsAny <FileShare>())); }
public async void AddAsync_ShouldCallFileCreateMethod() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); var settings = new Settings() { ImportedLibraries = new List <string>() }; settingsProviderMock.Setup(x => x.Settings) .Returns(settings); var library = GetLibrary(); fileServiceMock.Setup(x => x.Create(library.FullName)) .Verifiable(); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); await repository.AddAsync(library); fileServiceMock.Verify(x => x.Create(library.FullName)); }
public async void AddAsync_ShouldAddLibraryFullNameToSettings_AndSaveSettings() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); var settings = new Settings() { ImportedLibraries = new List <string>() }; settingsProviderMock.Setup(x => x.Settings) .Returns(settings); settingsProviderMock.Setup(x => x.SaveSettingsAsync()) .Verifiable(); var library = GetLibrary(); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); await repository.AddAsync(library); Assert.Contains(library.FullName, settings.ImportedLibraries); settingsProviderMock.Verify(x => x.SaveSettingsAsync()); }
public async void FindAsync_ShouldReturnPartOfLibrariesListReturnedFromGetAllAsync_MatchingGivenPredicate() { var fileServiceMock = new Mock <IFileService>(); var settingsProviderMock = new Mock <ISettingsProviderService>(); var libraryFileServiceMock = new Mock <ILibraryFileService>(); var libraries = new List <Library>() { new Library() { FullName = "Tests\\path1.plib" }, new Library() { FullName = "Tests\\path2.plib" }, new Library() { FullName = "Tests\\path3.plib" } }; var fileStreams = new List <Stream>() { new MemoryStream(), new MemoryStream(), new MemoryStream() }; var settings = new Settings() { ImportedLibraries = new List <string>() { libraries[0].FullName, libraries[1].FullName, libraries[2].FullName } }; settingsProviderMock.Setup(x => x.Settings) .Returns(settings); fileServiceMock.Setup(x => x.OpenFile(libraries[0].FullName, It.IsAny <FileMode>(), It.IsAny <FileAccess>(), It.IsAny <FileShare>())) .Returns(fileStreams[0]); fileServiceMock.Setup(x => x.OpenFile(libraries[1].FullName, It.IsAny <FileMode>(), It.IsAny <FileAccess>(), It.IsAny <FileShare>())) .Returns(fileStreams[1]); fileServiceMock.Setup(x => x.OpenFile(libraries[2].FullName, It.IsAny <FileMode>(), It.IsAny <FileAccess>(), It.IsAny <FileShare>())) .Returns(fileStreams[2]); libraryFileServiceMock.Setup(x => x.ReadLibraryFromStreamAsync(fileStreams[0], It.IsAny <Origin>())) .Returns(Task.FromResult(libraries[0])); libraryFileServiceMock.Setup(x => x.ReadLibraryFromStreamAsync(fileStreams[1], It.IsAny <Origin>())) .Returns(Task.FromResult(libraries[1])); libraryFileServiceMock.Setup(x => x.ReadLibraryFromStreamAsync(fileStreams[2], It.IsAny <Origin>())) .Returns(Task.FromResult(libraries[2])); var repository = new LocalLibraryRepositoryStrategy(fileServiceMock.Object, settingsProviderMock.Object, libraryFileServiceMock.Object); var result = await repository.FindAsync(x => x.FullName == libraries[0].FullName || x.FullName == libraries[1].FullName); Assert.Contains(libraries[0], result); Assert.Contains(libraries[1], result); }