public void GetReturnsMultipleObjects()
        {
            // Arrange
            List <Festival> festivals = new List <Festival>();

            festivals.Add(new Festival {
                Id = 1, Name = "Festival1"
            });
            festivals.Add(new Festival {
                Id = 2, Name = "Festival2"
            });

            var mockRepository = new Mock <IFestivalRepository>();

            mockRepository.Setup(x => x.GetAll()).Returns(festivals.AsEnumerable());
            var controller = new FestivalsController(mockRepository.Object);

            // Act
            IEnumerable <Festival> result = controller.GetAll();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(festivals.Count, result.ToList().Count);
            Assert.AreEqual(festivals.ElementAt(0), result.ElementAt(0));
            Assert.AreEqual(festivals.ElementAt(1), result.ElementAt(1));
        }
        public void DeleteReturnsNotFound()
        {
            // Arrange
            var mockRepository = new Mock <IFestivalRepository>();
            var controller     = new FestivalsController(mockRepository.Object);

            // Act
            IHttpActionResult actionResult = controller.Delete(10);

            // Assert
            Assert.IsInstanceOfType(actionResult, typeof(NotFoundResult));
        }
        public void PutReturnsBadRequest()
        {
            // Arrange
            var mockRepository = new Mock <IFestivalRepository>();
            var controller     = new FestivalsController(mockRepository.Object);

            // Act
            IHttpActionResult actionResult = controller.Put(10, new Festival {
                Id = 9, Name = "Festival2"
            });

            // Assert
            Assert.IsInstanceOfType(actionResult, typeof(BadRequestResult));
        }
        public void DeleteReturnsOk()
        {
            // Arrange
            var mockRepository = new Mock <IFestivalRepository>();

            mockRepository.Setup(x => x.GetById(10)).Returns(new Festival {
                Id = 10
            });
            var controller = new FestivalsController(mockRepository.Object);

            // Act
            IHttpActionResult actionResult = controller.Delete(10);

            // Assert
            Assert.IsInstanceOfType(actionResult, typeof(OkResult));
        }
        public void PostMethodSetsLocationHeader()
        {
            // Arrange
            var mockRepository = new Mock <IFestivalRepository>();
            var controller     = new FestivalsController(mockRepository.Object);

            // Act
            IHttpActionResult actionResult = controller.Post(new Festival {
                Id = 10, Name = "Festival2"
            });
            var createdResult = actionResult as CreatedAtRouteNegotiatedContentResult <Festival>;

            // Assert
            Assert.IsNotNull(createdResult);
            Assert.AreEqual("DefaultApi", createdResult.RouteName);
            Assert.AreEqual(10, createdResult.RouteValues["id"]);
        }
        public void GetReturnsProductWithSameId()
        {
            // Arrange
            var mockRepository = new Mock <IFestivalRepository>();

            mockRepository.Setup(x => x.GetById(42)).Returns(new Festival {
                Id = 42
            });

            var controller = new FestivalsController(mockRepository.Object);

            // Act
            IHttpActionResult actionResult = controller.GetById(42);
            var contentResult = actionResult as OkNegotiatedContentResult <Festival>;

            // Assert
            Assert.IsNotNull(contentResult);
            Assert.IsNotNull(contentResult.Content);
            Assert.AreEqual(42, contentResult.Content.Id);
        }