public void OnderhoudController_MaakNieuwOnderhoudsOpdracht_SuccessWithData()
        {
            // Arrange
            var repoMock = new Mock <IRepository>(MockBehavior.Strict);

            repoMock.Setup(r => r.Insert(It.IsAny <OnderhoudsOpdracht>()));

            var pubMock = new Mock <IEventPublisher>(MockBehavior.Strict);

            pubMock.Setup(p => p.Publish(It.IsAny <OnderhoudsOpdrachtAangemeldEvent>()));

            var target = new OnderhoudController(repoMock.Object, pubMock.Object);

            var command = new MeldOnderhoudsOpdrachtAanCommand()
            {
                KlantGuid            = new Guid("0f8fad5b-d9cb-469f-a165-70867728950e"),
                AutoGuid             = new Guid("0f8fad5b-d9cb-469f-a165-70867728950e"),
                AanmeldDatum         = DateTime.ParseExact("2016-11-30 10:51", "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture),
                Kilometerstand       = 101,
                OpdrachtOmschrijving = "test omschrijving",
                Apk = true
            };

            // Act
            IActionResult result = target.MaakNieuwOnderhoudsOpdracht(command);

            // Assert
            Assert.IsInstanceOfType(result, typeof(OkResult));
            repoMock.Verify(r => r.Insert(It.IsAny <OnderhoudsOpdracht>()), Times.Once());
            pubMock.Verify(p => p.Publish(It.IsAny <OnderhoudsOpdrachtAangemeldEvent>()), Times.Once());
        }
        public void OnderhoudController_MaakNieuwOnderhoudsOpdracht_Fails()
        {
            // Arrange
            var repoMock = new Mock <IRepository>(MockBehavior.Strict);
            var pubMock  = new Mock <IEventPublisher>(MockBehavior.Strict);
            var target   = new OnderhoudController(repoMock.Object, pubMock.Object);

            // Act
            IActionResult result = target.MaakNieuwOnderhoudsOpdracht(null);

            // Assert
            Assert.IsInstanceOfType(result, typeof(BadRequestResult));
            repoMock.Verify(r => r.Insert(It.IsAny <OnderhoudsOpdracht>()), Times.Never());
            pubMock.Verify(p => p.Publish(It.IsAny <OnderhoudsOpdrachtAangemeldEvent>()), Times.Never());
        }
        public void OnderhoudController_MaakNieuwOnderhoudsOpdracht_Success()
        {
            // Arrange
            var repoMock = new Mock <IRepository>(MockBehavior.Strict);

            repoMock.Setup(r => r.Insert(It.IsAny <OnderhoudsOpdracht>()));

            var pubMock = new Mock <IEventPublisher>(MockBehavior.Strict);

            pubMock.Setup(p => p.Publish(It.IsAny <OnderhoudsOpdrachtAangemeldEvent>()));

            var target = new OnderhoudController(repoMock.Object, pubMock.Object);

            var command = new MeldOnderhoudsOpdrachtAanCommand();

            // Act
            IActionResult result = target.MaakNieuwOnderhoudsOpdracht(command);

            // Assert
            Assert.IsInstanceOfType(result, typeof(OkResult));
            repoMock.Verify(r => r.Insert(It.IsAny <OnderhoudsOpdracht>()), Times.Once());
            pubMock.Verify(p => p.Publish(It.IsAny <OnderhoudsOpdrachtAangemeldEvent>()), Times.Once());
        }