public void SearchSubstitutedRoles() { var searchServiceStub = MockRepository.GenerateStub <ISearchAvailableObjectsService> (); var args = MockRepository.GenerateStub <ISearchAvailableObjectsArguments> (); BusinessObjectProvider.SetProvider(typeof(BindableDomainObjectProviderAttribute), null); BusinessObjectProvider.GetProvider <BindableDomainObjectProviderAttribute> ().AddService( typeof(SubstitutionPropertiesSearchService), searchServiceStub); var substitutionClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Substitution)); var substitutedRoleProperty = (IBusinessObjectReferenceProperty)substitutionClass.GetPropertyDefinition("SubstitutedRole"); Assert.That(substitutedRoleProperty, Is.Not.Null); Substitution substitution = Substitution.NewObject(); var expected = new[] { MockRepository.GenerateStub <IBusinessObject> () }; searchServiceStub.Stub(stub => stub.SupportsProperty(substitutedRoleProperty)).Return(true); searchServiceStub.Stub(stub => stub.Search(substitution, substitutedRoleProperty, args)).Return(expected); Assert.That(substitutedRoleProperty.SupportsSearchAvailableObjects, Is.True); var actual = substitutedRoleProperty.SearchAvailableObjects(substitution, args); Assert.That(actual, Is.SameAs(expected)); }
public void UseBindableObjectProvider_WithBaseClass() { IBusinessObjectReferenceProperty property = new ReferenceProperty( new PropertyBase.Parameters( _bindableObjectProvider, GetPropertyInfo(typeof(ClassWithReferenceToClassDerivedFromBindableObjectBase), "ScalarReference"), typeof(ClassDerivedFromBindableObjectBase), new Lazy <Type> (() => typeof(ClassDerivedFromBindableObjectBase)), null, false, false, new BindableObjectDefaultValueStrategy(), MockRepository.GenerateStub <IBindablePropertyReadAccessStrategy>(), MockRepository.GenerateStub <IBindablePropertyWriteAccessStrategy>(), SafeServiceLocator.Current.GetInstance <BindableObjectGlobalizationService>())); Assert.That(property.ReferenceClass, Is.SameAs(BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(ClassDerivedFromBindableObjectBase)))); Assert.That( property.BusinessObjectProvider, Is.SameAs(BindableObjectProvider.GetProviderForBindableObjectType(typeof(ClassWithReferenceToClassDerivedFromBindableObjectBase)))); Assert.That( property.ReferenceClass.BusinessObjectProvider, Is.SameAs(BindableObjectProvider.GetProviderForBindableObjectType(typeof(ClassDerivedFromBindableObjectBase)))); Assert.That(property.ReferenceClass.BusinessObjectProvider, Is.SameAs(property.BusinessObjectProvider)); }
public override void SetUp() { base.SetUp(); _values = new IBusinessObject[5]; _values[0] = (IBusinessObject)TypeWithString.Create("0", "A"); _values[1] = (IBusinessObject)TypeWithString.Create("1", "A"); _values[2] = (IBusinessObject)TypeWithString.Create("2", "B"); _values[3] = (IBusinessObject)TypeWithString.Create("3", "B"); _values[4] = (IBusinessObject)TypeWithString.Create("4", "C"); _newValues = new IBusinessObject[2]; _newValues[0] = (IBusinessObject)TypeWithString.Create("5", "C"); _newValues[1] = (IBusinessObject)TypeWithString.Create("6", "D"); _typeWithStringClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithString)); _typeWithStringFirstValuePath = BusinessObjectPropertyPath.CreateStatic(_typeWithStringClass, "FirstValue"); _typeWithStringSecondValuePath = BusinessObjectPropertyPath.CreateStatic(_typeWithStringClass, "SecondValue"); _typeWithStringFirstValueSimpleColumn = new BocSimpleColumnDefinition(); _typeWithStringFirstValueSimpleColumn.SetPropertyPath(_typeWithStringFirstValuePath); _typeWithStringSecondValueSimpleColumn = new BocSimpleColumnDefinition(); _typeWithStringSecondValueSimpleColumn.SetPropertyPath(_typeWithStringSecondValuePath); _bocList = new BocListMock(); _bocList.ID = "BocList"; NamingContainer.Controls.Add(_bocList); _bocList.LoadUnboundValue(_values, false); _bocList.SwitchListIntoEditMode(); Assert.That(_bocList.IsListEditModeActive, Is.True); }
public void GetBusinessObjectClass_WithValidType() { _dataSource.Type = typeof(SimpleBusinessObjectClass); Type type = typeof(SimpleBusinessObjectClass); ArgumentUtility.CheckNotNull("type", type); Assert.That(_dataSource.BusinessObjectClass, Is.SameAs(BindableObjectProviderTestHelper.GetBindableObjectClass(type))); }
public override void SetUp() { base.SetUp(); _searchService = new GroupTypePropertyTypeSearchService(); IBusinessObjectClass groupClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Group)); _property = (IBusinessObjectReferenceProperty)groupClass.GetPropertyDefinition("GroupType"); Assert.That(_property, Is.Not.Null); }
public override void SetUp() { base.SetUp(); _searchService = new GroupPropertyTypeSearchService(); IBusinessObjectClass userClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(User)); _tenantProperty = (IBusinessObjectReferenceProperty)userClass.GetPropertyDefinition("Tenant"); Assert.That(_tenantProperty, Is.Not.Null); }
public override void SetUp() { base.SetUp(); _searchService = new SubstitutionPropertiesSearchService(); IBusinessObjectClass substitutionClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Substitution)); _otherProperty = (IBusinessObjectReferenceProperty)substitutionClass.GetPropertyDefinition("SubstitutedUser"); Assert.That(_otherProperty, Is.Not.Null); }
private ReferenceProperty CreateProperty(string propertyName) { PropertyBase.Parameters propertyParameters = GetPropertyParameters(GetPropertyInfo(typeof(ClassWithBusinessObjectProperties), propertyName), _bindableObjectProviderForDeclaringType); ReferenceProperty property = new ReferenceProperty(propertyParameters); property.SetReflectedClass(BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(ClassWithBusinessObjectProperties))); return(property); }
public virtual void SetUp() { _stringValueClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithString)); _stringValuePropertyPath = BusinessObjectPropertyPath.CreateStatic(_stringValueClass, "FirstValue"); _stringValueColumn = new BocSimpleColumnDefinition(); _stringValueColumn.SetPropertyPath(_stringValuePropertyPath); _factory = EditableRowControlFactory.CreateEditableRowControlFactory(); }
public override void SetUp() { base.SetUp(); _searchService = new RolePropertiesSearchService(); IBusinessObjectClass roleClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Role)); _positionProperty = (IBusinessObjectReferenceProperty)roleClass.GetPropertyDefinition("Position"); Assert.That(_positionProperty, Is.Not.Null); }
public override void SetUp() { base.SetUp(); _aceClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(AccessControlEntry)); _testHelper = new AccessControlTestHelper(); _testHelper.Transaction.EnterNonDiscardingScope(); _ace = AccessControlEntry.NewObject(); }
public override void SetUp() { base.SetUp(); _searchService = new SubstitutionPropertiesSearchService(); IBusinessObjectClass substitutionClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Substitution)); _substitutedRoleProperty = (IBusinessObjectReferenceProperty)substitutionClass.GetPropertyDefinition("SubstitutedRole"); Assert.That(_substitutedRoleProperty, Is.Not.Null); _user = User.FindByUserName("group0/user1"); Assert.That(_user, Is.Not.Null); }
public override void SetUp() { base.SetUp(); _testHelper = new OrganizationalStructureTestHelper(); _testHelper.Transaction.EnterNonDiscardingScope(); _searchService = new AbstractRoleDefinitionPropertyTypeSearchService(); IBusinessObjectClass aceClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(AccessControlEntry)); _property = (IBusinessObjectReferenceProperty)aceClass.GetPropertyDefinition("AccessControlList"); Assert.That(_property, Is.Not.Null); }
public override void SetUp() { base.SetUp(); _searchService = new UserPropertyTypeSearchService(); IBusinessObjectClass roleClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Role)); _property = (IBusinessObjectReferenceProperty)roleClass.GetPropertyDefinition("User"); Assert.That(_property, Is.Not.Null); var user = User.FindByUserName("group0/user1"); Assert.That(user, Is.Not.Null); _tenantConstraint = new TenantConstraint(user.Tenant.GetHandle()); }
public override void SetUp() { base.SetUp(); _searchService = new GroupPropertyTypeSearchService(); IBusinessObjectClass roleClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Role)); _property = (IBusinessObjectReferenceProperty)roleClass.GetPropertyDefinition("Group"); Assert.That(_property, Is.Not.Null); var group = Group.FindByUnqiueIdentifier("UID: group0"); Assert.That(group, Is.Not.Null); _tenantConstraint = new TenantConstraint(group.Tenant.GetHandle()); }
public override void SetUp() { base.SetUp(); _editModeHost = new FakeEditModeHost(); _editModeHost.ID = "BocList"; _editModeHost.RowIDProvider = new FakeRowIDProvider(); _editModeHost.EditModeControlFactory = EditableRowControlFactory.CreateEditableRowControlFactory(); _editModeHost.EditModeDataSourceFactory = new EditableRowDataSourceFactory(); _editableRow = new EditableRow(_editModeHost); _editableRow.ID = "Row"; NamingContainer.Controls.Add(_editableRow); _value01 = (IBusinessObject)TypeWithAllDataTypes.Create("A", 1); _typeWithAllDataTypesClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithAllDataTypes)); _typeWithAllDataTypesStringValuePath = BusinessObjectPropertyPath.CreateStatic(_typeWithAllDataTypesClass, "String"); _typeWithAllDataTypesInt32ValuePath = BusinessObjectPropertyPath.CreateStatic(_typeWithAllDataTypesClass, "Int32"); _typeWithAllDataTypesStringValueSimpleColumn = new BocSimpleColumnDefinition(); _typeWithAllDataTypesStringValueSimpleColumn.SetPropertyPath(_typeWithAllDataTypesStringValuePath); _typeWithAllDataTypesStringValueSimpleColumnAsDynamic = new BocSimpleColumnDefinition(); _typeWithAllDataTypesStringValueSimpleColumnAsDynamic.SetPropertyPath(BusinessObjectPropertyPath.CreateDynamic("StringValue")); _typeWithAllDataTypesStringValueSimpleColumnAsDynamic.IsDynamic = true; _typeWithAllDataTypesInt32ValueSimpleColumn = new BocSimpleColumnDefinition(); _typeWithAllDataTypesInt32ValueSimpleColumn.SetPropertyPath(_typeWithAllDataTypesInt32ValuePath); _typeWithAllDataTypesStringValueFirstValueCompoundColumn = new BocCompoundColumnDefinition(); _typeWithAllDataTypesStringValueFirstValueCompoundColumn.PropertyPathBindings.Add( new PropertyPathBinding(_typeWithAllDataTypesStringValuePath)); _typeWithAllDataTypesStringValueFirstValueCompoundColumn.PropertyPathBindings.Add( new PropertyPathBinding(_typeWithAllDataTypesStringValuePath)); _typeWithAllDataTypesStringValueFirstValueCompoundColumn.FormatString = "{0}, {1}"; _typeWithAllDataTypesStringValueCustomColumn = new BocCustomColumnDefinition(); _typeWithAllDataTypesStringValueCustomColumn.SetPropertyPath(_typeWithAllDataTypesStringValuePath); _typeWithAllDataTypesStringValueCustomColumn.IsSortable = true; _commandColumn = new BocCommandColumnDefinition(); _rowEditModeColumn = new BocRowEditModeColumnDefinition(); _dropDownMenuColumn = new BocDropDownMenuColumnDefinition(); }
public void Compare_List() { var valueAA = TypeWithString.Create(); valueAA.StringArray = new[] { "A", "A" }; var valueBA = TypeWithString.Create(); valueBA.StringArray = new[] { "B", "A" }; var valueAB = TypeWithString.Create(); valueAB.StringArray = new[] { "A", "B" }; var valueNull = TypeWithString.Create(); valueNull.StringArray = null; var valueEmpty = TypeWithString.Create(); valueEmpty.StringArray = new string[0]; var bindableObjectClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithString)); var propertyPath = BusinessObjectPropertyPath.CreateStatic(bindableObjectClass, "StringArray"); var comparer = new BusinessObjectPropertyPathBasedComparer(propertyPath); CompareEqualValues(comparer, (IBusinessObject)valueAA, (IBusinessObject)valueAA); CompareEqualValues(comparer, (IBusinessObject)valueAA, (IBusinessObject)valueAB); CompareEqualValues(comparer, (IBusinessObject)valueNull, (IBusinessObject)valueNull); CompareEqualValues(comparer, (IBusinessObject)valueEmpty, (IBusinessObject)valueEmpty); CompareAscendingValues(comparer, (IBusinessObject)valueAA, (IBusinessObject)valueBA); CompareAscendingValues(comparer, (IBusinessObject)valueNull, (IBusinessObject)valueAA); CompareAscendingValues(comparer, (IBusinessObject)valueEmpty, (IBusinessObject)valueAA); CompareAscendingValues(comparer, (IBusinessObject)valueNull, (IBusinessObject)valueEmpty); CompareDescendingValues(comparer, (IBusinessObject)valueBA, (IBusinessObject)valueAA); CompareDescendingValues(comparer, (IBusinessObject)valueAA, (IBusinessObject)valueNull); CompareDescendingValues(comparer, (IBusinessObject)valueAA, (IBusinessObject)valueEmpty); CompareDescendingValues(comparer, (IBusinessObject)valueEmpty, (IBusinessObject)valueNull); }
public void Compare_ReferenceValues() { var valueA = TypeWithReference.Create(); valueA.ReferenceValue = TypeWithReference.Create("A"); var valueB = TypeWithReference.Create(); valueB.ReferenceValue = TypeWithReference.Create("B"); var valueNull = TypeWithReference.Create(); valueNull.ReferenceValue = null; var bindableObjectClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithReference)); var propertyPath = BusinessObjectPropertyPath.CreateStatic(bindableObjectClass, "ReferenceValue"); var comparer = new BusinessObjectPropertyPathBasedComparer(propertyPath); AssertCompare(comparer, valueA, valueB, valueNull); }
public void Compare_StringValues() { var valueA = TypeWithAllDataTypes.Create(); valueA.String = "A"; var valueB = TypeWithAllDataTypes.Create(); valueB.String = "B"; var valueNull = TypeWithAllDataTypes.Create(); valueNull.String = null; var bindableObjectClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithAllDataTypes)); var propertyPath = BusinessObjectPropertyPath.CreateStatic(bindableObjectClass, "String"); var comparer = new BusinessObjectPropertyPathBasedComparer(propertyPath); AssertCompare(comparer, valueA, valueB, valueNull); }
public override void SetUp() { base.SetUp(); _mocks = new MockRepository(); _mockSecurityProvider = (ISecurityProvider)_mocks.StrictMock(typeof(ISecurityProvider)); SetupResult.For(_mockSecurityProvider.IsNull).Return(false); _mockPrincipalProvider = (IPrincipalProvider)_mocks.StrictMock(typeof(IPrincipalProvider)); _stubFunctionalSecurityStrategy = _mocks.StrictMock <IFunctionalSecurityStrategy>(); var serviceLocator = DefaultServiceLocator.Create(); serviceLocator.RegisterSingle(() => _stubFunctionalSecurityStrategy); serviceLocator.RegisterSingle(() => _mockSecurityProvider); serviceLocator.RegisterSingle(() => _mockPrincipalProvider); _serviceLocatorScope = new ServiceLocatorScope(serviceLocator); _searchService = new RolePropertiesSearchService(); IBusinessObjectClass roleClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Role)); _positionProperty = (IBusinessObjectReferenceProperty)roleClass.GetPropertyDefinition("Position"); Assert.That(_positionProperty, Is.Not.Null); }
public void SearchPositions() { ISearchAvailableObjectsService searchServiceStub = MockRepository.GenerateStub <ISearchAvailableObjectsService> (); ISearchAvailableObjectsArguments args = MockRepository.GenerateStub <ISearchAvailableObjectsArguments> (); BusinessObjectProvider.SetProvider(typeof(BindableDomainObjectProviderAttribute), null); BusinessObjectProvider.GetProvider <BindableDomainObjectProviderAttribute>() .AddService(typeof(RolePropertiesSearchService), searchServiceStub); IBusinessObjectClass roleClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Role)); IBusinessObjectReferenceProperty positionProperty = (IBusinessObjectReferenceProperty)roleClass.GetPropertyDefinition("Position"); Assert.That(positionProperty, Is.Not.Null); Role role = Role.NewObject(); var expected = new[] { MockRepository.GenerateStub <IBusinessObject> () }; searchServiceStub.Stub(stub => stub.SupportsProperty(positionProperty)).Return(true); searchServiceStub.Stub(stub => stub.Search(role, positionProperty, args)).Return(expected); Assert.That(positionProperty.SupportsSearchAvailableObjects, Is.True); IBusinessObject[] actual = positionProperty.SearchAvailableObjects(role, args); Assert.That(actual, Is.SameAs(expected)); }
public void SearchOwningGroups() { ISearchAvailableObjectsService searchServiceStub = MockRepository.GenerateStub <ISearchAvailableObjectsService>(); ISearchAvailableObjectsArguments args = MockRepository.GenerateStub <ISearchAvailableObjectsArguments>(); BusinessObjectProvider.SetProvider(typeof(BindableDomainObjectProviderAttribute), null); BusinessObjectProvider.GetProvider <BindableDomainObjectProviderAttribute>() .AddService(typeof(GroupPropertyTypeSearchService), searchServiceStub); IBusinessObjectClass userClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(User)); IBusinessObjectReferenceProperty owningGroupProperty = (IBusinessObjectReferenceProperty)userClass.GetPropertyDefinition("OwningGroup"); Assert.That(owningGroupProperty, Is.Not.Null); User user = CreateUser(); var expected = new[] { MockRepository.GenerateStub <IBusinessObject> () }; searchServiceStub.Stub(stub => stub.SupportsProperty(owningGroupProperty)).Return(true); searchServiceStub.Stub(stub => stub.Search(user, owningGroupProperty, args)).Return(expected); Assert.That(owningGroupProperty.SupportsSearchAvailableObjects, Is.True); IBusinessObject[] actual = owningGroupProperty.SearchAvailableObjects(user, args); Assert.That(actual, Is.SameAs(expected)); }
public void SearchGroupTypes() { var searchServiceStub = MockRepository.GenerateStub <ISearchAvailableObjectsService>(); var args = MockRepository.GenerateStub <ISearchAvailableObjectsArguments>(); BusinessObjectProvider.SetProvider(typeof(BindableDomainObjectProviderAttribute), null); BusinessObjectProvider.GetProvider <BindableDomainObjectProviderAttribute>() .AddService(typeof(GroupTypePropertyTypeSearchService), searchServiceStub); var groupTypePositionClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(GroupTypePosition)); var groupTypeProperty = (IBusinessObjectReferenceProperty)groupTypePositionClass.GetPropertyDefinition("GroupType"); Assert.That(groupTypeProperty, Is.Not.Null); var groupTypePosition = CreateGroupTypePosition(); var expected = new[] { MockRepository.GenerateStub <IBusinessObject> () }; searchServiceStub.Stub(stub => stub.SupportsProperty(groupTypeProperty)).Return(true); searchServiceStub.Stub(stub => stub.Search(groupTypePosition, groupTypeProperty, args)).Return(expected); Assert.That(groupTypeProperty.SupportsSearchAvailableObjects, Is.True); IBusinessObject[] actual = groupTypeProperty.SearchAvailableObjects(groupTypePosition, args); Assert.That(actual, Is.SameAs(expected)); }
public void SearchParents() { ISearchAvailableObjectsService searchServiceStub = MockRepository.GenerateStub <ISearchAvailableObjectsService>(); ISearchAvailableObjectsArguments args = MockRepository.GenerateStub <ISearchAvailableObjectsArguments>(); BusinessObjectProvider.SetProvider(typeof(BindableDomainObjectProviderAttribute), null); BusinessObjectProvider.GetProvider <BindableDomainObjectProviderAttribute>() .AddService(typeof(TenantPropertyTypeSearchService), searchServiceStub); IBusinessObjectClass tenantClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Tenant)); IBusinessObjectReferenceProperty parentProperty = (IBusinessObjectReferenceProperty)tenantClass.GetPropertyDefinition("Parent"); Assert.That(parentProperty, Is.Not.Null); Tenant tenant = TestHelper.CreateTenant("TestTenant", string.Empty); var expected = new[] { MockRepository.GenerateStub <IBusinessObject> () }; searchServiceStub.Stub(stub => stub.SupportsProperty(parentProperty)).Return(true); searchServiceStub.Stub(stub => stub.Search(tenant, parentProperty, args)).Return(expected); Assert.That(parentProperty.SupportsSearchAvailableObjects, Is.True); IBusinessObject[] actual = parentProperty.SearchAvailableObjects(tenant, args); Assert.That(actual, Is.SameAs(expected)); }
public override void SetUp() { base.SetUp(); _actualEvents = new StringCollection(); _values = new IBusinessObject[5]; _values[0] = (IBusinessObject)TypeWithAllDataTypes.Create("A", 1); _values[1] = (IBusinessObject)TypeWithAllDataTypes.Create("B", 2); _values[2] = (IBusinessObject)TypeWithAllDataTypes.Create("C", 3); _values[3] = (IBusinessObject)TypeWithAllDataTypes.Create("D", 4); _values[4] = (IBusinessObject)TypeWithAllDataTypes.Create("E", 5); _newValues = new IBusinessObject[2]; _newValues[0] = (IBusinessObject)TypeWithAllDataTypes.Create("F", 6); _newValues[1] = (IBusinessObject)TypeWithAllDataTypes.Create("G", 7); _class = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithAllDataTypes)); _stringValuePath = BusinessObjectPropertyPath.CreateStatic(_class, "String"); _int32ValuePath = BusinessObjectPropertyPath.CreateStatic(_class, "Int32"); _stringValueSimpleColumn = new BocSimpleColumnDefinition(); _stringValueSimpleColumn.SetPropertyPath(_stringValuePath); _int32ValueSimpleColumn = new BocSimpleColumnDefinition(); _int32ValueSimpleColumn.SetPropertyPath(_int32ValuePath); _columns = new BocColumnDefinition[2]; _columns[0] = _stringValueSimpleColumn; _columns[1] = _int32ValueSimpleColumn; _editModeHost = new FakeEditModeHost(); _editModeHost.ID = "BocList"; _controller = new EditModeController(_editModeHost); _controller.ID = "Controller"; NamingContainer.Controls.Add(_controller); _controllerInvoker = new ControlInvoker(_controller); _editModeHost.NotifyOnEditableRowChangesCanceled = (i, o) => _actualEvents.Add(FormatChangesCanceledEventMessage(i, o)); _editModeHost.NotifyOnEditableRowChangesCanceling = (i, o) => _actualEvents.Add(FormatChangesCancelingEventMessage(i, o)); _editModeHost.NotifyOnEditableRowChangesSaved = (i, o) => _actualEvents.Add(FormatChangesSavedEventMessage(i, o)); _editModeHost.NotifyOnEditableRowChangesSaving = (i, o) => _actualEvents.Add(FormatChangesSavingEventMessage(i, o)); _editModeHost.NotifyAddRows = objects => { var oldLength = _editModeHost.Value.Count; _editModeHost.Value = ((IBusinessObject[])_editModeHost.Value).Concat(objects).ToArray(); return(((IBusinessObject[])_editModeHost.Value).Select((o, i) => new BocListRow(i, o)).Skip(oldLength).ToArray()); }; _editModeHost.NotifyRemoveRows = objects => { var removedRows = ((IBusinessObject[])_editModeHost.Value) .Select((o, i) => new BocListRow(i, o)) .Where(r => objects.Contains(r.BusinessObject)) .ToArray(); _editModeHost.Value = ((IBusinessObject[])_editModeHost.Value).Except(objects).ToArray(); return(removedRows); }; _editModeHost.NotifyEndRowEditModeCleanUp = i => _actualEvents.Add(FormatEndRowEditModeCleanUp(i)); _editModeHost.NotifyEndListEditModeCleanUp = () => _actualEvents.Add(FormatEndListEditModeCleanUp()); _editModeHost.NotifyValidateEditableRows = () => _actualEvents.Add(FormatValidateEditableRows()); _editModeHost.Value = _values; _editModeHost.RowIDProvider = new FakeRowIDProvider(); _editModeHost.EditModeControlFactory = EditableRowControlFactory.CreateEditableRowControlFactory(); _editModeHost.EditModeDataSourceFactory = new EditableRowDataSourceFactory(); _editModeHost.EnableEditModeValidator = true; _editModeHost.AreCustomCellsValid = true; }