public void CloseTroubleTicketTest()
        {
            Mock <IOrganizationService> orgSvc = null;
            Mock <MoqHttpMessagehander> fakHttpMethodHander = null;
            CdsServiceClient            cli = null;

            testSupport.SetupMockAndSupport(out orgSvc, out fakHttpMethodHander, out cli);


            orgSvc.Setup(f => f.Execute(It.Is <CloseIncidentRequest>(p => p.IncidentResolution is Entity && ((Entity)p.IncidentResolution).GetAttributeValue <string>("subject").Equals("Subject", StringComparison.OrdinalIgnoreCase)))).Returns(new CloseIncidentResponse());

            Guid rslt = cli.CloseTroubleTicket(testSupport._DefaultId, "Subject", "Description");

            Assert.IsType <Guid>(rslt);
            Assert.NotEqual <Guid>(Guid.Empty, rslt);

            rslt = cli.CloseTroubleTicket(Guid.Empty, "Subject", "Description");
            Assert.IsType <Guid>(rslt);
            Assert.Equal <Guid>(Guid.Empty, rslt);

            // try with batch
            // Setup a batch
            string BatchRequestName = "TestBatch";
            Guid   batchid          = cli.CreateBatchOperationRequest(BatchRequestName);

            rslt = cli.CloseTroubleTicket(testSupport._DefaultId, "Subject", "Description", batchId: batchid);
            Assert.IsType <Guid>(rslt);
            Assert.Equal <Guid>(Guid.Empty, rslt);

            // Release batch request
            cli.ReleaseBatchInfoById(batchid);
        }
        public void CloseOpportunityTest()
        {
            Mock <IOrganizationService> orgSvc = null;
            Mock <MoqHttpMessagehander> fakHttpMethodHander = null;
            CdsServiceClient            cli = null;

            testSupport.SetupMockAndSupport(out orgSvc, out fakHttpMethodHander, out cli);


            orgSvc.Setup(f => f.Execute(It.Is <WinOpportunityRequest>(p => p.OpportunityClose is Entity && ((Entity)p.OpportunityClose).GetAttributeValue <string>("name").Equals("MyName", StringComparison.OrdinalIgnoreCase)))).Returns(new WinOpportunityResponse());
            orgSvc.Setup(f => f.Execute(It.Is <LoseOpportunityRequest>(p => p.OpportunityClose is Entity && ((Entity)p.OpportunityClose).GetAttributeValue <string>("name").Equals("MyName", StringComparison.OrdinalIgnoreCase)))).Returns(new LoseOpportunityResponse());

            Dictionary <string, CdsDataTypeWrapper> inboundData = new Dictionary <string, CdsDataTypeWrapper>();

            inboundData.Add("name", new CdsDataTypeWrapper("MyName", CdsFieldType.String));

            Guid rslt = cli.CloseOpportunity(testSupport._DefaultId, inboundData, opportunityStatusCode: 3);

            Assert.IsType <Guid>(rslt);
            Assert.NotEqual <Guid>(Guid.Empty, rslt);

            rslt = cli.CloseOpportunity(Guid.Empty, inboundData, opportunityStatusCode: 4);
            Assert.IsType <Guid>(rslt);
            Assert.Equal <Guid>(Guid.Empty, rslt);

            rslt = cli.CloseOpportunity(testSupport._DefaultId, inboundData, opportunityStatusCode: 2);
            Assert.IsType <Guid>(rslt);
            Assert.Equal <Guid>(Guid.Empty, rslt);

            rslt = cli.CloseOpportunity(testSupport._DefaultId, inboundData, opportunityStatusCode: 4);
            Assert.IsType <Guid>(rslt);
            Assert.NotEqual <Guid>(Guid.Empty, rslt);

            // Test with projected Activity ID
            inboundData.Add("activityid", new CdsDataTypeWrapper(testSupport._DefaultId, CdsFieldType.Key));
            rslt = cli.CloseOpportunity(testSupport._DefaultId, inboundData, opportunityStatusCode: 4);
            Assert.IsType <Guid>(rslt);
            Assert.NotEqual <Guid>(Guid.Empty, rslt);
            Assert.Equal <Guid>(testSupport._DefaultId, rslt);

            // try with batch
            // Setup a batch
            string BatchRequestName = "TestBatch";
            Guid   batchid          = cli.CreateBatchOperationRequest(BatchRequestName);

            rslt = cli.CloseQuote(testSupport._DefaultId, inboundData, quoteStatusCode: 4, batchId: batchid);
            Assert.IsType <Guid>(rslt);
            Assert.Equal <Guid>(Guid.Empty, rslt);

            // Release batch request
            cli.ReleaseBatchInfoById(batchid);
        }
        public void BatchTest()
        {
            Mock <IOrganizationService> orgSvc = null;
            Mock <MoqHttpMessagehander> fakHttpMethodHander = null;
            CdsServiceClient            cli = null;

            testSupport.SetupMockAndSupport(out orgSvc, out fakHttpMethodHander, out cli);


            CreateResponse createResponse = new CreateResponse();

            createResponse.Results = new ParameterCollection();
            createResponse.Results.Add("annotationid", testSupport._DefaultId);

            ExecuteMultipleResponseItem responseItem = new ExecuteMultipleResponseItem();

            responseItem.Response     = createResponse;
            responseItem.RequestIndex = 0;

            ExecuteMultipleResponseItemCollection responseItems = new ExecuteMultipleResponseItemCollection();

            responseItems.Add(responseItem);

            ExecuteMultipleResponse executeMultipleResponse = new ExecuteMultipleResponse();

            executeMultipleResponse.Results = new ParameterCollection();
            executeMultipleResponse.Results.Add("Responses", responseItems);

            orgSvc.Setup(req1 => req1.Execute(It.IsAny <ExecuteMultipleRequest>())).Returns(executeMultipleResponse);


            // Setup a batch
            string BatchRequestName = "TestBatch";
            Guid   batchid          = cli.CreateBatchOperationRequest(BatchRequestName);

            // use create operation to setup request
            Dictionary <string, CdsDataTypeWrapper> newFields = new Dictionary <string, CdsDataTypeWrapper>();

            newFields.Add("name", new CdsDataTypeWrapper("CrudTestAccount", CdsFieldType.String));
            newFields.Add("accountnumber", new CdsDataTypeWrapper("12345", CdsFieldType.String));
            newFields.Add("telephone1", new CdsDataTypeWrapper("555-555-5555", CdsFieldType.String));
            newFields.Add("donotpostalmail", new CdsDataTypeWrapper(true, CdsFieldType.Boolean));

            // issue request as a batch:
            Guid result = cli.CreateAnnotation("account", testSupport._DefaultId, newFields, batchid);

            Assert.Equal <Guid>(Guid.Empty, result);

            OrganizationRequest req = cli.GetBatchRequestAtPosition(batchid, 0);

            // Executes the batch request.
            cli.ExecuteBatch(batchid);

            // Request Batch by name
            Guid OperationId = cli.GetBatchOperationIdRequestByName(BatchRequestName);

            // Request batch back
            RequestBatch reqBatch = cli.GetBatchById(batchid);

            Assert.NotNull(reqBatch);
            Assert.Equal(BatchRequestName, reqBatch.BatchName);
            Assert.True(reqBatch.BatchItems.Count == 1);

            // Release batch request
            cli.ReleaseBatchInfoById(batchid);
        }