public void TimelineController_Put_Validation_Test()
        {
            // Arrange
            Mock<ITimelineService> mock = new Mock<ITimelineService>(MockBehavior.Strict);
            mock.Setup(setup => setup.Add(It.IsAny<Timeline>()));
            TimelineController target = new TimelineController(mock.Object);
            Timeline timeline = new Timeline()
            {
                RootContentItem = null
            };

            // Act
            target.Configuration = new HttpConfiguration();
            target.Validate<Timeline>(timeline);
            IHttpActionResult result = target.Put(timeline);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result is BadRequestErrorMessageResult);
            Assert.AreEqual(false, target.ModelState.IsValid);
            Assert.AreEqual(3, target.ModelState.Count);
        }
        public void TimelineController_Post_Test()
        {
            // Arrange
            Mock<ITimelineService> mock = new Mock<ITimelineService>(MockBehavior.Strict);
            mock.Setup(setup => setup.Add(It.IsAny<Timeline>())).Returns(new Timeline()
            {
                Id = 123
            });
            TimelineController target = new TimelineController(mock.Object);
            Timeline timeline = new Timeline()
            {
                BeginDate = -1,
                EndDate = -1,
                Title = "test",
                RootContentItem = null
            };

            // Act
            target.Configuration = new HttpConfiguration();
            target.Validate<Timeline>(timeline);
            IHttpActionResult result = target.Post(timeline);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result is OkNegotiatedContentResult<long>);
            Assert.AreEqual((long)123, (result as OkNegotiatedContentResult<long>).Content);
            mock.Verify(verify => verify.Add(It.IsAny<Timeline>()), Times.Once);
        }
        public void TimelineController_Put_Test()
        {
            // Arrange
            Mock<ITimelineService> mock = new Mock<ITimelineService>(MockBehavior.Strict);
            mock.Setup(setup => setup.Update(It.IsAny<Timeline>()));
            TimelineController target = new TimelineController(mock.Object);
            Timeline timeline = new Timeline()
            {
                Id = 1,
                BeginDate = -1,
                EndDate = -1,
                Title = "test",
                RootContentItem = null
            };

            // Act
            target.Configuration = new HttpConfiguration();
            target.Validate<Timeline>(timeline);
            IHttpActionResult result = target.Put(timeline);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result is OkResult);
            mock.Verify(verify => verify.Update(It.IsAny<Timeline>()), Times.Once);
        }
        public void TimelineController_Post_InvalidID_Test()
        {
            // Arrange
            Mock<ITimelineService> mock = new Mock<ITimelineService>(MockBehavior.Strict);
            mock.Setup(setup => setup.Update(It.IsAny<Timeline>()));
            TimelineController target = new TimelineController(mock.Object);
            Timeline timeline = new Timeline()
            {
                BeginDate = -1,
                EndDate = -1,
                Title = "test"
            };

            // Act
            target.Configuration = new HttpConfiguration();
            target.Validate<Timeline>(timeline);
            IHttpActionResult result = target.Post(timeline);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result is BadRequestErrorMessageResult);
        }