Example #1
0
        public static StubIServiceProvider StubIServiceProvider(StubIOrganizationService service,
                                                                StubIPluginExecutionContext pluginExecutionContext)
        {
            // ITracingService
            var tracingService = new StubITracingService
            {
                TraceStringObjectArray = (f, o) => { Debug.WriteLine(f, o); }
            };

            // IOrganizationServiceFactory
            var factory = new StubIOrganizationServiceFactory
            {
                CreateOrganizationServiceNullableOfGuid = id => service
            };

            // IServiceProvider
            var serviceProvider = new StubIServiceProvider
            {
                GetServiceType = t =>
                {
                    if (t == typeof(IPluginExecutionContext))
                    {
                        return(pluginExecutionContext);
                    }
                    if (t == typeof(ITracingService))
                    {
                        return(tracingService);
                    }
                    return(t == typeof(IOrganizationServiceFactory) ? factory : null);
                }
            };

            return(serviceProvider);
        }
        public void SetupServices()
        {
            ////Entity entity = new Entity();
            ////entity.Attributes["ava_name"] = "CMSHostURL";
            ////entity.Attributes["ava_value"] = "CMSHostURLValue";
            ////EntityCollection entityCol = new EntityCollection();
            ////entityCol.Entities.Add(entity);

            this.ServiceFake = new StubIOrganizationService();
            ////{
            ////    RetrieveMultipleQueryBase = (queryBase) => entityCol,
            ////    ExecuteOrganizationRequest = (request) => null
            ////};

            IOrganizationServiceFactory factoryFake = new StubIOrganizationServiceFactory()
            {
                CreateOrganizationServiceNullableOfGuid = (userId) => this.ServiceFake
            };

            ITracingService tracingServiceFake = new StubITracingService()
            {
                TraceStringObjectArray = (format, args) => { return; }
            };

            this.ServiceProviderFake = new StubIServiceProvider()
            {
                GetServiceType = (type) =>
                {
                    if (type == typeof(IOrganizationService))
                    {
                        return(ServiceFake);
                    }

                    if (type == typeof(IPluginExecutionContext))
                    {
                        return(PluginContextFake);
                    }

                    if (type == typeof(ITracingService))
                    {
                        return(tracingServiceFake);
                    }

                    if (type == typeof(IOrganizationServiceFactory))
                    {
                        return(factoryFake);
                    }

                    if (type == typeof(ISystemNetWebClient))
                    {
                        return(null);
                    }

                    return(null);
                }
            };
        }
Example #3
0
        public static void PluginVariables(StubIServiceProvider serviceProvider, StubIPluginExecutionContext pluginContext, StubIOrganizationService organizationService, int stageNumber, string messageName, EntityImageCollection postImage)
        {
            var serviceFactory = new StubIOrganizationServiceFactory();
            var tracingService = new StubITracingService();

            if (serviceProvider != null)
            {
                serviceProvider.GetServiceType = type =>
                {
                    if (type == typeof(IPluginExecutionContext))
                    {
                        return(pluginContext);
                    }
                    else if (type == typeof(ITracingService))
                    {
                        return(tracingService);
                    }
                    else if (type == typeof(IOrganizationServiceFactory))
                    {
                        return(serviceFactory);
                    }

                    return(null);
                };
            }

            pluginContext.DepthGet            = () => 1;
            pluginContext.UserIdGet           = () => new Guid();
            pluginContext.MessageNameGet      = () => messageName;
            pluginContext.StageGet            = () => stageNumber;
            pluginContext.InitiatingUserIdGet = () => Guid.Parse("F83DA6A6-748E-E412-9412-00155D614A70");
            pluginContext.CorrelationIdGet    = () => new Guid();
            pluginContext.PrimaryEntityIdGet  = () =>
            {
                return(Guid.NewGuid());
            };

            pluginContext.PostEntityImagesGet = () => { return(postImage); };
            pluginContext.PreEntityImagesGet  = () => { return(postImage); };
            serviceFactory.CreateOrganizationServiceNullableOfGuid = t1 => organizationService;

            tracingService.TraceStringObjectArray = Trace;
        }
