public void CalculateWage_ForDriverWithOurCarWithForwarder()
        {
            //arrange
            var wageParameter = new OldRatesWageParameterItem();

            var source = Substitute.For <IRouteListWageCalculationSource>();

            source.IsTruck.Returns(false);
            source.HasAnyCompletedAddress.Returns(true);
            source.EmployeeCategory.Returns(EmployeeCategory.driver);
            source.DriverOfOurCar.Returns(true);
            source.RouteListDate.Returns(new DateTime(2019, 09, 25));

            var sourceItem = Substitute.For <IRouteListItemWageCalculationSource>();

            sourceItem.Bottle600mlCount.Returns(5);
            sourceItem.Bottle6LCount.Returns(5);
            sourceItem.FullBottle19LCount.Returns(5);
            sourceItem.EmptyBottle19LCount.Returns(5);
            sourceItem.ContractCancelation.Returns(false);
            sourceItem.DriverWageSurcharge.Returns(0);
            sourceItem.HasFirstOrderForDeliveryPoint.Returns(true);
            sourceItem.IsDelivered.Returns(true);
            sourceItem.NeedTakeOrDeliverEquipment.Returns(false);
            sourceItem.WasVisitedByForwarder.Returns(true);
            sourceItem.IsDelivered.Returns(true);

            source.ItemSources.Returns(new List <IRouteListItemWageCalculationSource> {
                { sourceItem }
            });

            var service = new RouteListOldRatesWageCalculationService(wageParameter, source);

            decimal expectedValue = wageParameter.GetRateForOurs(source.RouteListDate, WageRateTypes.Bottle19L).ForDriverWithForwarder *sourceItem.FullBottle19LCount;

            expectedValue += wageParameter.GetRateForOurs(source.RouteListDate, WageRateTypes.EmptyBottle19L).ForDriverWithForwarder *sourceItem.EmptyBottle19LCount;
            expectedValue += wageParameter.GetRateForOurs(source.RouteListDate, WageRateTypes.Bottle6L).ForDriverWithForwarder *sourceItem.Bottle6LCount;
            expectedValue += Math.Truncate(wageParameter.GetRateForOurs(source.RouteListDate, WageRateTypes.PackOfBottles600ml).ForDriverWithForwarder / 36 * sourceItem.Bottle600mlCount);
            expectedValue += wageParameter.GetRateForOurs(source.RouteListDate, WageRateTypes.Address).ForDriverWithForwarder;

            //act
            var result = service.CalculateWage();

            //assert
            AssertsAccumulator.Create
            .Accumulate(() => Assert.That(result.Wage, Is.EqualTo(expectedValue)))
            .Accumulate(() => Assert.That(result.FixedWage, Is.EqualTo(0)))
            .Accumulate(() => Assert.That(result.WageDistrictLevelRate, Is.EqualTo(null)))
            .Release();
        }
Ejemplo n.º 2
0
 public RouteListOldRatesWageCalculationService(OldRatesWageParameterItem wageParameterItem, IRouteListWageCalculationSource source)
 {
     this.wageParameterItem = wageParameterItem ?? throw new ArgumentNullException(nameof(wageParameterItem));
     this.source            = source ?? throw new ArgumentNullException(nameof(source));
 }