protected override void Test(IOrganizationService service)
            {
                //Test framework does not support the FetchXmlToQueryExpression so we fake the expected API result for the specified fetchXml.
                var fakedFetchQuery = new Microsoft.Xrm.Sdk.Query.QueryExpression()
                {
                    EntityName = "new_transactiondatarecord",
                    ColumnSet  = new Microsoft.Xrm.Sdk.Query.ColumnSet(new string[] { "new_transactiondatarecordid" }),
                    Criteria   = new Microsoft.Xrm.Sdk.Query.FilterExpression
                    {
                        FilterOperator = Microsoft.Xrm.Sdk.Query.LogicalOperator.And,
                        Conditions     =
                        {
                            new Microsoft.Xrm.Sdk.Query.ConditionExpression("new_datafield1", Microsoft.Xrm.Sdk.Query.ConditionOperator.Equal, "TestValue")
                        }
                    }
                };

                service = new OrganizationServiceBuilder()
                          .WithFakeExecute((s, r) => {
                    if (r.RequestName == "FetchXmlToQueryExpression")
                    {
                        FetchXmlToQueryExpressionResponse resp = new FetchXmlToQueryExpressionResponse();
                        resp.Results.Add("Query", fakedFetchQuery);
                        return(resp);
                    }
                    return(s.Execute(r));
                })
                          .Build();

                var executionContext   = GetExecutionContext(service);
                var serializer         = new DefaultSerializer();
                var transactionPointer = new RecordPointer <Guid>(Ids.ExistingTransaction.LogicalName, Ids.ExistingTransaction.EntityId);

                var transactionServiceFactory = Container.Resolve <ITransactionServiceFactory>();
                var transactionService        = transactionServiceFactory.CreateTransactionService(executionContext, false);

                var transaction = transactionService.LoadTransaction(executionContext, transactionPointer);

                var evaluatorType = new EvaluatorType.DataReccordQueryMatchEvaluator(
                    Ids.DataRecordQueryEvaluator.ToRecordPointer(), "TestEvaluator",
                    "S3.D365.Transactions",
                    "CCLLC.BTF.Process.CDS.EvaluatorType.DataReccordQueryMatchEvaluator");



                string parameterJson = "{\"FetchXml\":\"<fetch><entity name='new_transactiondatarecord'><filter type='and'><condition value='TestValue' attribute='new_datafield1' operator='eq'/></filter></entity></fetch>\"}";

                var parameters = serializer.CreateParamters(parameterJson);

                var result = evaluatorType.Evaluate(executionContext, parameters, transaction);

                Assert.AreEqual(true, result.Passed);
            }
            protected override void Test(IOrganizationService service)
            {
                service = new OrganizationServiceBuilder()
                          .WithFakeExecute((s, r) => {
                    if (r.RequestName == "new_Action")
                    {
                        Assert.AreEqual(Ids.ExistingDataRecord.EntityId, (r["Target"] as EntityReference).Id);
                        Assert.AreEqual(Ids.ExistingTransaction.EntityId, (r["Transaction"] as EntityReference).Id);
                        OrganizationResponse resp = new OrganizationResponse();
                        resp.Results["IsTrue"]    = false;
                        resp.Results["Message"]   = "Action did not succeed.";
                        return(resp);
                    }
                    return(s.Execute(r));
                })
                          .Build();

                var executionContext   = GetExecutionContext(service);
                var serializer         = new DefaultSerializer();
                var transactionPointer = new RecordPointer <Guid>(Ids.ExistingTransaction.LogicalName, Ids.ExistingTransaction.EntityId);

                var transactionServiceFactory = Container.Resolve <ITransactionServiceFactory>();
                var transactionService        = transactionServiceFactory.CreateTransactionService(executionContext, false);

                var transaction = transactionService.LoadTransaction(executionContext, transactionPointer);


                var evaluatorType = new EvaluatorType.DataRecordActionEvaluator(
                    Ids.DataActionEvaluator.ToRecordPointer(),
                    "TestEvaluator",
                    "S3.D365.Transactions",
                    "CCLLC.BTF.Process.CDS.EvaluatorType.DataReccordActionEvaluator");

                string parameterJson = "{\"ActionName\":\"new_Action\"}";

                var parameters = serializer.CreateParamters(parameterJson);

                var result = evaluatorType.Evaluate(executionContext, parameters, transaction);

                Assert.AreEqual(false, result.Passed);
                Assert.AreEqual("Action did not succeed.", result.Message);
            }