public void HandleApkKeuringsVerzoekRdwApkAgentCalledTest()
        {
            // Arrange
            var rdwApkAgentMock      = new Mock <IRdwApkAgent>(MockBehavior.Strict);
            var verzoekConverterMock = new Mock <IKeuringsVerzoekConverter>(MockBehavior.Strict);
            var logRepoMock          = new Mock <IRepository <ApkAanvraagLog, long> >(MockBehavior.Strict);

            verzoekConverterMock.Setup(l => l.ToKeuringsVerzoekAntwoord(It.IsAny <Keuringsregistratie>())).Returns(new KeuringsVerzoekAntwoord());

            logRepoMock.Setup(l => l.Insert(It.IsAny <ApkAanvraagLog>()));
            logRepoMock.Setup(l => l.Update(It.IsAny <ApkAanvraagLog>()));

            rdwApkAgentMock.Setup(x => x.SendApkKeuringsVerzoek(It.IsAny <string>())).Returns(
                "<?xml version=\"1.0\" encoding=\"utf - 8\"?><apkKeuringsverzoekResponseMessage xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><keuringsregistratie correlatieId=\"f7f56961-6928-46ef-9b49-98d611ce2b71\" xmlns=\"http://www.rdw.nl\" xmlns:apk=\"http://www.rdw.nl/apk\"><kenteken>string</kenteken><apk:keuringsdatum>24-11-2016</apk:keuringsdatum><apk:steekproef xsi:nil=\"true\"/></keuringsregistratie></apkKeuringsverzoekResponseMessage>"
                );

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

            publisherMock.Setup(x => x.Publish(It.IsAny <DomainEvent>()));

            var target = new RdwApkManager(rdwApkAgentMock.Object, verzoekConverterMock.Object, logRepoMock.Object, "http://www.rdw.nl", "http://www.rdw.nl/apk", publisherMock.Object);
            var apkKeuringsVerzoekCommand = new ApkKeuringsVerzoekCommand();

            var result = target.HandleApkKeuringsVerzoek(apkKeuringsVerzoekCommand);

            // Act - Assert
            rdwApkAgentMock.Verify(x => x.SendApkKeuringsVerzoek(It.IsAny <string>()), Times.Once());
            verzoekConverterMock.Verify(l => l.ToKeuringsVerzoekAntwoord(It.IsAny <Keuringsregistratie>()), Times.Once());
            logRepoMock.Verify(x => x.Insert(It.IsAny <ApkAanvraagLog>()), Times.Once());
            logRepoMock.Verify(x => x.Update(It.IsAny <ApkAanvraagLog>()), Times.Once());
            publisherMock.Verify(x => x.Publish(It.IsAny <DomainEvent>()), Times.Once());
            Assert.IsNotNull(result);
        }
        public void HandleApkKeuringsVerzoekCommandNullThrowsApkKeuringsVerzoekException()
        {
            // Arrange
            var rdwApkAgentMock      = new Mock <IRdwApkAgent>(MockBehavior.Strict);
            var verzoekConverterMock = new Mock <IKeuringsVerzoekConverter>(MockBehavior.Strict);
            var logRepoMock          = new Mock <IRepository <ApkAanvraagLog, long> >(MockBehavior.Strict);

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

            var target = new RdwApkManager(rdwApkAgentMock.Object,
                                           verzoekConverterMock.Object, logRepoMock.Object,
                                           "http://www.rdw.nl", "http://www.rdw.nl/apk",
                                           publisherMock.Object
                                           );
            ApkKeuringsVerzoekCommand apkKeuringsVerzoekCommand = null;

            // Act - Assert
            Assert.ThrowsException <ArgumentNullException>(() => target.HandleApkKeuringsVerzoek(apkKeuringsVerzoekCommand));
        }