public void Can_copy_attribute_value() { var id = Guid.NewGuid(); var sourceEntity = new Entity("entity") { Id = id, FormattedValues = { ["attribute"] = "$100.00" } }; var source = new TransactionContextEntity <Entity>(sourceEntity); var currentEntity = new Entity("entity") { Id = id, FormattedValues = { ["optionsetvalue"] = "Release" } }; var current = new TransactionContextEntity <Entity>(currentEntity); var actionContext = new CurrentActionContext { TransactionContext = null, Target = source, Current = current }; var action = new CopyValueEventCurrentAction(); action.Execute(actionContext); source["attribute"] = new Money(100m); Assert.Equal(100m, current.Get <Money>("attribute").Value); Assert.Equal("$100.00", current.Entity.FormattedValues["attribute"]); Assert.Equal("Release", current.Entity.FormattedValues["optionsetvalue"]); source["optionsetvalue"] = new OptionSetValue(12); Assert.Equal(12, current.Get <OptionSetValue>("optionsetvalue").Value); Assert.Equal("$100.00", current.Entity.FormattedValues["attribute"]); Assert.Null(current.Entity.FormattedValues["optionsetvalue"]); source.SetFormattedValue("new_format", "Formatted-Value"); Assert.Equal("Formatted-Value", current.Entity.FormattedValues["new_format"]); }
public void Can_copy_attribute_value_from_ms_generated_entity() { var id = Guid.NewGuid(); var sourceEntity = new MsGenerated.Account { Id = id, FormattedValues = { ["creditlimit"] = "$100.00" } }; var source = new TransactionContextEntity <MsGenerated.Account>(sourceEntity); var currentEntity = new MsGenerated.Account { Id = id, FormattedValues = { ["accountratingcode"] = "Release" } }; var current = new TransactionContextEntity <MsGenerated.Account>(currentEntity); var actionContext = new CurrentActionContext { TransactionContext = null, Target = source, Current = current }; var action = new CopyValueEventCurrentAction(); action.Execute(actionContext); source.Set(e => e.CreditLimit, new Money(100m)); Assert.Equal(100m, current.Get <Money>("creditlimit").Value); Assert.Equal("$100.00", current.Entity.FormattedValues["creditlimit"]); Assert.Equal("Release", current.Entity.FormattedValues["accountratingcode"]); source.Entity.AccountRatingCode = new OptionSetValue(12); Assert.Equal(12, current.Get <OptionSetValue>("accountratingcode").Value); Assert.Equal("$100.00", current.Entity.FormattedValues["creditlimit"]); Assert.Null(current.Entity.FormattedValues["accountratingcode"]); }
private TransactionContextEntity <T> GetCurrentContextEntity() { var current = GetCurrentEntity(); var currentAccessor = new FormattedValueCurrentAccessor <T>(Target.Entity, current, this); var txCurrent = new TransactionContextEntity <T>(currentAccessor); var actionContext = new CurrentActionContext { TransactionContext = this, Target = Target, Current = txCurrent }; foreach (var action in Config.CurrentActions) { if (action.CanExecute(actionContext)) { action.Execute(actionContext); } } return(txCurrent); }