public void HandleVerWerkBetalingCommand_ShouldInsertNewBetalingAndPublishEvent()
        {
            // Arrange
            var queueName = "TestQueue";
            var receiver  = _nijnContext.CreateMessageReceiver(queueName, new List <string> {
                NameConstants.BetaalServiceBetalingGeaccrediteerdEvent
            });

            receiver.DeclareQueue();

            var betalingCM = new BetalingCM(1, 200);
            var command    = new VerwerkBetalingCommand(betalingCM, NameConstants.BetaalServiceBetalingVerwerkenCommandQueue);

            // Act
            _target.HandleVerWerkBetalingCommand(command);

            // Assert
            var queue            = _nijnContext.EventBus.Queues[queueName];
            var bestellingResult = JsonConvert.DeserializeObject <BestellingGeaccrediteerdEvent>(queue[0].Message);

            Assert.AreEqual(1, queue.MessageQueueLength);
            Assert.AreEqual(1, bestellingResult.Factuurnummer);

            var dbResult = _dbContext.Betalingen.SingleOrDefault(b => b.Factuurnummer == 1);

            Assert.AreEqual(betalingCM.Bedrag, dbResult.Bedrag);
            Assert.AreEqual(betalingCM.Factuurnummer, dbResult.Factuurnummer);
            Assert.AreEqual(1, dbResult.Klantnummer);
        }
        public void HandleBetalingGeaccrediteerdEvent_ShouldSetBestelStatusToGoedGekeurd()
        {
            var queueName = "TestQueue";
            var receiver  = _nijnContext.CreateMessageReceiver(queueName, new List <string> {
                NameConstants.BestelServiceBestelStatusUpgedateEvent
            });

            receiver.DeclareQueue();

            var request = new BestellingGeaccrediteerdEvent(1, NameConstants.BetaalServiceBetalingGeaccrediteerdEvent);

            _target.HandleBetalingGeaccrediteerdEvent(request);

            var queue            = _nijnContext.EventBus.Queues[queueName];
            var bestellingResult = JsonConvert.DeserializeObject <BestelStatusBijgewerktEvent>(queue[0].Message);

            Assert.AreEqual(1, queue.MessageQueueLength);
            Assert.AreEqual(1, bestellingResult.Bestelling.Factuurnummer);
            Assert.AreEqual(BestelStatus.Goedgekeurd, bestellingResult.Bestelling.BestelStatus);

            var dbResult = _dbContext.Bestellingen.SingleOrDefault(b => b.Id == 1);

            Assert.AreEqual(1, dbResult.Factuurnummer);
            Assert.AreEqual(BestelStatus.Goedgekeurd, dbResult.BestelStatus);
        }
        public void ReceiveBestellingGeplaatstEvent_ShouldAddBestellingToDatabaseAndRaiseEvent()
        {
            // Arrange
            var queueName = "TestQueue";
            var receiver  = _nijnContext.CreateMessageReceiver(queueName, new List <string> {
                NameConstants.BetaalServiceBetalingGeaccrediteerdEvent
            });

            receiver.DeclareQueue();

            var bestelling = new CommonModels.DsBestelService.Models.Bestelling()
            {
                FactuurTotaalInclBtw = 400,
                BestelStatus         = CommonModels.DsBestelService.Models.BestelStatus.Geplaatst,
                Factuurnummer        = 3,
                Klantnummer          = 1,
                Besteldatum          = DateTime.Now.AddDays(-2)
            };

            var request = new BestellingGeplaatstEvent(bestelling, NameConstants.BestelServiceBestellingGeplaatstEvent);

            // Act
            _target.ReceiveBestellingGeplaatstEvent(request);
            bestelling.Factuurnummer = 4;
            _target.ReceiveBestellingGeplaatstEvent(request);

            // Assert
            var queue            = _nijnContext.EventBus.Queues[queueName];
            var bestellingResult = JsonConvert.DeserializeObject <BestellingGeaccrediteerdEvent>(queue[0].Message);

            Assert.AreEqual(1, queue.MessageQueueLength);
            Assert.AreEqual(3, bestellingResult.Factuurnummer);

            var dbResult = _dbContext.Bestellingen.SingleOrDefault(b => b.Factuurnummer == 3);

            Assert.AreEqual(bestelling.FactuurTotaalInclBtw, dbResult.FactuurTotaalInclBtw);
            Assert.AreEqual(bestelling.BestelStatus.ToString(), dbResult.BestelStatus.ToString());
            Assert.AreEqual(3, dbResult.Factuurnummer);
            Assert.AreEqual(bestelling.Klantnummer, dbResult.Klantnummer);
            Assert.AreEqual(bestelling.Besteldatum, dbResult.Besteldatum);
        }