コード例 #1
0
      /// <exception cref="ArgumentNullException"><paramref name="categoryNode"/> is <see langword="null" />.</exception>
      public PluralsightCategory ParseCategoryNode(INode categoryNode)
      {
         if (categoryNode == null) 
            throw new ArgumentNullException("categoryNode");

         var idInHtml = categoryNode.GetAttributeValue(Constants.CategoryIdAttribute);

         var categoryName = _nodeSelector.SelectNode(categoryNode, Constants.CategoryNameXPath).InnerText;

         var courseCategory = new PluralsightCategory
         {
            UrlName = HttpUtility.HtmlDecode(idInHtml),
            Title = HttpUtility.HtmlDecode(categoryName)
         };

         return courseCategory;
      }
コード例 #2
0
      public void Should_ReturnParsedCategories()
      {
         // Arrange
         var categoryCount = 4;

         var data = Enumerable.Range(1, categoryCount).Select(x => new
         {
            Node = Mock.Of<INode>(),
            Category = new PluralsightCategory { Title = "category" + x, UrlName = "c" + x },
            Sketch = new Sketch { FileName = "fileName" + x, Url = "http://example.com/fileName" + x }
         }).ToList();


         var nodeSelector =
            Mock.Of<INodeSelector>(x => x.SelectCategoryNodes(out categoryCount) == data.Select(c => c.Node));

         Mock.Get(nodeSelector).Setup(x => x.SelectSketchNode(It.IsAny<string>()))
            .Returns((string urlName) => data
               .Where(x => x.Category.UrlName == urlName)
               .Select(x => x.Node)
               .Single());

         var nodeParser = Mock.Of<INodeParser>();

         Mock.Get(nodeParser).Setup(x => x.ParseCategoryNode(It.IsAny<INode>()))
            .Returns((INode n) => data
               .Where(x => x.Node == n)
               .Select(x => x.Category)
               .Single());

         Mock.Get(nodeParser).Setup(x => x.ParseSketchNode(It.IsAny<INode>()))
            .Returns((INode n) => data
               .Where(x => x.Node == n)
               .Select(x => x.Sketch)
               .Single());


         var sut = new PluralsightCatalogParser(nodeSelector, nodeParser);

         // Act
         var result = sut.ParseCategories();

         // Assert
         Assert.NotNull(result);
         Assert.Equal(categoryCount, result.Count);

         foreach (var index in Enumerable.Range(0, data.Count))
         {
            var expectedCategory = new PluralsightCategory
            {
               Title = data[index].Category.Title,
               UrlName = data[index].Category.UrlName,
               LogoFileName = data[index].Sketch.FileName,
               LogoUrl = data[index].Sketch.Url
            };

            Assert.Equal(expectedCategory, result[index], PluralsightCategory.PropertiesComparer);
         }
      }
コード例 #3
0
        public void Should_ReturnParsedCategories()
        {
            // Arrange
            var categoryCount = 4;

            var data = Enumerable.Range(1, categoryCount).Select(x => new
            {
                Node     = Mock.Of <INode>(),
                Category = new PluralsightCategory {
                    Title = "category" + x, UrlName = "c" + x
                },
                Sketch = new Sketch {
                    FileName = "fileName" + x, Url = "http://example.com/fileName" + x
                }
            }).ToList();


            var nodeSelector =
                Mock.Of <INodeSelector>(x => x.SelectCategoryNodes(out categoryCount) == data.Select(c => c.Node));

            Mock.Get(nodeSelector).Setup(x => x.SelectSketchNode(It.IsAny <string>()))
            .Returns((string urlName) => data
                     .Where(x => x.Category.UrlName == urlName)
                     .Select(x => x.Node)
                     .Single());

            var nodeParser = Mock.Of <INodeParser>();

            Mock.Get(nodeParser).Setup(x => x.ParseCategoryNode(It.IsAny <INode>()))
            .Returns((INode n) => data
                     .Where(x => x.Node == n)
                     .Select(x => x.Category)
                     .Single());

            Mock.Get(nodeParser).Setup(x => x.ParseSketchNode(It.IsAny <INode>()))
            .Returns((INode n) => data
                     .Where(x => x.Node == n)
                     .Select(x => x.Sketch)
                     .Single());


            var sut = new PluralsightCatalogParser(nodeSelector, nodeParser);

            // Act
            var result = sut.ParseCategories();

            // Assert
            Assert.NotNull(result);
            Assert.Equal(categoryCount, result.Count);

            foreach (var index in Enumerable.Range(0, data.Count))
            {
                var expectedCategory = new PluralsightCategory
                {
                    Title        = data[index].Category.Title,
                    UrlName      = data[index].Category.UrlName,
                    LogoFileName = data[index].Sketch.FileName,
                    LogoUrl      = data[index].Sketch.Url
                };

                Assert.Equal(expectedCategory, result[index], PluralsightCategory.PropertiesComparer);
            }
        }
コード例 #4
0
        private void CheckCoursesEquality(ICollection <PluralsightCourse> expectedCourses,
                                          ICollection <PluralsightCourse> resultCourses, PluralsightCategory resultCoursesCategory = null)
        {
            Assert.Equal(expectedCourses.Count, resultCourses.Count);

            foreach (var resultCourse in resultCourses)
            {
                if (resultCoursesCategory != null)
                {
                    Assert.Same(resultCourse.Category, resultCoursesCategory);
                }

                var expectedCourse = expectedCourses
                                     .Single(x => x.UrlName == resultCourse.UrlName);

                Assert.Equal(expectedCourse.Category, resultCourse.Category, PluralsightCategory.PropertiesComparer);
                Assert.Equal(expectedCourse, resultCourse, PluralsightCourse.PropertiesComparer);

                CheckCourseAuthorsEquality(expectedCourse, resultCourse);
            }
        }