public void should_not_delete_if_no_files_were_imported()
        {
            GivenValidAuthor();

            var localTrack = new LocalBook();

            var imported = new List <ImportDecision <LocalBook> >();

            imported.Add(new ImportDecision <LocalBook>(localTrack));

            Mocker.GetMock <IMakeImportDecision>()
            .Setup(v => v.GetImportDecisions(It.IsAny <List <IFileInfo> >(), It.IsAny <IdentificationOverrides>(), It.IsAny <ImportDecisionMakerInfo>(), It.IsAny <ImportDecisionMakerConfig>()))
            .Returns(imported);

            Mocker.GetMock <IImportApprovedBooks>()
            .Setup(s => s.Import(It.IsAny <List <ImportDecision <LocalBook> > >(), true, null, ImportMode.Auto))
            .Returns(new List <ImportResult>());

            Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));

            DiskProvider.FolderExists(_subFolders[0]).Should().BeTrue();

            Mocker.GetMock <IDiskProvider>()
            .Verify(v => v.DeleteFolder(It.IsAny <string>(), true), Times.Never());
        }
        public void should_not_delete_folder_if_files_were_imported_and_audio_files_remain()
        {
            GivenValidAuthor();

            var localTrack = new LocalBook();

            var imported = new List <ImportDecision <LocalBook> >();

            imported.Add(new ImportDecision <LocalBook>(localTrack));

            Mocker.GetMock <IMakeImportDecision>()
            .Setup(v => v.GetImportDecisions(It.IsAny <List <IFileInfo> >(), It.IsAny <IdentificationOverrides>(), It.IsAny <ImportDecisionMakerInfo>(), It.IsAny <ImportDecisionMakerConfig>()))
            .Returns(imported);

            Mocker.GetMock <IImportApprovedBooks>()
            .Setup(s => s.Import(It.IsAny <List <ImportDecision <LocalBook> > >(), true, null, ImportMode.Auto))
            .Returns(imported.Select(i => new ImportResult(i)).ToList());

            Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));

            Mocker.GetMock <IDiskProvider>()
            .Verify(v => v.DeleteFolder(It.IsAny <string>(), true), Times.Never());

            ExceptionVerification.ExpectedWarns(1);
        }
        public void should_not_delete_if_there_is_large_rar_file()
        {
            GivenValidAuthor();

            var localTrack = new LocalBook();

            var imported = new List <ImportDecision <LocalBook> >();

            imported.Add(new ImportDecision <LocalBook>(localTrack));

            Mocker.GetMock <IMakeImportDecision>()
            .Setup(v => v.GetImportDecisions(It.IsAny <List <IFileInfo> >(), It.IsAny <IdentificationOverrides>(), It.IsAny <ImportDecisionMakerInfo>(), It.IsAny <ImportDecisionMakerConfig>()))
            .Returns(imported);

            Mocker.GetMock <IImportApprovedBooks>()
            .Setup(s => s.Import(It.IsAny <List <ImportDecision <LocalBook> > >(), true, null, ImportMode.Auto))
            .Returns(imported.Select(i => new ImportResult(i)).ToList());

            GivenAudioFiles(new[] { _audioFiles.First().Replace(".ext", ".rar") }, 15.Megabytes());

            Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));

            DiskProvider.FolderExists(_subFolders[0]).Should().BeTrue();

            ExceptionVerification.ExpectedWarns(1);
        }
        public void should_not_delete_folder_if_no_files_were_imported()
        {
            Mocker.GetMock <IImportApprovedBooks>()
            .Setup(s => s.Import(It.IsAny <List <ImportDecision <LocalBook> > >(), false, null, ImportMode.Auto))
            .Returns(new List <ImportResult>());

            Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));

            Mocker.GetMock <IDiskProvider>()
            .Verify(v => v.GetFolderSize(It.IsAny <string>()), Times.Never());
        }
        public void should_not_skip_if_no_author_found()
        {
            Mocker.GetMock <IParsingService>().Setup(c => c.GetAuthor("foldername")).Returns((Author)null);

            Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));

            Mocker.GetMock <IMakeImportDecision>()
            .Verify(c => c.GetImportDecisions(It.IsAny <List <IFileInfo> >(), It.IsAny <IdentificationOverrides>(), It.IsAny <ImportDecisionMakerInfo>(), It.IsAny <ImportDecisionMakerConfig>()),
                    Times.Once());

            VerifyImport();
        }
예제 #6
0
        public void should_skip_if_no_artist_found()
        {
            Mocker.GetMock <IParsingService>().Setup(c => c.GetArtist("foldername")).Returns((Artist)null);

            Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));

            Mocker.GetMock <IMakeImportDecision>()
            .Verify(c => c.GetImportDecisions(It.IsAny <List <IFileInfo> >(), It.IsAny <Artist>(), It.IsAny <ParsedTrackInfo>()),
                    Times.Never());

            VerifyNoImport();
        }
        public void should_remove_unpack_from_folder_name(string prefix)
        {
            var folderName = "Alien Ant Farm - Truant (2003)";

            FileSystem.AddDirectory(string.Format(@"C:\drop\{0}{1}", prefix, folderName).AsOsAgnostic());

            Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));

            Mocker.GetMock <IParsingService>()
            .Verify(v => v.GetAuthor(folderName), Times.Once());

            Mocker.GetMock <IParsingService>()
            .Verify(v => v.GetAuthor(It.Is <string>(s => s.StartsWith(prefix))), Times.Never());
        }
        public void should_skip_if_file_is_in_use_by_another_process()
        {
            GivenValidAuthor();

            foreach (var file in _audioFiles)
            {
                FileSystem.AddFile(file, new MockFileData("".PadRight(10))
                {
                    AllowedFileShare = FileShare.None
                });
            }

            Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));

            VerifyNoImport();
        }
        public void should_not_import_if_folder_is_a_author_path()
        {
            GivenValidAuthor();

            Mocker.GetMock <IAuthorService>()
            .Setup(s => s.AuthorPathExists(It.IsAny <string>()))
            .Returns(true);

            Mocker.GetMock <IDiskScanService>()
            .Setup(c => c.GetBookFiles(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(new IFileInfo[0]);

            Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));

            Mocker.GetMock <IDiskScanService>()
            .Verify(v => v.GetBookFiles(It.IsAny <string>(), true), Times.Never());

            ExceptionVerification.ExpectedWarns(1);
        }
        public void should_search_for_author_using_folder_name()
        {
            Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));

            Mocker.GetMock <IParsingService>().Verify(c => c.GetAuthor("foldername"), Times.Once());
        }