Example #4
0
        /// <summary>
        /// Moles the plugin variables.
        /// </summary>
        /// <param name="serviceProvider">The service provider.</param>
        /// <param name="pluginContext">The plugin context.</param>
        /// <param name="organizationService">The organization service.</param>
        /// <param name="stageNumber">The stage number.</param>
        /// <param name="messageName">Name of the message.</param>
        public static void MolePluginVariables(
            StubIServiceProvider serviceProvider,
            StubIPluginExecutionContext pluginContext,
            StubIOrganizationService organizationService,
            int stageNumber,
            string messageName)
        {
            var serviceFactory = new StubIOrganizationServiceFactory();
            var tracingService = new StubITracingService();

            if (serviceProvider != null)
            {
                serviceProvider.GetServiceType = type =>
                {
                    if (type == typeof(IPluginExecutionContext))
                    {
                        return(pluginContext);
                    }
                    else if (type == typeof(ITracingService))
                    {
                        return(tracingService);
                    }
                    else if (type == typeof(IOrganizationServiceFactory))
                    {
                        return(serviceFactory);
                    }

                    return(null);
                };
            }

            pluginContext.DepthGet            = () => 1;
            pluginContext.UserIdGet           = () => new Guid();
            pluginContext.MessageNameGet      = () => messageName;
            pluginContext.StageGet            = () => stageNumber;
            pluginContext.InitiatingUserIdGet = () => new Guid();
            pluginContext.CorrelationIdGet    = () => new Guid();
            pluginContext.PrimaryEntityIdGet  = Guid.NewGuid;
            pluginContext.IsInTransactionGet  = () => true;
            serviceFactory.CreateOrganizationServiceNullableOfGuid = t1 => organizationService;
            tracingService.TraceStringObjectArray = Trace;
        }
        public void WhenChangeOrderIsCreatedFromInstalledBaseLineAndCustomerDetailsArePresentThenACommercialOrderIsCreated()
        {
            var postChangeOrderDetailsCreate = new PostChangeOrderDetailsCreate();
            var serviceProvider     = new StubIServiceProvider();
            var tracingService      = new StubITracingService();
            var pluginContext       = new StubIPluginExecutionContext();
            var organizationService = new StubIOrganizationService();

            PluginTestsHelper.MolePluginVariables(serviceProvider, pluginContext, organizationService, 40, "Create");

            var    entityAttributes         = new Dictionary <string, object>();
            Entity changeOrderDetailsEntity = new Entity();

            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.IsCreatedFromInstalledBaseLine, true);
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.SelectedInstalledBaseLineGuids, "\"B344FF0E - 2567 - E711 - 81A5 - 000D3A275BAD\",\"BB5F3570 - 1466 - E711 - 81A3 - 000D3A275BAD\"");

            pluginContext.InputParametersGet = delegate
            {
                ParameterCollection parameterCollection = new ParameterCollection();
                parameterCollection.Add("Target", changeOrderDetailsEntity);
                return(parameterCollection);
            };

            // Installed Base Line and Account
            organizationService.RetrieveStringGuidColumnSet = (entityName, recordId, columns) =>
            {
                if (string.Compare(entityName, InstalledBaseLineEntity.EntitySchemaName, StringComparison.CurrentCultureIgnoreCase) == 0)
                {
                    var installedBaseLineEntity = new Entity();
                    installedBaseLineEntity.Id = Guid.NewGuid();
                    installedBaseLineEntity.Attributes.Add(InstalledBaseLineEntity.BillingModel, new OptionSetValue(4256364));
                    installedBaseLineEntity.Attributes.Add(InstalledBaseLineEntity.PriceList, new EntityReference("pricelevel", Guid.NewGuid()));
                    return(installedBaseLineEntity);
                }
                else if (string.Compare(entityName, InstalledBaseEntity.EntitySchemaName, StringComparison.CurrentCultureIgnoreCase) == 0)
                {
                    var installedBaseEntity = new Entity();
                    installedBaseEntity.Id = Guid.NewGuid();
                    installedBaseEntity.Attributes.Add(InstalledBaseEntity.ContractId, "ContractABC");
                    installedBaseEntity.Attributes.Add(InstalledBaseEntity.Customer, new EntityReference(AccountEntity.EntitySchemaName, Guid.NewGuid()));
                    installedBaseEntity.Attributes.Add(InstalledBaseEntity.Currency, new EntityReference("transactioncurrencyid", Guid.NewGuid()));
                    return(installedBaseEntity);
                }
                else if (string.Compare(entityName, AccountEntity.EntitySchemaName, StringComparison.CurrentCultureIgnoreCase) == 0)
                {
                    var accountEntity = new Entity();
                    accountEntity.Id = Guid.NewGuid();
                    accountEntity.Attributes.Add(AccountEntity.AccountManager, new EntityReference("systemuser", Guid.NewGuid()));
                    accountEntity.Attributes.Add(AccountEntity.TechnicalContact, new EntityReference("contact", Guid.NewGuid()));
                    accountEntity.Attributes.Add(AccountEntity.BillingContact, new EntityReference("contact", Guid.NewGuid()));
                    return(accountEntity);
                }

                return(null);
            };

            organizationService.CreateEntity = (e) =>
            {
                return(Guid.NewGuid());
            };

            var selectedInstalledBaseLineEntities = TestDataCreator.GetSelectedInstalledBaseLineRecords(5);
            var commercialOrderRecord             = PostChangeOrderDetailsCreate.GetDetailsToCreateAndCreateCommercialOrderRecordFromDetailsInInstalledBaseAndCustomer(organizationService, tracingService, selectedInstalledBaseLineEntities, changeOrderDetailsEntity);

            Assert.IsNotNull(commercialOrderRecord);
            Assert.IsTrue(commercialOrderRecord.Id != Guid.Empty);
        }
        public void WhenAllChangeOrderDetailsCreationDetailsArePresentChangeOrderDetailsAreCreated()
        {
            var postChangeOrderDetailsCreate = new PostChangeOrderDetailsCreate();
            var serviceProvider     = new StubIServiceProvider();
            var tracingService      = new StubITracingService();
            var pluginContext       = new StubIPluginExecutionContext();
            var organizationService = new StubIOrganizationService();

            PluginTestsHelper.MolePluginVariables(serviceProvider, pluginContext, organizationService, 40, "Create");

            var    entityAttributes         = new Dictionary <string, object>();
            Entity changeOrderDetailsEntity = new Entity();

            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.IsCreatedFromInstalledBaseLine, true);
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.SelectedInstalledBaseLineGuids, "\"B344FF0E - 2567 - E711 - 81A5 - 000D3A275BAD\",\"BB5F3570 - 1466 - E711 - 81A3 - 000D3A275BAD\"");
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.Operation, new OptionSetValue(10000));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.OrderType, new OptionSetValue(10000));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.Product, new EntityReference("product", Guid.NewGuid()));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.OldCustomer, new EntityReference("contact", Guid.NewGuid()));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.OldBranch, new EntityReference("account", Guid.NewGuid()));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.NewBranch, new EntityReference("account", Guid.NewGuid()));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.ScheduleTerminationDuration, 6453);
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.ScheduleUnits, false);
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.SalesTerminationReason, new OptionSetValue(10000));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.BillingTerminationReason, new OptionSetValue(10001));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.HardwareTerminationReason, new OptionSetValue(10002));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.AddOnTerminationReason, new OptionSetValue(10003));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.SalesSuspensionReason, new OptionSetValue(10004));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.BillingSuspensionReason, new OptionSetValue(10005));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.SalesReactivationReason, new OptionSetValue(10004));
            changeOrderDetailsEntity.Attributes.Add(ChangeOrderDetailsEntity.BillingReactivationReason, new OptionSetValue(10002));

            pluginContext.InputParametersGet = delegate
            {
                ParameterCollection parameterCollection = new ParameterCollection();
                parameterCollection.Add("Target", changeOrderDetailsEntity);
                return(parameterCollection);
            };

            // Installed Base Line and Account
            organizationService.RetrieveStringGuidColumnSet = (entityName, recordId, columns) =>
            {
                if (string.Compare(entityName, InstalledBaseLineEntity.EntitySchemaName, StringComparison.CurrentCultureIgnoreCase) == 0)
                {
                    var installedBaseLineEntity = new Entity();
                    installedBaseLineEntity.Id = Guid.NewGuid();
                    installedBaseLineEntity.Attributes.Add(InstalledBaseLineEntity.BillingModel, new OptionSetValue(4256364));
                    installedBaseLineEntity.Attributes.Add(InstalledBaseLineEntity.PriceList, new EntityReference("pricelevel", Guid.NewGuid()));
                    return(installedBaseLineEntity);
                }
                else if (string.Compare(entityName, InstalledBaseEntity.EntitySchemaName, StringComparison.CurrentCultureIgnoreCase) == 0)
                {
                    var installedBaseEntity = new Entity();
                    installedBaseEntity.Id = Guid.NewGuid();
                    installedBaseEntity.Attributes.Add(InstalledBaseEntity.ContractId, "ContractABC");
                    installedBaseEntity.Attributes.Add(InstalledBaseEntity.Customer, new EntityReference(AccountEntity.EntitySchemaName, Guid.NewGuid()));
                    installedBaseEntity.Attributes.Add(InstalledBaseEntity.Currency, new EntityReference("transactioncurrencyid", Guid.NewGuid()));
                    return(installedBaseEntity);
                }
                else if (string.Compare(entityName, AccountEntity.EntitySchemaName, StringComparison.CurrentCultureIgnoreCase) == 0)
                {
                    var accountEntity = new Entity();
                    accountEntity.Id = Guid.NewGuid();
                    accountEntity.Attributes.Add(AccountEntity.AccountManager, new EntityReference("systemuser", Guid.NewGuid()));
                    accountEntity.Attributes.Add(AccountEntity.TechnicalContact, new EntityReference("contact", Guid.NewGuid()));
                    accountEntity.Attributes.Add(AccountEntity.BillingContact, new EntityReference("contact", Guid.NewGuid()));
                    return(accountEntity);
                }

                return(null);
            };

            organizationService.CreateEntity = (e) =>
            {
                return(Guid.NewGuid());
            };

            Entity commercialOrderEntity = new Entity();

            commercialOrderEntity.Id = Guid.NewGuid();
            commercialOrderEntity.Attributes.Add(CommercialOrderEntity.Customer, new EntityReference("account", Guid.NewGuid()));
            commercialOrderEntity.Attributes.Add(CommercialOrderEntity.PriceList, new EntityReference("pricelevel", Guid.NewGuid()));
            commercialOrderEntity.Attributes.Add(CommercialOrderEntity.Currency, new EntityReference("transactioncurrencyid", Guid.NewGuid()));
            commercialOrderEntity.Attributes.Add(CommercialOrderEntity.BillingModel, new OptionSetValue(7464));

            var selectedInstalledBaseLinesCount    = 5;
            var selectedInstalledBaseLineEntities  = TestDataCreator.GetSelectedInstalledBaseLineRecords(selectedInstalledBaseLinesCount);
            var newlyCreatedChangeOrderRecordGuids = PostChangeOrderDetailsCreate.CreateChangeOrderDetailsFromAvailableDetails(organizationService, tracingService, new Models.ChangeOrderDetailsCreationDetails()
            {
                NewlyCreatedChangeOrderDetailsRecord = changeOrderDetailsEntity,
                CommercialOrderRecord            = commercialOrderEntity,
                SelectedInstalledBaseLineRecords = selectedInstalledBaseLineEntities
            });

            Assert.AreEqual(selectedInstalledBaseLinesCount, newlyCreatedChangeOrderRecordGuids.Count);
        }
