public void GivenBasePriceForVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsUpdated() { var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build(); var virtualGood = new GoodBuilder(this.DatabaseSession) .WithName("virtual gizmo") .WithVatRate(vatRate21) .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); var physicalGood = new GoodBuilder(this.DatabaseSession) .WithName("real gizmo") .WithSku("10101") .WithVatRate(vatRate21) .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); virtualGood.AddVariant(physicalGood); this.DatabaseSession.Derive(true); var basePrice = new BasePriceBuilder(this.DatabaseSession) .WithDescription("baseprice") .WithPrice(10) .WithProduct(virtualGood) .WithFromDate(DateTime.UtcNow) .Build(); this.DatabaseSession.Derive(true); Assert.AreEqual(1, physicalGood.VirtualProductPriceComponents.Count); Assert.Contains(basePrice, physicalGood.VirtualProductPriceComponents); Assert.IsFalse(virtualGood.ExistVirtualProductPriceComponents); }