public void GivenOrderItemWithOrderedWithFeature_WhenDeriving_ThenOrderedWithFeatureOrderItemMustBeForProductFeature() { this.InstantiateObjects(this.DatabaseSession); var salesOrder = new SalesOrderBuilder(this.DatabaseSession) .WithTakenByInternalOrganisation(this.internalOrganisation) .WithShipToAddress(this.shipToContactMechanismMechelen) .WithBillToCustomer(this.billToCustomer) .Build(); var productOrderItem = new SalesOrderItemBuilder(this.DatabaseSession) .WithProduct(this.good) .WithQuantityOrdered(3) .WithActualUnitPrice(5) .Build(); var productFeatureOrderItem = new SalesOrderItemBuilder(this.DatabaseSession) .WithProductFeature(this.feature1) .WithQuantityOrdered(3) .WithActualUnitPrice(5) .Build(); productOrderItem.AddOrderedWithFeature(productFeatureOrderItem); salesOrder.AddSalesOrderItem(productOrderItem); salesOrder.AddSalesOrderItem(productFeatureOrderItem); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); productFeatureOrderItem.RemoveProductFeature(); productFeatureOrderItem.Product = this.good; Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); }