Example #7
0
        public PipelineBase(IOrganizationService service = null)
        {
            _shimContext = ShimsContext.Create();
            {
                if (service == null)
                {
                    FakeService = new FakeOrganzationService();
                    Service     = FakeService;
                }
                else
                {
                    Service = service;
                }

                PreImages              = new EntityImageCollection();
                PostImages             = new EntityImageCollection();
                InputParameters        = new ParameterCollection();
                OutputParameters       = new ParameterCollection();
                PluginExecutionContext = new StubIPluginExecutionContext();
                PluginExecutionContext.PreEntityImagesGet  = () => { return(PreImages); };
                PluginExecutionContext.PostEntityImagesGet = () => { return(PreImages); };
                PluginExecutionContext.InputParametersGet  = () => { return(InputParameters); };
                PluginExecutionContext.OutputParametersGet = () => { return(OutputParameters); };

                // ITracingService
                TracingService = new StubITracingService();
                TracingService.TraceStringObjectArray = (format, values) =>
                {
                    if (values != null && values.Length > 0)
                    {
                        Trace.WriteLine(string.Format(format, values));
                    }
                    else
                    {
                        Trace.WriteLine(format);
                    }
                };

                // IOrganizationServiceFactory
                Factory = new StubIOrganizationServiceFactory
                {
                    CreateOrganizationServiceNullableOfGuid = id =>
                    {
                        return(Service);
                    }
                };

                // IServiceProvider
                ServiceProvider = new System.Fakes.StubIServiceProvider
                {
                    GetServiceType = type =>
                    {
                        if (type == typeof(IPluginExecutionContext))
                        {
                            return(PluginExecutionContext);
                        }
                        else if (type == typeof(ITracingService))
                        {
                            return(TracingService);
                        }
                        else if (type == typeof(IOrganizationServiceFactory))
                        {
                            return(Factory);
                        }

                        return(null);
                    }
                };
            }
        }
