Пример #1
0
        public void WhenTracksIsNull_Throws()
        {
            // arrange
            var status = Status.Create(0);

            // act/assert
            Assert.ThrowsException <ArgumentNullException>(() => AlbumBuilder.BuildAlbums(null, ref status));
        }
Пример #2
0
        public void Create_MissingGenre_ThrowsException()
        {
            //Arrange
            var album = new AlbumBuilder().Build();

            //Act

            //Assert
            Assert.That(() => _factory.Create(album, null),
                        Throws.TypeOf <ArgumentException>()
                        .With.Message.EqualTo("Illegal parameter : Genre"));
        }
Пример #3
0
        public void Create_MismatchBetweenAlbumAndGenre_TrowsException()
        {
            //Arrange
            Random random = new Random();
            var    genre  = new GenreBuilder().WithId(random.Next(1, int.MaxValue)).Build();
            var    album  = new AlbumBuilder().WithGenreId(random.Next(1, int.MaxValue)).Build();

            //Act

            //Assert
            Assert.That(() => _factory.Create(album, genre),
                        Throws.TypeOf <ArgumentException>()
                        .With.Message.EqualTo("Genre ID mismatch"));
        }
Пример #4
0
        public void WhenAlbumNameIsNullOrWhiteSpace_Throws(string albumName)
        {
            // arrange
            var status    = Status.Create(0);
            var mockTrack = new Mock <IITTrack>();

            mockTrack.Setup(t => t.Album).Returns(albumName);
            var tracksToFix = new List <IITTrack> {
                mockTrack.Object
            };

            // act/assert
            Assert.ThrowsException <iTunesAssistantException>(() => AlbumBuilder.BuildAlbums(tracksToFix, ref status));
        }
Пример #5
0
        public void Create_ValidAlbumAndValidGenre_CorrectlyMapped()
        {
            //Arrange
            var genre = new GenreBuilder().Build();
            var album = new AlbumBuilder().WithGenreId(genre.Id).Build();

            //Act
            var resultModel = _factory.Create(album, genre) as AlbumViewModel;

            //Assert
            Assert.That(resultModel, Is.Not.Null);
            Assert.That(resultModel.Genre, Is.EqualTo(genre.Name));
            Assert.That(resultModel.Title, Is.EqualTo(album.Title));
            Assert.That(resultModel.Artist, Is.EqualTo(album.Artist));
        }
Пример #6
0
        public void WhenTracksToFixIsEmpty_ReturnsExpectedResult_AndStatus()
        {
            // arrange
            var status      = Status.Create(0);
            var tracksToFix = new List <IITTrack>();

            // act
            var result = AlbumBuilder.BuildAlbums(tracksToFix, ref status);

            // assert
            Assert.IsNotNull(result);
            Assert.AreEqual(0, result.Count);
            Assert.AreEqual(0, status.ItemsTotal);
            Assert.AreEqual(0, status.ItemsProcessed);
            Assert.AreEqual("Generating album list...", status.Message);
        }
Пример #7
0
        public void WhenTracksToFixIsNotEmpty_GroupsTracksByAlbumName()
        {
            // arrange
            const int albumCount  = 7;
            var       status      = Status.Create(0);
            var       tracksToFix = TestData.BuildMockAlbums(albumCount).SelectMany(t => t).ToList();

            // act
            var result = AlbumBuilder.BuildAlbums(tracksToFix, ref status);

            // assert
            Assert.IsNotNull(result);
            Assert.AreEqual(albumCount, result.Count);
            Assert.AreEqual(tracksToFix.Count, status.ItemsTotal);
            Assert.AreEqual(tracksToFix.Count, status.ItemsProcessed);
            Assert.AreEqual("Generating album list...", status.Message);
        }
        public void Details_ShowsDetailsOfAlbum()
        {
            //Arrange
            var genre          = new GenreBuilder().WithId().Build();
            var album          = new AlbumBuilder().WithGenreId(genre.Id).Build();
            var albumViewModel = new AlbumViewModelBuilder().Build();

            _controller._albumRepositoryMock.Setup(repo => repo.GetById(album.Id))
            .Returns(album);
            _controller._genreRepositoryMock.Setup(repo => repo.GetById(genre.Id)).Returns(genre);
            _controller._albumViewModelFactoryMock.Setup(factory => factory.Create(album, genre))
            .Returns(albumViewModel);

            //Act
            var resultView = _controller.Details(album.Id) as ViewResult;

            //Assert
            Assert.That(resultView, Is.Not.Null);
            _controller._albumRepositoryMock.Verify(repo => repo.GetById(album.Id), Times.Once);
            _controller._genreRepositoryMock.Verify(repo => repo.GetById(album.GenreId), Times.Once);
            _controller._albumViewModelFactoryMock.Verify(factory => factory.Create(album, genre), Times.Once);
            Assert.That(resultView.Model, Is.EqualTo(albumViewModel));
        }
        static internal AlbumDescriptor FromFreeDBInfo(List<string> FileName)
        {
            AlbumBuilder cab = new AlbumBuilder(DataExportImportType.FreeDB);
            Freedb.FreedbParser csa = new Freedb.FreedbParser(FileName);

            AlbumDescriptor res = csa.Visit(cab);

            if (res == null)
                return null;

            //petite ratrap sur les fichiers corrompus 
            var duples = res.RawTrackDescriptors.ToLookup(tr => tr.TrackNumber);

            foreach (IGrouping<uint, TrackDescriptor> group in duples)
            {
                if (group.Count() == 1)
                    continue;

                var orderedgoups = group.OrderBy(td => res.RawTrackDescriptors.IndexOf(td)).ToList();
                TrackDescriptor survivor = orderedgoups[0];
                int count = orderedgoups.Count;
                for (int i = 1; i < count; i++)
                {
                    TrackDescriptor tobetr = orderedgoups[i];
                    survivor.Name += tobetr.Name;
                    res.RawTrackDescriptors.Remove(tobetr);
                }
            }

            return res;
        }
 static internal AlbumDescriptor FromCUESheet(string FileName)
 {
     AlbumBuilder cab = new AlbumBuilder(DataExportImportType.CUE);
     CUESheetAnalyser csa = new CUESheetAnalyser(FileName);
     AlbumDescriptor res = csa.Visit(cab);
     if (res != null)
         res.CUESheetFileName = FileName;
     return res;
 }