private async Task VerstuurUpdateBestelStatus(long factuurnummer, BffWebshopBestelStatus newStatus) { var status = newStatus.CastTo <DsBestelServiceBestelStatus>(); var updateBestelStatusCommand = new UpdateBestelStatusCommand( factuurnummer: factuurnummer, bestelstatus: status, routingKey: NameConstants.BestelServiceUpdateBestelStatusCommandQueue ); await _commandPublisher.Publish <long>(updateBestelStatusCommand); }
public async Task HandleUpdateBestelStatus_ShouldThrowAnExcpetionWhenFindBestellingFailed() { // Arrange var bestelStatusCommand = new UpdateBestelStatusCommand(1, BestelStatus.Geplaatst, NameConstants.BestelServiceUpdateBestelStatusCommandQueue); _bestellingDataMapperMock.Setup(m => m.GetByFactuurnummer(1)).Throws(new Exception()); // Act Func <Task> action = async() => await _target.HandleUpdateBestelStatus(bestelStatusCommand); // Assert var ex = await Assert.ThrowsExceptionAsync <DatabaseException>(action); Assert.AreEqual("Something unexpected happend while find bestelling in the database", ex.Message); }
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(); }
public async Task <long> HandleUpdateBestelStatus(UpdateBestelStatusCommand request) { var bestelling = GetBestellingByFactuurNummer(request.Factuurnummer); if (!bestelling.BestelStatus.UpdateIsAllowed(request.BestelStatus)) { _logger.LogError("Invalid BestelStatus update, cannot update status {from} to {to}", bestelling.BestelStatus, request.BestelStatus); throw new InvalidUpdateException("BestelStatus update not allowed"); } bestelling.BestelStatus = request.BestelStatus; UpdateBestelling(bestelling); if (bestelling.BestelStatus == BestelStatus.Verzonden) { await VerlaagVoorraad(bestelling); } _eventPublish.Publish(new BestelStatusBijgewerktEvent(bestelling, NameConstants.BestelServiceBestelStatusUpgedateEvent)); return(request.Factuurnummer); }
public async Task HandleUpdateBestelStatus_ShouldThrowAnExceptionWhenBestelStatusUpdateIsNotAllowed() { // Arrange var bestelStatusCommand = new UpdateBestelStatusCommand(1, BestelStatus.Afgerond, NameConstants.BestelServiceUpdateBestelStatusCommandQueue); var existing = new Bestelling { BestelStatus = BestelStatus.Geplaatst }; _bestellingDataMapperMock.Setup(m => m.GetByFactuurnummer(1)).Returns(existing); _bestellingDataMapperMock.Setup(m => m.Update(It.IsAny <Bestelling>())) .Throws(new Exception()); // Act Func <Task> action = async() => await _target.HandleUpdateBestelStatus(bestelStatusCommand); // Assert var ex = await Assert.ThrowsExceptionAsync <InvalidUpdateException>(action); Assert.AreEqual("BestelStatus update not allowed", ex.Message); }
public async Task HandleUpdateBestelStatus_ShouldCallUpdateOnDataMapper() { // Arrange Bestelling bestelling = null; var bestelStatusCommand = new UpdateBestelStatusCommand(1, BestelStatus.Goedgekeurd, NameConstants.BestelServiceUpdateBestelStatusCommandQueue); _bestellingDataMapperMock.Setup(m => m.GetByFactuurnummer(1)).Returns(new Bestelling { BestelStatus = BestelStatus.Geplaatst }); _bestellingDataMapperMock.Setup(m => m.Update(It.IsAny <Bestelling>())) .Callback <Bestelling>(b => bestelling = b); _eventPublisherMock.Setup(publisher => publisher.Publish(It.IsAny <DomainEvent>())); // Act var result = await _target.HandleUpdateBestelStatus(bestelStatusCommand); // Assert _bestellingDataMapperMock.VerifyAll(); Assert.AreEqual(1, result); Assert.AreEqual(BestelStatus.Goedgekeurd, bestelling.BestelStatus); }