public void ThenVerwerkEenBestellingInHetSysteemMetHetKlantnummerBesteldatumEnBestelregels()
        {
            var bestellingDataMapper = new BestellingDataMapper(_context);
            var artikelDataMapper    = new ArtikelDataMapper(_context);
            var eventPublisherMock   = new Mock <IEventPublisher>(MockBehavior.Strict);
            var commandSenderMock    = new Mock <ICommandSender>(MockBehavior.Strict);

            var response = new ResponseCommandMessage(JsonConvert.SerializeObject(true), "type", "correlationId");

            eventPublisherMock.Setup(p => p.Publish(It.IsAny <DomainEvent>()));
            commandSenderMock.Setup(sendr => sendr.SendCommandAsync(It.IsAny <RequestCommandMessage>())).ReturnsAsync(response);

            var controller = new BestellingController(bestellingDataMapper, artikelDataMapper, eventPublisherMock.Object, new LoggerFactory());

            var bestelling = new BestellingCM
            {
                Klantnummer  = _klantnummer,
                BestelRegels = new List <BestelRegelCM>()
            };

            foreach (var regel in _bestelregels)
            {
                bestelling.BestelRegels.Add(new BestelRegelCM()
                {
                    Artikelnummer = regel.Item1,
                    Aantal        = regel.Item5
                });
            }

            var result = controller.HandlePlaatsBestelling(new PlaatsBestellingCommand(bestelling, ""));

            eventPublisherMock.VerifyAll();
            Assert.AreEqual(1, result);
        }
        public async Task HandleUpdateBestelStatus_ShouldLowerStockWhenBestelStatusVerzonden()
        {
            // Arrange
            var artikel = new ArtikelBuilder()
                          .SetArtikelNummer(1)
                          .SetLeveranciercode("1-abc-xyz")
                          .SetNaam("Fietsband")
                          .SetPrijs(12.99m)
                          .Create();

            var existing = new Bestelling
            {
                Klantnummer  = 1234,
                BestelStatus = BestelStatus.WordtIngepakt,
                ContactInfo  = new ContactInfo(),
                Afleveradres = new Afleveradres(),
                BestelRegels = new List <BestelRegel>
                {
                    new BestelRegel {
                        Artikelnummer = 1, Aantal = 2
                    },
                }
            };

            var bestelStatusCommand = new UpdateBestelStatusCommand(1, BestelStatus.Verzonden, NameConstants.BestelServiceUpdateBestelStatusCommandQueue);

            _bestellingDataMapperMock.Setup(m => m.GetByFactuurnummer(1)).Returns(existing);
            _bestellingDataMapperMock.Setup(m => m.Update(It.IsAny <Bestelling>()));

            _eventPublisherMock.Setup(publisher => publisher.Publish(It.IsAny <DomainEvent>()));

            var response = new ResponseCommandMessage(JsonConvert.SerializeObject(true), "type", "correlationId");

            _commandSenderMock.Setup(sendr => sendr.SendCommandAsync(It.Is <RequestCommandMessage>(cm =>
                                                                                                   cm.RoutingKey == NameConstants.MagazijnServiceCommandQueue && cm.Type == NameConstants.MagazijnServiceHaalVoorraadUitMagazijnCommand
                                                                                                   ))).ReturnsAsync(response);

            // Act
            await _target.HandleUpdateBestelStatus(bestelStatusCommand);

            // Assert
            _nijnContextMock.VerifyAll();
            _bestellingDataMapperMock.VerifyAll();
            _eventPublisherMock.VerifyAll();
            _commandSenderMock.VerifyAll();
        }