Example #8
0
        public void ServiceRequestStatusChangedToCancelledTestMethod()
        {
            using (ShimsContext.Create())
            {
                ServiceRequestStatusChanged serviceRequestStatus = new StubServiceRequestStatusChanged();

                var serviceProvider     = new StubIServiceProvider();
                var pluginContext       = new StubIPluginExecutionContext();
                var organizationService = new StubIOrganizationService();
                var tracingService      = new StubITracingService();

                pluginContext.PrimaryEntityNameGet = () => "incident";
                pluginContext.PrimaryEntityIdGet   = () => new Guid("54D94FC2-52AD-E511-8158-1458D04DB4D1");
                ParameterCollection paramCollection = new ParameterCollection();
                Entity targetIncident = new Entity("incident");
                targetIncident.Id = new Guid("54D94FC2-52AD-E511-8158-1458D04DB4D1");
                targetIncident.Attributes["statuscode"]           = new OptionSetValue(6);
                targetIncident.Attributes["smp_cancellingfromwo"] = false;
                paramCollection.Add("Target", targetIncident);

                pluginContext.InputParametersGet = () => paramCollection;

                PluginVariables(serviceProvider, pluginContext, organizationService, 40, "Update");

                organizationService.RetrieveMultipleQueryBase = (query) =>
                {
                    EntityCollection collection = new EntityCollection();
                    string           entityName = string.Empty;
                    if (query.GetType().Name.Equals("FetchExpression"))
                    {
                        if (((FetchExpression)query).Query.Contains("<entity name='ava_keyvaluepair'>"))
                        {
                            entityName = "ava_keyvaluepair";
                        }
                    }
                    else if (query.GetType().Name.Equals("QueryExpression"))
                    {
                        entityName = ((QueryExpression)query).EntityName;
                    }
                    else
                    {
                        entityName = ((QueryByAttribute)query).EntityName;
                    }

                    if (entityName == "msdyn_workorder")
                    {
                        Entity workorder = new Entity("msdyn_workorder");
                        workorder.Id = new Guid("884A078B-0467-E711-80F5-3863BB3C0660");
                        workorder.Attributes["msdyn_servicerequest"] = new Guid("54D94FC2-52AD-E511-8158-1458D04DB4D1");
                        workorder.Attributes["msdyn_systemstatus"]   = new OptionSetValue(690970001);
                        collection.Entities.Add(workorder);
                    }

                    if (entityName == "bookableresourcebooking")
                    {
                        Entity bookings = new Entity("bookableresourcebooking");
                        bookings.Id = new Guid("884A078B-0467-E711-80F5-3863BB3C0660");
                        bookings.Attributes["msdyn_workorder"] = new Guid("54D94FC2-52AD-E511-8158-1458D04DB4D1");
                        bookings.Attributes["statecode"]       = new OptionSetValue(1);
                        collection.Entities.Add(bookings);
                    }

                    if (entityName == "bookingstatus")
                    {
                        Entity bookingStatus = new Entity("bookingstatus");
                        bookingStatus.Id = new Guid("884A078B-0467-E711-80F5-3863BB3C0660");
                        ////bookingStatus.Attributes["msdyn_workorder"] = new Guid("54D94FC2-52AD-E511-8158-1458D04DB4D1");
                        bookingStatus.Attributes["status"] = new OptionSetValue(3);
                        collection.Entities.Add(bookingStatus);
                    }

                    return(collection);
                };

                organizationService.RetrieveStringGuidColumnSet = delegate(string entity, Guid guid, ColumnSet secondaryUserColumnSet)
                {
                    if (entity == "incident")
                    {
                        Entity incident = new Entity("incident");
                        incident.Id = new Guid("54D94FC2-52AD-E511-8158-1458D04DB4D1");
                        incident.Attributes["smp_problembuilding"] = new EntityReference("smp_building", new Guid("884A078B-0467-E711-80F5-3863BB3C1560"))
                        {
                            Name = "building"
                        };
                        incident.Attributes["new_problemroomnumber"] = new EntityReference("smp_room", new Guid("884A078B-0467-E711-80F5-3863BB3C0560"))
                        {
                            Name = "room"
                        };
                        incident.Attributes["caseorigincode"] = new OptionSetValue(915240000);
                        incident.Attributes["smp_duedate"]    = new DateTime(2018, 1, 8);
                        incident.Attributes["smp_duedatebybuildingtimezone"]           = "2018-01-08";
                        incident.Attributes["smp_occureddatetimebybuildingtimezone"]   = "2018-01-08";
                        incident.Attributes["smp_submitteddatetimebybuildingtimezone"] = "2018-01-08";
                        incident.Attributes["smp_createddatetimebybuildingtimezone"]   = "2018-01-08";
                        incident.Attributes["smp_priorityid"] = new EntityReference("smp_priority", new Guid("884A078B-0466-E711-80F5-3863BB3C0560"))
                        {
                            Name = "priority"
                        };
                        incident.Attributes["smp_problemclassid"] = new EntityReference("smp_problemclass", new Guid("884A078B-0468-E711-80F5-3863BB3C0560"))
                        {
                            Name = "problemClass"
                        };
                        incident.Attributes["smp_problemtypeid"] = new EntityReference("smp_problemtype", new Guid("884A078B-0469-E711-80F5-3863BB3C0560"))
                        {
                            Name = "problemType"
                        };

                        incident.Attributes["smp_problemroomtype"] = new EntityReference("smp_roomtype", new Guid("884A078B-0469-E111-80F5-3863BB3C0560"))
                        {
                            Name = "problemType"
                        };
                        incident.Attributes["smp_cc"] = new EntityReference("contact", new Guid("884A078B-0469-E211-80F5-3863BB3C0560"))
                        {
                            Name = "problemType"
                        };
                        incident.Attributes["smp_contact"] = new EntityReference("contact", new Guid("884A078B-0469-E311-80F5-3863BB3C0560"))
                        {
                            Name = "problemType"
                        };
                        incident.Attributes["smp_requestorid"] = new EntityReference("contact", new Guid("884A078B-0469-E411-80F5-3863BB3C0560"))
                        {
                            Name = "Contact"
                        };
                        incident.Attributes["smp_cancellingfromwo"] = false;

                        return(incident);
                    }

                    return(null);
                };

                serviceRequestStatus.Execute(serviceProvider);
            }
        }
        public void CreateInspectionsTestMethod()
        {
            string resultEntityName = string.Empty;

            using (ShimsContext.Create())
            {
                CreateInspections createInspections = new StubCreateInspections();
                var serviceProvider     = new StubIServiceProvider();
                var pluginContext       = new StubIPluginExecutionContext();
                var organizationService = new StubIOrganizationService();

                pluginContext.PrimaryEntityNameGet = () => "msdyn_workorder";
                pluginContext.PrimaryEntityIdGet   = () => new Guid("54D94FC2-52AD-E511-8158-1458D04DB4D1");
                ParameterCollection paramCollection = new ParameterCollection();
                Entity workOrder = new Entity("msdyn_workorder");
                workOrder.Attributes["msdyn_primaryincidenttype"] = new EntityReference("msdyn_primaryincidenttype", new Guid("884A078B-0467-E711-80F5-3863BB3C0660"));
                paramCollection.Add("Target", workOrder);

                pluginContext.InputParametersGet = () => paramCollection;

                PluginVariables(serviceProvider, pluginContext, organizationService, 40, "Create");

                organizationService.RetrieveMultipleQueryBase = (query) =>
                {
                    EntityCollection collection = new EntityCollection();
                    string           entityName = string.Empty;
                    if (query.GetType().Name.Equals("FetchExpression"))
                    {
                        if (((Microsoft.Xrm.Sdk.Query.FetchExpression)query).Query.Contains("<entity name='ava_keyvaluepair'>"))
                        {
                            entityName = "ava_keyvaluepair";
                        }
                    }
                    else if (query.GetType().Name.Equals("QueryExpression"))
                    {
                        entityName = ((QueryExpression)query).EntityName;
                    }
                    else
                    {
                        entityName = ((QueryByAttribute)query).EntityName;
                    }

                    if (entityName == "msdyn_customerasset")
                    {
                        Entity question = new Entity
                        {
                            LogicalName = "msdyn_customerasset",
                            Id          = new Guid("884A078c-0467-E711-80E5-3863BB3C0660")
                        };
                        //// question.Attributes["smp_questiontext"] = "unittest1";
                        collection.Entities.Add(question);
                    }

                    return(collection);
                };

                organizationService.RetrieveStringGuidColumnSet = delegate(string entity, Guid guid, ColumnSet secondaryUserColumnSet)
                {
                    if (entity == "msdyn_workorder")
                    {
                        Entity workorder = new Entity
                        {
                            LogicalName = "msdyn_workorder",
                            Id          = new Guid("884A078B-0467-E711-80F5-3863BB3C0660")
                        };
                        workorder.Attributes["msdyn_agreement"]           = new EntityReference("msdyn_agreement", new Guid("884A078B-0467-E711-80F5-3863BB3C0660"));
                        workorder.Attributes["msdyn_primaryincidenttype"] = new EntityReference("msdyn_primaryincidenttype", new Guid("884A078B-0467-E711-80F5-3863BB3C0660"));
                        workorder.Attributes["msdyn_customerasset"]       = new EntityReference("msdyn_customerasset", new Guid("884A078c-0467-E711-80E5-3863BB3C0660"));
                        workorder.Attributes["ownerid"]     = new EntityReference("team", new Guid("884A078c-0467-E711-80E5-3863BB3C0661"));
                        workorder.Attributes["smp_comment"] = "2018-01-08";
                        return(workorder);
                    }

                    if (entity == "msdyn_incidenttype")
                    {
                        Entity workorder = new Entity
                        {
                            LogicalName = "msdyn_incidenttype",
                            Id          = new Guid("884A078B-0467-E711-80F5-3863BB3C0660")
                        };
                        workorder.Attributes["smp_inspectiontypeid"] = new EntityReference("smp_inspectiontypeid", new Guid("884A078B-0467-E711-80F5-3863BB3C0660"));
                        workorder.Attributes["smp_building"]         = new EntityReference(" smp_building", new Guid("884A078B-0467-E711-80E5-3863BB3C0660"));
                        workorder.Attributes["smp_comment"]          = "2018-01-08";
                        return(workorder);
                    }

                    if (entity == "smp_inspectionn")
                    {
                        Entity inspection = new Entity
                        {
                            LogicalName = "smp_inspection",
                            Id          = new Guid("884A078B-0466-E711-80F5-3863BB3C0560")
                        };
                        inspection.Attributes["smp_questiontext"] = "unittest1";
                        return(inspection);
                    }

                    return(null);
                };

                var    tracingService = new StubITracingService();
                Entity workorder1     = new Entity
                {
                    LogicalName = "msdyn_workorder",
                    Id          = new Guid("884A078B-0467-E711-80F5-3863BB3C0660")
                };

                workorder1.Attributes["msdyn_agreement"]           = new EntityReference("msdyn_agreement", new Guid("884A078B-0467-E711-80F5-3863BB3C0660"));
                workorder1.Attributes["msdyn_primaryincidenttype"] = new EntityReference("msdyn_primaryincidenttype", new Guid("884A078B-0467-E711-80F5-3863BB3C0660"));
                workorder1.Attributes["msdyn_customerasset"]       = new EntityReference("msdyn_customerasset", new Guid("884A078c-0467-E711-80E5-3863BB3C0660"));
                workorder1.Attributes["ownerid"]     = new EntityReference("team", new Guid("884A078c-0467-E711-80E5-3863BB3C0661"));
                workorder1.Attributes["smp_comment"] = "2018-01-08";

                createInspections.CreateInspectionsforWorkOrders(organizationService, workorder1, tracingService);
            }
        }
        public void CreateDynNotes()
        {
            var workflowUserId           = Guid.NewGuid();
            var workflowCorrelationId    = Guid.NewGuid();
            var workflowInitiatingUserId = Guid.NewGuid();

            var serviceProvider = new StubIServiceProvider();
            var pluginContext   = new StubIPluginExecutionContext();

            this.Service          = new StubIOrganizationService();
            this.IWorKFlowContext = new StubIWorkflowContext();
            this.Factory          = new StubIOrganizationServiceFactory();
            this.TracingService   = new StubITracingService();

            this.IWorKFlowContext.UserIdGet = () =>
            {
                return(workflowUserId);
            };

            this.Factory.CreateOrganizationServiceNullableOfGuid = id =>
            {
                return(Service);
            };

            PostCreateSRCreateDynNotes updateDeviceRequestEmployeeDetails = new PostCreateSRCreateDynNotes();
            var invoker = new WorkflowInvoker(updateDeviceRequestEmployeeDetails);

            invoker.Extensions.Add <ITracingService>(() => this.TracingService);
            invoker.Extensions.Add <IWorkflowContext>(() => this.IWorKFlowContext);
            invoker.Extensions.Add <IOrganizationServiceFactory>(() => this.Factory);
            pluginContext.PrimaryEntityNameGet = () => "incident";
            pluginContext.PrimaryEntityIdGet   = () => new Guid("884A078B-0467-E711-80F5-3863BB3C0660");
            ParameterCollection paramCollection          = new ParameterCollection();
            ParameterCollection paramCollectionPostImage = new ParameterCollection();
            Entity incident = new Entity("incident");

            incident.Id = new Guid("884A078B-0467-E711-80F5-3863BB3C0660");
            paramCollection.Add("Target", incident);
            pluginContext.InputParametersGet = () => paramCollection;
            EntityImageCollection postImage = new EntityImageCollection {
                (new KeyValuePair <string, Entity>("PostImage", incident))
            };

            Helper.Helper.PluginVariables(serviceProvider, pluginContext, this.Service, 40, "Create", postImage);

            this.Service.RetrieveMultipleQueryBase = (query) =>
            {
                EntityCollection collection = new EntityCollection();
                string           entityName = string.Empty;

                if (query.GetType().Name.Equals("QueryExpression"))
                {
                    entityName = ((QueryExpression)query).EntityName;
                }
                else
                {
                    entityName = ((QueryByAttribute)query).EntityName;
                }

                if (entityName == "smp_problemtypedescription")
                {
                    Entity configuration = new Entity("smp_configuration");
                    configuration.Id = new Guid("884A078B-0466-E712-80F5-3863BB3C0560");
                    configuration["smp_problemtypedescriptionid"]   = new Guid("884A078B-0466-E712-80F5-3863BB3C0560");
                    configuration["smp_problemtypedescriptionname"] = "Sample Name";

                    collection.Entities.Add(configuration);
                }

                return(collection);
            };

            this.Service.RetrieveStringGuidColumnSet = delegate(string entity, Guid guid, ColumnSet secondaryUserColumnSet)
            {
                if (entity == "incident")
                {
                    Entity incidents = new Entity(entity);
                    incidents["caseorigincode"]       = new OptionSetValue(1);
                    incidents["smp_createdfrom"]      = new OptionSetValue(1);
                    incidents["smp_problembuilding"]  = new EntityReference(string.Empty, Guid.NewGuid());
                    incidents["smp_problemclassid"]   = new EntityReference(string.Empty, Guid.NewGuid());
                    incidents["smp_problemtypeid"]    = new EntityReference(string.Empty, Guid.NewGuid());
                    incidents.Attributes["statecode"] = new OptionSetValue(1);
                    incidents.Id = new Guid("884A078B-0467-E711-80F5-3863BB3C0660");
                    return(incidents);
                }

                return(null);
            };

            IDictionary <string, object> inputs = new Dictionary <string, object>();
            EntityReference newIncident         = new EntityReference(incident.LogicalName, incident.Id);

            inputs["ServiceRequest"] = newIncident;
            var output = invoker.Invoke(inputs);
        }