public void PutFavorites_MismatchBetweenUrlIdAndStageopdrachtIdCausesBadRequest()
        {
            //Arange
            var stageopdracht = new StageopdrachtenBuilder().WithId().Build();

            //Act
            var badRequestResult = _controller.PutFavorites(10, new Random().Next(1, int.MaxValue), stageopdracht) as BadRequestResult;

            //Assert
            Assert.That(badRequestResult, Is.Not.Null);
        }
        public void Put_MismatchBetweenUrlIdAndStageopdrachtIdCausesBadRequest()
        {
            //Arange
            var stageopdracht = new StageopdrachtenBuilder().WithId().Build();

            //Act
            var badRequestResult = _controller.Put(10, stageopdracht) as BadRequestResult;

            //Assert
            Assert.That(badRequestResult, Is.Not.Null);
        }
        public void PutFavorites_InValidStageopdrachtModelStateCausesBadRequest()
        {
            //Arrange
            var stagevoorstel = new StageopdrachtenBuilder().WithContactpersoon().Build();

            _controller.ModelState.AddModelError("Name", "Name is required");

            //Act
            var badRequestResult = _controller.PutFavorites(stagevoorstel.Id, new Random().Next(1, int.MaxValue), stagevoorstel) as BadRequestResult;

            //Assert
            Assert.That(badRequestResult, Is.Not.Null);
        }
        public void GetDetailStageopdrachtLectorAndStagecoordinator_ValidId_ReturnsAllStageopdrachtenDetailsFromRepository()
        {
            //Arrange
            var stageopdracht = new StageopdrachtenBuilder().WithContactpersoon().WithBedrijfspromotor().Build();

            _controller.StageopdrachtenRepositoryMock.Setup(repo => repo.GetDetailStageopdracht(stageopdracht.Id)).Returns(() => stageopdracht);

            //Act
            var returnedStageopdracht = _controller.GetDetailStageopdrachtLectorAndStagecoordinator(stageopdracht.Id) as OkNegotiatedContentResult <Stageopdracht>;

            //Assert
            _controller.StageopdrachtenRepositoryMock.Verify(repo => repo.GetDetailStageopdracht(stageopdracht.Id), Times.Once);
            Assert.That(returnedStageopdracht.Content, Is.EqualTo(stageopdracht));
        }
        public void GetStageopdrachtenWithFavorites_ReturnsStageopdrachtIfItExists()
        {
            //Arrange
            var stageopdracht = new StageopdrachtenBuilder().WithId().WithFavorites().Build();

            _controller.StageopdrachtenRepositoryMock.Setup(repo => repo.GetWithFavorites(stageopdracht.Id)).Returns(stageopdracht);

            //Act
            var okResult = _controller.GetStageopdrachtenWithFavorites(stageopdracht.Id) as OkNegotiatedContentResult <Stageopdracht>;

            //Assert
            Assert.That(okResult, Is.Not.Null);
            _controller.StageopdrachtenRepositoryMock.Verify(repo => repo.GetWithFavorites(stageopdracht.Id), Times.Once);
            Assert.That(okResult.Content, Is.EqualTo(stageopdracht));
        }
        public void Delete_ExistingStageopdrachtenIsDeletedFromRepository()
        {
            //Arrange
            var stageopdracht = new StageopdrachtenBuilder().WithId().Build();

            _controller.StageopdrachtenRepositoryMock.Setup(repo => repo.Get(stageopdracht.Id)).Returns(() => stageopdracht);

            //Act
            var action = _controller.Delete(stageopdracht.Id) as OkResult;

            //Assert
            Assert.That(action, Is.Not.Null);
            _controller.StageopdrachtenRepositoryMock.Verify(r => r.Get(stageopdracht.Id), Times.Once);
            _controller.StageopdrachtenRepositoryMock.Verify(r => r.Delete(stageopdracht.Id), Times.Once);
        }
        public void PutFavorites_ExistingStageopdrachtAndFavoritesIsSavedInRepository()
        {
            //Arrange
            var stageopdracht = new StageopdrachtenBuilder().WithId().WithFavorites().Build();

            _controller.StageopdrachtenRepositoryMock.Setup(repo => repo.GetWithFavorites(stageopdracht.Id)).Returns(() => stageopdracht);

            //Act
            var okResult = _controller.PutFavorites(stageopdracht.Id, new Random().Next(1, int.MaxValue), stageopdracht) as OkResult;

            //Assert
            Assert.That(okResult, Is.Not.Null);
            _controller.StageopdrachtenRepositoryMock.Verify(repo => repo.GetWithFavorites(stageopdracht.Id), Times.Once);
            _controller.StageopdrachtenRepositoryMock.Verify(repo => repo.UpdateFavorites(stageopdracht, It.IsAny <int>()), Times.Once);
        }
        public void Put_ExistingStageopdrachtIsSavedInRepository()
        {
            //Arrange
            var stageopdracht = new StageopdrachtenBuilder().WithId().Build();

            _controller.StageopdrachtenRepositoryMock.Setup(repo => repo.Get(stageopdracht.Id)).Returns(() => stageopdracht);

            //Act
            var okResult = _controller.Put(stageopdracht.Id, stageopdracht) as OkResult;

            //Assert
            Assert.That(okResult, Is.Not.Null);
            _controller.StageopdrachtenRepositoryMock.Verify(repo => repo.Get(stageopdracht.Id), Times.Once);
            _controller.StageopdrachtenRepositoryMock.Verify(repo => repo.Update(stageopdracht), Times.Once);
        }
        public void PutFavorites_NonExistingStageopdrachtReturnsNotFound()
        {
            //Aragnge
            _controller.StageopdrachtenRepositoryMock.Setup(s => s.GetWithFavorites(It.IsAny <int>())).Returns(() => null);

            var stageopdracht = new StageopdrachtenBuilder().WithId().Build();

            //Act
            var notFoundResult = _controller.PutFavorites(stageopdracht.Id, new Random().Next(1, int.MaxValue), stageopdracht) as NotFoundResult;

            //Assert
            Assert.That(notFoundResult, Is.Not.Null);

            _controller.StageopdrachtenRepositoryMock.Verify(repo => repo.GetWithFavorites(stageopdracht.Id), Times.Once);
            _controller.StageopdrachtenRepositoryMock.Verify(repo => repo.UpdateFavorites(stageopdracht, It.IsAny <int>()), Times.Never);
        }
        public void Post_ValidStageopdrachtlIsSavedInRepository()
        {
            //Arange
            var stageopdracht = new StageopdrachtenBuilder().Build();

            _controller.StageopdrachtenRepositoryMock.Setup(repo => repo.Post(It.IsAny <Stageopdracht>())).Returns(() =>
            {
                stageopdracht.Id = new Random().Next();
                return(stageopdracht);
            });

            //Act
            var actionResult = _controller.Post(stageopdracht) as CreatedAtRouteNegotiatedContentResult <Stageopdracht>;

            //Assert
            Assert.That(actionResult, Is.Not.Null);
            _controller.StageopdrachtenRepositoryMock.Verify(repo => repo.Post(stageopdracht), Times.Once);
            Assert.That(actionResult.Content, Is.EqualTo(stageopdracht)); //---
            Assert.That(actionResult.Content.Id, Is.GreaterThan(0));
            Assert.That(actionResult.RouteName, Is.EqualTo("DefaultApi"));
            Assert.That(actionResult.RouteValues.Count, Is.EqualTo(2));
            Assert.That(actionResult.RouteValues["controller"], Is.EqualTo("Stageopdrachten"));
            Assert.That(actionResult.RouteValues["id"], Is.EqualTo(actionResult.Content.Id));
        }