public void Should_ThrowMediaLibraryNotConnectedException_When_ContentDirectoryIsNull()
        {
            // Arrange
            IMediaPortalServices mediaPortalServices = Substitute.For <IMediaPortalServices>();
            IFileOperations      fileOperations      = Substitute.For <IFileOperations>();

            mediaPortalServices.GetServerConnectionManager().ContentDirectory.Returns(x => null);

            IMoverOperations operations = new MoverOperations(mediaPortalServices, fileOperations);

            // Act & Assert
            Assert.Throws <MediaLibraryNotConnectedException>(() => operations.BackupMovies(FakePath));
        }
        public void Should_BackupThreeMovies_When_FiveMoviesCollectedAndThreeWatched()
        {
            // Arrange
            IMediaPortalServices mediaPortalServices = Substitute.For <IMediaPortalServices>();
            IContentDirectory    contentDirectory    = Substitute.For <IContentDirectory>();
            IList <MediaItem>    databaseMediaItems  = new List <MediaItem>
            {
                new MockedDatabaseMovie(new MediaLibraryMovie {
                    Imdb = "tt0268380", Title = "Title_1", Tmdb = 12345, Year = 2017
                }, 100).Movie,
                new MockedDatabaseMovie(new MediaLibraryMovie {
                    Imdb = "tt0034492", Title = "Title_2", Tmdb = 12111, Year = 2016
                }, 100).Movie,
                new MockedDatabaseMovie(new MediaLibraryMovie {
                    Imdb = "tt1355630", Title = "Title_3", Tmdb = 12388, Year = 2013
                }, 100).Movie,
                new MockedDatabaseMovie(new MediaLibraryMovie {
                    Imdb = "tt1599348", Title = "Title_4", Tmdb = 12100, Year = 2011
                }, 10).Movie,
                new MockedDatabaseMovie(new MediaLibraryMovie {
                    Imdb = "tt0457939", Title = "Title_5", Tmdb = 12144, Year = 2010
                }, 0).Movie
            };

            contentDirectory.SearchAsync(Arg.Any <MediaItemQuery>(), true, null, false).Returns(databaseMediaItems);
            mediaPortalServices.GetServerConnectionManager().ContentDirectory.Returns(contentDirectory);
            IFileOperations fileOperations = Substitute.For <IFileOperations>();

            IMoverOperations operations = new MoverOperations(mediaPortalServices, fileOperations);

            // Act
            BackupResult result = operations.BackupMovies(FakePath);

            // Assert
            Assert.Equal(3, result.WatchedCount);
            Assert.Equal(5, result.CollectedCount);
        }