public async Task UpdateBestelStatus_ShouldRemoveBestellingFromSessionsWhenStatusIsVerzonden() { // Arrange var updateBestelStatus = new UpdateBestelStatus() { Status = BestelStatus.Verzonden, }; var session = new MagazijnSessionEntity { Factuurnummer = 2 }; _commandPublisherMock.Setup(publisher => publisher.Publish <long>(It.Is <UpdateBestelStatusCommand> (x => x.Factuurnummer == 1))) .ReturnsAsync(1); _magazijnSessionDataMapperMock.Setup(d => d.GetByFactuurnummer(1)).Returns(session); _magazijnSessionDataMapperMock.Setup(d => d.Delete(It.Is <MagazijnSessionEntity>(e => e.Factuurnummer == 2 && e.Id == session.GetKeyValue() ))); // Act var result = await _target.UpdateBestelStatus(1, updateBestelStatus); // Assert _commandPublisherMock.VerifyAll(); _magazijnSessionDataMapperMock.VerifyAll(); var requestResult = result as StatusCodeResult; Assert.IsNotNull(requestResult); Assert.AreEqual(200, requestResult.StatusCode); }
public async Task UpdateBestelStatus_ShouldRemoveSessionFromDatabaseWhenBestelStatusIsVerzonden() { var factuurnummer = 10; var status = new UpdateBestelStatus { Status = BestelStatus.Verzonden }; var session = new MagazijnSessionEntity { MedewerkerEmail = "Email", Factuurnummer = factuurnummer }; _dbContext.MagazijnSessions.Add(session); _dbContext.SaveChanges(); var receiver = _nijnContext.CreateCommandReceiver(NameConstants.BestelServiceUpdateBestelStatusCommandQueue); receiver.DeclareCommandQueue(); receiver.StartReceivingCommands(request => new ResponseCommandMessage("10", "Long", request.CorrelationId)); var result = await _target.UpdateBestelStatus(factuurnummer, status); var queue = _nijnContext.CommandBus.Queues[NameConstants.BestelServiceUpdateBestelStatusCommandQueue]; var okResult = result as OkResult; Assert.AreEqual(200, okResult.StatusCode); Assert.AreEqual(1, queue.CalledTimes); Assert.AreEqual(0, _dbContext.MagazijnSessions.Count()); }
public async Task UpdateBestelStatus_ShouldSendUpdateBestelStatusCommand() { var factuurnummer = 10; var status = new UpdateBestelStatus { Status = BestelStatus.Afgerond }; var receiver = _nijnContext.CreateCommandReceiver(NameConstants.BestelServiceUpdateBestelStatusCommandQueue); receiver.DeclareCommandQueue(); receiver.StartReceivingCommands(request => new ResponseCommandMessage("10", "Long", request.CorrelationId)); var result = await _target.UpdateBestelStatus(factuurnummer, status); var queue = _nijnContext.CommandBus.Queues[NameConstants.BestelServiceUpdateBestelStatusCommandQueue]; var okResult = result as OkResult; Assert.AreEqual(200, okResult.StatusCode); Assert.AreEqual(1, queue.CalledTimes); }
public async Task <IActionResult> UpdateBestelStatus(long factuurnummer, [FromBody] UpdateBestelStatus bestelStatus) { try { await VerstuurUpdateBestelStatus(factuurnummer, bestelStatus.Status); if (bestelStatus.Status == BffWebshopBestelStatus.Verzonden) { var session = _magazijnSessionDataMapper.GetByFactuurnummer(factuurnummer); _magazijnSessionDataMapper.Delete(session); } return(Ok()); } catch (DatabaseException) { _logger.LogError("UpdateBestelStatusCommand resulted in a DatabaseException."); return(BadRequest("Factuurnummer is incorrect")); } catch (InvalidUpdateException e) { _logger.LogError("UpdateBestelStatusCommand resulted in a InvalidUpdateException"); _logger.LogDebug("Exception message: {}", e.Message); return(BadRequest($"Update van bestelstatus naar: {bestelStatus.Status} is niet toegestaan")); } catch (TimeoutException) { _logger.LogError("UpdateBestelStatusCommand resulted in a TimeoutException."); return(StatusCode((int)HttpStatusCode.RequestTimeout, "Aanvraag kon niet worden verwerkt")); } catch (Exception ex) { _logger.LogError("UpdateBestelStatusCommand resulted in an internal server error."); _logger.LogDebug( "Exception occured during execution of UpdateBestelStatusCommand {}, it threw exception: {}. Inner exception: {}", bestelStatus.Status, ex.Message, ex.InnerException?.Message ); return(StatusCode((int)HttpStatusCode.InternalServerError)); } }
public async Task UpdateBestelStatus_Exception() { // Arrange var updateBestelStatus = new UpdateBestelStatus() { Status = BestelStatus.Goedgekeurd, }; _commandPublisherMock.Setup(publisher => publisher.Publish <long>(It.Is <UpdateBestelStatusCommand> (x => x.Factuurnummer == 1))) .ThrowsAsync(new Exception()); // Act var result = await _target.UpdateBestelStatus(1, updateBestelStatus); // Assert _commandPublisherMock.VerifyAll(); var requestResult = result as StatusCodeResult; Assert.IsNotNull(requestResult); Assert.AreEqual(500, requestResult.StatusCode); }
public async Task UpdateBestelStatus_DatabaseException_ShouldReturnFactuurnummerError() { // Arrange var updateBestelStatus = new UpdateBestelStatus() { Status = BestelStatus.Goedgekeurd, }; _commandPublisherMock.Setup(publisher => publisher.Publish <long>(It.Is <UpdateBestelStatusCommand> (x => x.Factuurnummer == 1))) .ThrowsAsync(new DatabaseException("error")); // Act var result = await _target.UpdateBestelStatus(1, updateBestelStatus); // Assert _commandPublisherMock.VerifyAll(); var badRequestResult = result as BadRequestObjectResult; Assert.IsNotNull(badRequestResult); Assert.AreEqual("Factuurnummer is incorrect", badRequestResult.Value); }
public async Task UpdateBestelStatus_InvalidUpdateException() { // Arrange var updateBestelStatus = new UpdateBestelStatus() { Status = BestelStatus.Goedgekeurd, }; _commandPublisherMock.Setup(publisher => publisher.Publish <long>(It.Is <UpdateBestelStatusCommand> (x => x.Factuurnummer == 1))) .ThrowsAsync(new InvalidUpdateException()); // Act var result = await _target.UpdateBestelStatus(1, updateBestelStatus); // Assert _commandPublisherMock.VerifyAll(); var requestResult = result as ObjectResult; Assert.IsNotNull(requestResult); Assert.AreEqual(400, requestResult.StatusCode); Assert.AreEqual($"Update van bestelstatus naar: Goedgekeurd is niet toegestaan", requestResult.Value); }
public async Task UpdateBestelStatus_TimeoutException() { // Arrange var updateBestelStatus = new UpdateBestelStatus() { Status = BestelStatus.Goedgekeurd, }; _commandPublisherMock.Setup(publisher => publisher.Publish <long>(It.Is <UpdateBestelStatusCommand> (x => x.Factuurnummer == 1))) .ThrowsAsync(new TimeoutException()); // Act var result = await _target.UpdateBestelStatus(1, updateBestelStatus); // Assert _commandPublisherMock.VerifyAll(); var requestResult = result as ObjectResult; Assert.IsNotNull(requestResult); Assert.AreEqual(408, requestResult.StatusCode); Assert.AreEqual("Aanvraag kon niet worden verwerkt", requestResult.Value); }