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); }