public async Task UpdatePersonByIdUseCaseGatewayReturnsResultNoChanges(int?ifMatch) { // Arrange var request = ConstructRequest(); var query = ConstructQuery(Guid.NewGuid()); var token = new Token(); var updatedPerson = ConstructPerson(query.Id); var gatewayResult = new UpdateEntityResult <PersonDbEntity>() { UpdatedEntity = updatedPerson.ToDatabase() }; _mockGateway.Setup(x => x.UpdatePersonByIdAsync(request, It.IsAny <string>(), query, ifMatch)) .ReturnsAsync(gatewayResult); var snsEvent = _fixture.Create <PersonSns>(); _mockSnsFactory.Setup(x => x.Update(gatewayResult, token)) .Returns(snsEvent); // Act var response = await _classUnderTest.ExecuteAsync(request, "", token, query, ifMatch).ConfigureAwait(false); // Assert _mockSnsFactory.Verify(x => x.Update(gatewayResult, token), Times.Never); _mockSnsGateway.Verify(x => x.Publish(snsEvent, It.IsAny <string>(), It.IsAny <string>()), Times.Never); response.Should().BeEquivalentTo(_responseFactory.ToResponse(updatedPerson)); }
public ActionResult <dynamic> Put(string ApiKey, string EntityType, [FromBody] dynamic Entity) { try { if (!WorkeFunctions.IsValidApiKey(ApiKey)) { throw new InvalidApiKeyException(); } object objectToStore; if (Entity.GetType().Name == "JObject") { var typedObject = EntityFactory.GetEmptyTypedObect(EntityType); objectToStore = EntityFactory.CopyPropertiesFromDynamicObjectToTypedObject(Entity, typedObject); } else { objectToStore = Entity; } UpdateEntityResult ret = WorkeFunctions.BusinessObjectAccess.UpdateEntity(objectToStore); if (ret == UpdateEntityResult.Success) { EntityDescriber edd = new EntityDescriber(objectToStore); if (edd.IdField() != null) { return(CreatedAtAction(nameof(Get), new { id = EntityFactory.GetPropertyByName(objectToStore, edd.IdField().Name) }, objectToStore)); } else { return(CreatedAtAction(nameof(Get), new { }, objectToStore)); } } else if (ret == UpdateEntityResult.NoRowsAffected) { return(NotFound()); } else { return(new UnprocessableEntityObjectResult(objectToStore)); } } catch (InvalidApiKeyException) { return(Unauthorized()); } catch (Alchemint.Core.Exceptions.RecordUpdateException ex) { HandleException(ex); throw ex; } catch (Exception ex) { HandleException(ex); throw ex; } }
public PersonSns Update(UpdateEntityResult <PersonDbEntity> updateResult, Token token) { return(new PersonSns { CorrelationId = Guid.NewGuid(), DateTime = DateTime.UtcNow, EntityId = updateResult.UpdatedEntity.Id, Id = Guid.NewGuid(), EventType = UpdatePersonConstants.EVENTTYPE, Version = UpdatePersonConstants.V1VERSION, SourceDomain = UpdatePersonConstants.SOURCEDOMAIN, SourceSystem = UpdatePersonConstants.SOURCESYSTEM, User = new User { Name = token.Name, Email = token.Email }, EventData = new EventData { OldData = updateResult.OldValues, NewData = updateResult.NewValues } }); }