public void GivenDiscountForVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsUpdated() { var vatRate21 = new VatRateBuilder(this.Session).WithRate(21).Build(); var virtualService = new DeliverableBasedServiceBuilder(this.Session) .WithName("virtual service") .WithVatRate(vatRate21) .Build(); var physicalService = new DeliverableBasedServiceBuilder(this.Session) .WithName("real service") .WithVatRate(vatRate21) .Build(); virtualService.AddVariant(physicalService); this.Session.Derive(); var discount = new DiscountComponentBuilder(this.Session) .WithDescription("discount") .WithPrice(10) .WithProduct(virtualService) .WithFromDate(DateTime.UtcNow) .Build(); this.Session.Derive(); Assert.Equal(1, physicalService.VirtualProductPriceComponents.Count); Assert.Contains(discount, physicalService.VirtualProductPriceComponents); Assert.False(virtualService.ExistVirtualProductPriceComponents); }
public void GivenDeliverableBasedService_WhenDeriving_ThenRequiredRelationsMustExist() { var vatRate21 = new VatRateBuilder(this.Session).WithRate(21).Build(); this.Session.Derive(); this.Session.Commit(); var builder = new DeliverableBasedServiceBuilder(this.Session); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithVatRate(vatRate21); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithName("service"); builder.Build(); Assert.False(this.Session.Derive(false).HasErrors); }
public void GivenDiscountForVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsUpdated() { var vatRegime = new VatRegimes(this.Session).BelgiumStandard; var virtualService = new DeliverableBasedServiceBuilder(this.Session) .WithName("virtual service") .WithVatRegime(vatRegime) .Build(); var physicalService = new DeliverableBasedServiceBuilder(this.Session) .WithName("real service") .WithVatRegime(vatRegime) .Build(); virtualService.AddVariant(physicalService); this.Session.Derive(); var discount = new DiscountComponentBuilder(this.Session) .WithDescription("discount") .WithPrice(10) .WithProduct(virtualService) .WithFromDate(this.Session.Now()) .Build(); this.Session.Derive(); Assert.Single(physicalService.VirtualProductPriceComponents); Assert.Contains(discount, physicalService.VirtualProductPriceComponents); Assert.False(virtualService.ExistVirtualProductPriceComponents); }
public void GivenDeliverableCoredService_WhenDeriving_ThenRequiredRelationsMustExist() { var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var builder = new DeliverableBasedServiceBuilder(this.DatabaseSession); var deliverableBasedService = builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithVatRate(vatRate21); deliverableBasedService = builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithName("DeliverableCoredService"); deliverableBasedService = builder.Build(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenDeliverableCoredServiceWithPrimaryProductCategoryWithoutProductCategory_WhenDeriving_ThenFirstProductCategoryIsCopiedFromPrimaryCategory() { var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build(); var productCategory = new ProductCategoryBuilder(this.DatabaseSession).WithDescription("category").Build(); var deliverableBasedService = new DeliverableBasedServiceBuilder(this.DatabaseSession) .WithName("DeliverableCoredService") .WithPrimaryProductCategory(productCategory) .WithVatRate(vatRate21) .Build(); this.DatabaseSession.Derive(true); Assert.Contains(productCategory, deliverableBasedService.ProductCategories); }
public void GivenDiscountForNonVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsNull() { var vatRate21 = new VatRateBuilder(this.Session).WithRate(21).Build(); var physicalService = new DeliverableBasedServiceBuilder(this.Session) .WithName("real service") .WithVatRate(vatRate21) .Build(); new DiscountComponentBuilder(this.Session) .WithDescription("discount") .WithPrice(10) .WithProduct(physicalService) .WithFromDate(DateTime.UtcNow) .Build(); Assert.False(physicalService.ExistVirtualProductPriceComponents); }
public void GivenDeliverableBasedService_WhenDeriving_ThenRequiredRelationsMustExist() { var builder = new DeliverableBasedServiceBuilder(this.Session); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithVatRegime(new VatRegimes(this.Session).BelgiumStandard); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithName("service"); builder.Build(); Assert.False(this.Session.Derive(false).HasErrors); }
public void GivenDiscountForVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsUpdated() { var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build(); var virtualService = new DeliverableBasedServiceBuilder(this.DatabaseSession) .WithName("virtual service") .WithVatRate(vatRate21) .Build(); var physicalService = new DeliverableBasedServiceBuilder(this.DatabaseSession) .WithName("real service") .WithVatRate(vatRate21) .Build(); virtualService.AddVariant(physicalService); this.DatabaseSession.Derive(true); var discount = new DiscountComponentBuilder(this.DatabaseSession) .WithDescription("discount") .WithPrice(10) .WithProduct(virtualService) .WithFromDate(DateTime.UtcNow) .Build(); this.DatabaseSession.Derive(true); Assert.AreEqual(1, physicalService.VirtualProductPriceComponents.Count); Assert.Contains(discount, physicalService.VirtualProductPriceComponents); Assert.IsFalse(virtualService.ExistVirtualProductPriceComponents); }
public void GivenDiscountForNonVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsNull() { var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build(); var physicalService = new DeliverableBasedServiceBuilder(this.DatabaseSession) .WithName("real service") .WithVatRate(vatRate21) .Build(); new DiscountComponentBuilder(this.DatabaseSession) .WithDescription("discount") .WithPrice(10) .WithProduct(physicalService) .WithFromDate(DateTime.UtcNow) .Build(); Assert.IsFalse(physicalService.ExistVirtualProductPriceComponents); }