示例#1
0
        public void GivenOverlappingYearlyAndMonthlySchedulesMonthlyTakesPrecedence()
        {
            var municipality = "Vilnius";
            var date         = new DateTime(2016, 03, 04);
            var monthlyTax   = 0.4M;

            this.municipalitiesTaxesSchedulesStorageMock
            .Setup(s => s.GetMunicipalityTaxesSchedules(municipality, date))
            .Returns(() => new[]
            {
                new MunicipalityTaxSchedule
                {
                    Municipality = municipality,
                    Type         = MunicipalityTaxScheduleType.Yearly,
                    Tax          = 0.2M,
                    StartDate    = new DateTime(2016, 01, 01),
                    EndDate      = new DateTime(2016, 12, 31)
                },
                new MunicipalityTaxSchedule
                {
                    Municipality = municipality,
                    Type         = MunicipalityTaxScheduleType.Monthly,
                    Tax          = monthlyTax,
                    StartDate    = new DateTime(2016, 03, 01),
                    EndDate      = new DateTime(2016, 03, 31)
                }
            });

            var result = new MunicipalitiesTaxesCalculator(this.municipalitiesTaxesSchedulesStorageMock.Object)
                         .Calculate(municipality, date);

            Assert.AreEqual(monthlyTax, result);
        }
示例#2
0
        public void GivenExistingMunicipalityReturnsItsTaxes()
        {
            var municipality = "Vilnius";
            var date         = new DateTime(2016, 03, 04);
            var tax          = 0.2M;

            this.municipalitiesTaxesSchedulesStorageMock
            .Setup(s => s.GetMunicipalityTaxesSchedules(municipality, date))
            .Returns(() => new[]
            {
                new MunicipalityTaxSchedule
                {
                    Municipality = municipality,
                    Type         = MunicipalityTaxScheduleType.Yearly,
                    Tax          = tax,
                    StartDate    = new DateTime(2016, 01, 01),
                    EndDate      = new DateTime(2016, 12, 31)
                }
            });

            var result = new MunicipalitiesTaxesCalculator(this.municipalitiesTaxesSchedulesStorageMock.Object)
                         .Calculate(municipality, date);

            Assert.AreEqual(tax, result);
        }
示例#3
0
        public void GivenOverlappingWeeklyAndDailySchedulesDailyTakesPrecedence()
        {
            var municipality = "Vilnius";
            var date         = new DateTime(2016, 03, 04);
            var dailyTax     = 0.1M;

            this.municipalitiesTaxesSchedulesStorageMock
            .Setup(s => s.GetMunicipalityTaxesSchedules(municipality, date))
            .Returns(() => new[]
            {
                new MunicipalityTaxSchedule
                {
                    Municipality = municipality,
                    Type         = MunicipalityTaxScheduleType.Weekly,
                    Tax          = 0.3M,
                    StartDate    = new DateTime(2016, 02, 29),
                    EndDate      = new DateTime(2016, 03, 06)
                },
                new MunicipalityTaxSchedule
                {
                    Municipality = municipality,
                    Type         = MunicipalityTaxScheduleType.Daily,
                    Tax          = dailyTax,
                    StartDate    = new DateTime(2016, 03, 04),
                    EndDate      = new DateTime(2016, 03, 04)
                }
            });

            var result = new MunicipalitiesTaxesCalculator(this.municipalitiesTaxesSchedulesStorageMock.Object)
                         .Calculate(municipality, date);

            Assert.AreEqual(dailyTax, result);
        }
示例#4
0
        public void GivenNonExistingMunicipalityReturnsZeroTaxes()
        {
            this.municipalitiesTaxesSchedulesStorageMock
            .Setup(s => s.GetMunicipalityTaxesSchedules(It.IsAny <string>(), It.IsAny <DateTime>()))
            .Returns(() => Enumerable.Empty <MunicipalityTaxSchedule>());

            var result = new MunicipalitiesTaxesCalculator(this.municipalitiesTaxesSchedulesStorageMock.Object)
                         .Calculate("Unknown", DateTime.Now);

            Assert.AreEqual(0M, result);
        }