コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        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));
        }