public void MapReturnsSyndicationItem()
        {
            // Arrange
            Guid referenceGuid = Guid.NewGuid();
            DateTime referenceDate = DateTime.UtcNow;
            PostViewModel model = new PostViewModel
                                      {
                                          AuthorName = "Fred",
                                          BodyAsHtml = "Some content",
                                          ExternalIdentifier = referenceGuid,
                                          PostedAt = referenceDate,
                                          PostID = 1,
                                          Subject = "My subject"
                                      };
            PostViewModelToSyndicationItemMapper mapper = new PostViewModelToSyndicationItemMapper();

            // Act
            SyndicationItem result = mapper.Map(model, "http://localhost");

            // Assert
            Assert.That(result.BaseUri, Is.EqualTo(new Uri("http://localhost/#/posts/1")));
            Assert.That(((TextSyndicationContent)result.Content).Text, Is.EqualTo("Some content"));
            Assert.That(result.Id, Is.EqualTo(referenceGuid.ToString()));
            Assert.That(result.LastUpdatedTime.UtcDateTime, Is.EqualTo(referenceDate));
            Assert.That(((TextSyndicationContent)result.Title).Text, Is.EqualTo("My subject"));
            Assert.That(result.Authors.Count, Is.EqualTo(1));
            Assert.That(((SyndicationPerson)result.Authors[0]).Name, Is.EqualTo("Fred"));
        }
        public void GetReturnsCorrectPost()
        {
            // Arrange
            PostViewModel mappedPost = new PostViewModel {PostID = 2};
            PostsService service = new PostsService(_unitOfWorkFactory, _mapper);
            _mapper.Stub(x => x.Map(_post2)).Return(mappedPost);

            // Act
            PostViewModel model = service.Get(2);

            // Assert
            Assert.That(model, Is.EqualTo(mappedPost));
        }
        public void GetPost_ReturnsPost()
        {
            // Arrange
            PostViewModel serviceModel = new PostViewModel {PostID = 1};
            _service.Stub(x => x.Get(1)).Return(serviceModel);
            InsanelySimpleBlogPostController controller = new InsanelySimpleBlogPostController(_service);

            // Act
            PostViewModel model = controller.GetPost(1);

            // Assert
            Assert.That(model, Is.EqualTo(serviceModel));
        }
        public void RecentPostsBeforeEndDate()
        {
            // Arrange
            PostViewModel mappedPost1 = new PostViewModel { PostID = 1 };
            PostsService service = new PostsService(_unitOfWorkFactory, _mapper);
            _mapper.Stub(x => x.Map(_post1)).Return(mappedPost1);

            // Act
            IEnumerable<PostViewModel> models = service.RecentPosts(0, 10, null, null, DateTime.Now.Subtract(TimeSpan.FromDays(1)));

            // Assert
            Assert.That(models.First(), Is.EqualTo(mappedPost1));
            Assert.That(models.Count(), Is.EqualTo(1));
        }
        public void RecentPostsInCategory()
        {
            // Arrange
            PostViewModel mappedPost1 = new PostViewModel { PostID = 1 };
            PostViewModel mappedPost2 = new PostViewModel { PostID = 2 };
            PostsService service = new PostsService(_unitOfWorkFactory, _mapper);
            _mapper.Stub(x => x.Map(_post1)).Return(mappedPost1);
            _mapper.Stub(x => x.Map(_post2)).Return(mappedPost2);

            // Act
            IEnumerable<PostViewModel> models = service.RecentPosts(0, 10, 1, null, null);

            // Assert
            Assert.That(models.First(), Is.EqualTo(mappedPost1));
            Assert.That(models.Count(), Is.EqualTo(1));
        }