コード例 #1
0
        public void GivenTimeAndMaterialsService_WhenDeriving_ThenRequiredRelationsMustExist()
        {
            var vatRate21 = new VatRateBuilder(this.Session).WithRate(21).Build();

            this.Session.Derive();
            this.Session.Commit();

            var builder = new TimeAndMaterialsServiceBuilder(this.Session);

            builder.Build();

            Assert.True(this.Session.Derive(false).HasErrors);

            this.Session.Rollback();

            builder.WithName("good");
            builder.Build();

            Assert.True(this.Session.Derive(false).HasErrors);

            this.Session.Rollback();

            builder.WithVatRate(vatRate21);
            builder.Build();

            Assert.False(this.Session.Derive(false).HasErrors);
        }
コード例 #2
0
        public void GivenSurchargeForVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsUpdated()
        {
            var vatRate21      = new VatRateBuilder(this.Session).WithRate(21).Build();
            var virtualService = new TimeAndMaterialsServiceBuilder(this.Session)
                                 .WithName("virtual service")
                                 .WithVatRate(vatRate21)
                                 .Build();

            var physicalService = new TimeAndMaterialsServiceBuilder(this.Session)
                                  .WithName("real service")
                                  .WithVatRate(vatRate21)
                                  .Build();

            virtualService.AddVariant(physicalService);

            this.Session.Derive();

            var surcharge = new SurchargeComponentBuilder(this.Session)
                            .WithDescription("surcharge")
                            .WithPrice(10)
                            .WithProduct(virtualService)
                            .WithFromDate(DateTime.UtcNow)
                            .Build();

            this.Session.Derive();

            Assert.Equal(1, physicalService.VirtualProductPriceComponents.Count);
            Assert.Contains(surcharge, physicalService.VirtualProductPriceComponents);
            Assert.False(virtualService.ExistVirtualProductPriceComponents);
        }
コード例 #3
0
        public void GivenSurchargeForVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsUpdated()
        {
            var vatRegime      = new VatRegimes(this.Session).BelgiumStandard;
            var virtualService = new TimeAndMaterialsServiceBuilder(this.Session)
                                 .WithName("virtual service")
                                 .WithVatRegime(vatRegime)
                                 .Build();

            var physicalService = new TimeAndMaterialsServiceBuilder(this.Session)
                                  .WithName("real service")
                                  .WithVatRegime(vatRegime)
                                  .Build();

            virtualService.AddVariant(physicalService);

            this.Session.Derive();

            var surcharge = new SurchargeComponentBuilder(this.Session)
                            .WithDescription("surcharge")
                            .WithPrice(10)
                            .WithProduct(virtualService)
                            .WithFromDate(this.Session.Now())
                            .Build();

            this.Session.Derive();

            Assert.Single(physicalService.VirtualProductPriceComponents);
            Assert.Contains(surcharge, physicalService.VirtualProductPriceComponents);
            Assert.False(virtualService.ExistVirtualProductPriceComponents);
        }
コード例 #4
0
        public void GivenSurchargeForNonVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsNull()
        {
            var vatRate21       = new VatRateBuilder(this.Session).WithRate(21).Build();
            var physicalService = new TimeAndMaterialsServiceBuilder(this.Session)
                                  .WithName("real service")
                                  .WithVatRate(vatRate21)
                                  .Build();

            new SurchargeComponentBuilder(this.Session)
            .WithDescription("surcharge")
            .WithPrice(10)
            .WithProduct(physicalService)
            .WithFromDate(DateTime.UtcNow)
            .Build();

            Assert.False(physicalService.ExistVirtualProductPriceComponents);
        }
コード例 #5
0
ファイル: PriceComponentTests.cs プロジェクト: Allors/apps
        public void GivenSurchargeForVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsUpdated()
        {
            var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build();
            var virtualService = new TimeAndMaterialsServiceBuilder(this.DatabaseSession)
                .WithName("virtual service")
                .WithVatRate(vatRate21)
                .Build();

            var physicalService = new TimeAndMaterialsServiceBuilder(this.DatabaseSession)
                .WithName("real service")
                .WithVatRate(vatRate21)
                .Build();

            virtualService.AddVariant(physicalService);

            this.DatabaseSession.Derive(true);

            var surcharge = new SurchargeComponentBuilder(this.DatabaseSession)
                .WithDescription("surcharge")
                .WithPrice(10)
                .WithProduct(virtualService)
                .WithFromDate(DateTime.UtcNow)
                .Build();

            this.DatabaseSession.Derive(true);

            Assert.AreEqual(1, physicalService.VirtualProductPriceComponents.Count);
            Assert.Contains(surcharge, physicalService.VirtualProductPriceComponents);
            Assert.IsFalse(virtualService.ExistVirtualProductPriceComponents);
        }
コード例 #6
0
ファイル: PriceComponentTests.cs プロジェクト: Allors/apps
        public void GivenSurchargeForNonVirtualProduct_WhenDeriving_ThenProductVirtualProductPriceComponentIsNull()
        {
            var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build();
            var physicalService = new TimeAndMaterialsServiceBuilder(this.DatabaseSession)
                .WithName("real service")
                .WithVatRate(vatRate21)
                .Build();

            new SurchargeComponentBuilder(this.DatabaseSession)
                .WithDescription("surcharge")
                .WithPrice(10)
                .WithProduct(physicalService)
                .WithFromDate(DateTime.UtcNow)
                .Build();

            Assert.IsFalse(physicalService.ExistVirtualProductPriceComponents);
        }
コード例 #7
0
ファイル: ProductTests.cs プロジェクト: Allors/apps
        public void GivenTimeAndMaterialsService_WhenDeriving_ThenRequiredRelationsMustExist()
        {
            var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build();
            this.DatabaseSession.Derive(true);
            this.DatabaseSession.Commit();

            var builder = new TimeAndMaterialsServiceBuilder(this.DatabaseSession);
            var good = builder.Build();

            Assert.IsTrue(this.DatabaseSession.Derive().HasErrors);

            this.DatabaseSession.Rollback();

            builder.WithName("TimeAndMaterialsService");
            good = builder.Build();

            Assert.IsTrue(this.DatabaseSession.Derive().HasErrors);

            this.DatabaseSession.Rollback();

            builder.WithVatRate(vatRate21);
            good = builder.Build();

            Assert.IsFalse(this.DatabaseSession.Derive().HasErrors);
        }
コード例 #8
0
ファイル: ProductTests.cs プロジェクト: Allors/apps
        public void GivenTimeAndMaterialsServiceWithPrimaryProductCategoryWithoutProductCategory_WhenDeriving_ThenFirstProductCategoryIsCopiedFromPrimaryCategory()
        {
            var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build();
            var productCategory = new ProductCategoryBuilder(this.DatabaseSession).WithDescription("category").Build();

            var timeAndMaterialsService = new TimeAndMaterialsServiceBuilder(this.DatabaseSession)
                .WithName("TimeAndMaterialsService")
                .WithPrimaryProductCategory(productCategory)
                .WithVatRate(vatRate21)
                .Build();

            this.DatabaseSession.Derive(true);

            Assert.Contains(productCategory, timeAndMaterialsService.ProductCategories);
        }