public void ShouldGenerateNonSelectedLinksForAllGenres()
        {
            // Arrange
            List<string> genres = new List<string>() {
                "Genre1", "Genre2"
            };

            IArtistsRepository repos = MockArtistsRepository.CreateMockRepositoryGenresOnly(genres);

            GenresNavBarHyperlinkGenerator gen = new GenresNavBarHyperlinkGenerator(repos);

            // Act
            IEnumerable<Hyperlink> links = gen.Create(null);

            // Assert
            Assert.AreNotEqual(null, links);
            Assert.AreEqual(genres.Count + 2, links.Count());
            Hyperlink first = links.First();
            Assert.AreEqual(first.Text, "All");
            Assert.AreEqual(false, first.IsSelected);

            int i = 1;
            foreach (Hyperlink link in links.Skip(1).Take(2))
            {
                Assert.AreEqual(genres[i-1], link.Text);
                Assert.AreEqual(false, link.IsSelected);
                ++i;
            }

            Hyperlink last = links.Last();
            Assert.AreEqual(last.Text, "Secret");
            Assert.AreEqual(false, last.IsSelected);
        }
        public void ShouldGenerateAllAndSecretLinksOnlyWhenNoRepository()
        {
            // arrange
            GenresNavBarHyperlinkGenerator gen = new GenresNavBarHyperlinkGenerator(null);

            // Act
            IEnumerable<Hyperlink> links = gen.Create(null);

            // Assert
            Assert.AreNotEqual(null, links);
            Assert.AreEqual(2, links.Count());
            Assert.AreEqual(links.First().Text, "All");
            Assert.AreEqual(links.Skip(1).First().Text, "Secret");
        }
        public void ShouldGenerateSelectedGenreLink()
        {
            // Arrange
            List<string> genres = new List<string>() {
                "Genre1", "Genre2"
            };

            IArtistsRepository repos = MockArtistsRepository.CreateMockRepositoryGenresOnly(genres);
            Mock<IHyperlinkGeneratorArguments> args = new Mock<IHyperlinkGeneratorArguments>();
            args.Setup(x => x.Selected).Returns("Genre2");
            GenresNavBarHyperlinkGenerator gen = new GenresNavBarHyperlinkGenerator(repos);

            // Act
            IEnumerable<Hyperlink> links = gen.Create(args.Object);

            // Assert
            Assert.AreNotEqual(null, links);
            Assert.AreEqual(false, links.First().IsSelected);
            Assert.AreEqual(false, links.Skip(1).First().IsSelected);
            Assert.AreEqual(true, links.Skip(2).First().IsSelected);
        }