public void PostAccountwo_AnnualRevenue_Test_AnnualRevenue()
        {
            //setup
            var ACCOUNT_ID = Guid.Parse("{7424D001-11D4-4B35-8798-26A46ED733CC}");

            Context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(ProxyTypesAssembly));
            Context.Data.Clear();
            var accountSetup = new Shared.Entities.Account()
            {
                AccountId = ACCOUNT_ID,
                Revenue   = 112233m
            };

            Context.Data.Add(
                Shared.Entities.Account.EntityLogicalName,
                new Dictionary <Guid, Entity> {
                { ACCOUNT_ID, accountSetup.GetCreateEntity() }
            });
            PluginContext.InputParameters["Target"]         = new EntityReference(Shared.Entities.Account.EntityLogicalName, ACCOUNT_ID);
            PluginContext.InputParameters["AccountNumber"]  = "acc-123";
            PluginContext.OutputParameters["AnnualRevenue"] = 0m;
            //run
            var plugin = Context.ExecutePluginWith <PostAccountwo_AnnualRevenueSynchronous>(PluginContext);
            //result
            var resultTarget = (Decimal)PluginContext.OutputParameters["AnnualRevenue"];

            Assert.AreEqual(12345m, resultTarget);
        }
        public static void ClassInit(TestContext context)
        {
            Context                   = new XrmFakedContext();
            PluginContext             = Context.GetDefaultPluginContext();
            PluginContext.MessageName = "Create";
            PluginContext.Stage       = (int)StageEnum.PostOperation;
            PluginContext.Mode        = (int)ExecutionModeEnum.Synchronous;
            var target = new Shared.Entities.Account()
            {
            };

            PluginContext.InputParameters["Target"] = target.Entity;
        }
        public void PostAccountCreate_Test_Create_Contact()
        {
            //setup
            Context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(ProxyTypesAssembly));
            Context.Data.Clear();
            var ACCOUNT_ID = Guid.Parse("{A7EF9A9B-F878-4CD1-B7BB-30470D60FDB7}");
            var target     = new Shared.Entities.Account
            {
                AccountId  = ACCOUNT_ID,
                Name       = "Account Name",
                Telephone1 = "12345678"
            };

            PluginContext.InputParameters["Target"] = target.GetCreateEntity();

            //run
            var plugin = Context.ExecutePluginWith <PostAccountCreateSynchronous>(PluginContext);

            //result
            var fetchData = new
            {
                parentcustomerid = ACCOUNT_ID
            };
            var fetchXml = $@"
<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
  <entity name='contact'>
    <attribute name='contactid'/>
    <attribute name='parentcustomerid'/>
    <attribute name='address1_addresstypecode'/>
    <attribute name='telephone1'/>
    <attribute name='firstname'/>
    <order attribute='parentcustomerid' descending='false'/>
    <filter type='and'>
      <condition attribute='parentcustomerid' operator='eq' value='{fetchData.parentcustomerid}'/>
    </filter>
  </entity>
</fetch>
";
            var rows     = Context.GetFakedOrganizationService().RetrieveMultiple(new FetchExpression(fetchXml));

            if (rows.Entities.Count != 1)
            {
                Assert.Fail("Not found contact record");
            }
            var contact = new Shared.Entities.Contact(rows.Entities[0]);

            Assert.AreEqual("Account Name", contact.FirstName);
            Assert.AreEqual("12345678", contact.Telephone1);
            Assert.AreEqual(ACCOUNT_ID, contact.ParentCustomerId.Id);
            Assert.AreEqual(Address1_AddressTypeCode.Other, contact.Address1_AddressTypeCode);
        }
        public void PreAccountCreate_Test_AccountName_Is_Null()
        {
            //setup
            Context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(ProxyTypesAssembly));
            Context.Data.Clear();
            var target = new Shared.Entities.Account
            {
                AccountId = Guid.NewGuid()
            };

            PluginContext.InputParameters["Target"] = target.GetCreateEntity();

            //run
            var plugin = Context.ExecutePluginWith <PreAccountCreateSynchronous>(PluginContext);

            //result
            var resultTarget = (Entity)PluginContext.InputParameters["Target"];
            var account      = new Shared.Entities.Account(resultTarget);

            Assert.IsNull(account.Name);
        }