public UpdateProcessDataResponse ExecuteUpdate(UpdateProcessDataRequest request) { var updateDefinition = UpdateProcessDocumentHelper.PrepareFieldsToBeUpdated(request.processDataToUpdate); var gatewayResult = _processDataGateway.UpdateProcessData(updateDefinition, request.processRef); return(new UpdateProcessDataResponse(request, gatewayResult, DateTime.Now)); }
public void test_that_object_can_be_successfully_updated() { //arrange MatProcessData processData = MatProcessDataHelper.CreateProcessDataObject(); var bsonObject = BsonDocument.Parse(JsonConvert.SerializeObject(processData)); collection.InsertOne(bsonObject); //object to update var objectToUpdate = new MatUpdateProcessData(); var processRef = processData.Id; objectToUpdate.DateLastModified = _faker.Date.Recent(); objectToUpdate.ProcessData = new { firstField = _faker.Random.Word(), anyField = _faker.Random.Words(), numberField = _faker.Random.Number() }; //get update definition var updateDefinition = UpdateProcessDocumentHelper.PrepareFieldsToBeUpdated(objectToUpdate); //act var result = processDataGateway.UpdateProcessData(updateDefinition, processRef); //assert Assert.AreEqual(processRef, result.Id); Assert.AreEqual(JsonConvert.SerializeObject(objectToUpdate.ProcessData), JsonConvert.SerializeObject(result.ProcessData)); Assert.AreEqual(objectToUpdate.DateLastModified.ToShortDateString(), result.DateLastModified.ToShortDateString()); Assert.IsInstanceOf <MatProcessData>(result); }
public void can_check_for_fields_to_be_updated_from_a_request_object_correctly(string firstField) { //this test ensures that the update definition is built correctly and will be recognised as different when compared to a different //update definition //arrange var matProcessData = new MatUpdateProcessData(); //add fields to be updated matProcessData.ProcessData = new { firstField = _faker.Random.Word(), anyField = _faker.Random.Words(), numberField = _faker.Random.Number() }; matProcessData.DateLastModified = _faker.Date.Recent(); var expectedUpdateDefinition = Builders <BsonDocument> .Update.Combine( Builders <BsonDocument> .Update.Set("dateLastModified", matProcessData.DateLastModified), Builders <BsonDocument> .Update.Set("processDataa", matProcessData.ProcessData)); //act UpdateDefinition <BsonDocument> processDataUpdateDefinition = UpdateProcessDocumentHelper.PrepareFieldsToBeUpdated(matProcessData); //assert var serializerRegistry = BsonSerializer.SerializerRegistry; var documentSerializer = serializerRegistry.GetSerializer <BsonDocument>(); //test that update definitions are succesfully recognised as different Assert.AreNotEqual(expectedUpdateDefinition.Render(documentSerializer, serializerRegistry).ToString(), processDataUpdateDefinition.Render(documentSerializer, serializerRegistry).ToString()); }
public void can_check_for_fields_to_be_updated_from_a_request_object_and_prepare_update_definition() { //arrange var matProcessData = new MatUpdateProcessData(); //add fields to be updated matProcessData.ProcessData = new { firstField = _faker.Random.Word(), anyField = _faker.Random.Words(), numberField = _faker.Random.Number() }; matProcessData.DateLastModified = _faker.Date.Recent(); var expectedUpdateDefinition = Builders <BsonDocument> .Update.Combine( Builders <BsonDocument> .Update.Set("dateLastModified", matProcessData.DateLastModified), Builders <BsonDocument> .Update.Set("processDataAvailable", true), Builders <BsonDocument> .Update.Set("processData", BsonDocument.Parse(JsonConvert.SerializeObject(matProcessData.ProcessData)))); //act UpdateDefinition <BsonDocument> processDataUpdateDefinition = UpdateProcessDocumentHelper.PrepareFieldsToBeUpdated(matProcessData); //assert var serializerRegistry = BsonSerializer.SerializerRegistry; var documentSerializer = serializerRegistry.GetSerializer <BsonDocument>(); //compare what the update definitions render to Assert.AreEqual(expectedUpdateDefinition.Render(documentSerializer, serializerRegistry).ToString(), processDataUpdateDefinition.Render(documentSerializer, serializerRegistry).ToString()); }
public void test_if_object_to_be_updated_is_not_found_exception_is_thrown() { //arrange //object to update var objectToUpdate = new MatUpdateProcessData(); objectToUpdate.DateLastModified = _faker.Date.Recent(); objectToUpdate.ProcessData = new { firstField = _faker.Random.Word(), anyField = _faker.Random.Words(), numberField = _faker.Random.Number() }; var processRef = _faker.Random.Guid().ToString(); //get update definition var updateDefinition = UpdateProcessDocumentHelper.PrepareFieldsToBeUpdated(objectToUpdate); //assert Assert.Throws <DocumentNotFound>(() => processDataGateway.UpdateProcessData(updateDefinition, processRef)); }