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_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_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());
        }