Exemplo n.º 1
0
        public void It_should_return_correct_value_for_exam_with_side_costs(
            int aproachNumber,
            decimal expectedPriceMultiplicator)
        {
            // Given
            const decimal accommodationCost = 200;
            const decimal transportCost     = 300;

            var sideCosts = new SideCosts
            {
                AccommodationCost         = accommodationCost,
                DailyAllowanceCost        = transportCost,
                IncludeAccommodationCost  = true,
                IncludeDailyAllowanceCost = true
            };

            var exam = new WishListItem(
                WishListItemType.Exam,
                BasePrice,
                VendorName,
                approachNumber: aproachNumber,
                sideCosts: sideCosts);

            var expectedExamPrice  = BasePrice * expectedPriceMultiplicator;
            var expectedTotalPrice = expectedExamPrice + accommodationCost + transportCost;

            // When
            var result = exam.CalculateCost();

            // Then
            Assert.That(result, Is.EqualTo(expectedTotalPrice));
        }
        public void It_should_return_correct_value_for_training_with_side_costs()
        {
            // Given
            const decimal accommodationCost = 200;
            const decimal transportCost     = 300;

            var sideCosts = new SideCosts
            {
                AccommodationCost         = accommodationCost,
                DailyAllowanceCost        = transportCost,
                IncludeAccommodationCost  = true,
                IncludeDailyAllowanceCost = true
            };

            var training = new WishListItem(
                WishListItemType.Training,
                BasePrice,
                sideCosts: sideCosts);

            const decimal expectedResult = BasePrice + accommodationCost + transportCost;

            // When
            var result = training.CalculateCost();

            // Then
            Assert.That(result, Is.EqualTo(expectedResult));
        }
Exemplo n.º 3
0
        public void It_should_return_correct_value_for_foreing_conference_with_side_costs()
        {
            // Given
            const decimal accommodationCost = 200;
            const decimal transportCost     = 300;

            var sideCosts = new SideCosts
            {
                AccommodationCost         = accommodationCost,
                DailyAllowanceCost        = transportCost,
                IncludeAccommodationCost  = true,
                IncludeDailyAllowanceCost = true
            };

            var conference = new WishListItem(
                WishListItemType.Conference,
                BasePrice,
                location: LocationType.Foreign,
                sideCosts: sideCosts);

            const decimal conferenceCost = BasePrice * ForeignConferenceMultiplicator;
            const decimal expectedResult = conferenceCost + accommodationCost + transportCost;

            // When
            var result = conference.CalculateCost();

            // Then
            Assert.That(result, Is.EqualTo(expectedResult));
        }
        private decimal CalculateSideCosts(SideCosts sideCosts)
        {
            decimal totalSideCosts = 0;

            if (sideCosts.IncludeAccommodationCost)
            {
                totalSideCosts += sideCosts.AccommodationCost;
            }

            if (sideCosts.IncludeDailyAllowanceCost)
            {
                totalSideCosts += sideCosts.DailyAllowanceCost;
            }

            if (sideCosts.IncludeTransportCost)
            {
                totalSideCosts += sideCosts.TransportCost;
            }

            return(totalSideCosts);
        }
#pragma warning restore 649

        public WishListItem(
            WishListItemType wishListItemType,
            decimal baseItemCost,
            string vendorName     = null,
            LocationType location = LocationType.Local,
            int approachNumber    = 0,
            DateTime?startDate    = null,
            DateTime?endDate      = null,
            SideCosts sideCosts   = null,
            IDictionary <string, decimal> vendorNamesWithDiscounts = null)
        {
            WishListItemType     = wishListItemType;
            BaseItemCost         = baseItemCost;
            VendorName           = vendorName;
            Location             = location;
            ApproachNumber       = approachNumber;
            StartDate            = startDate;
            EndDate              = endDate;
            SideCosts            = sideCosts ?? new SideCosts();
            VendorsWithDiscounts = vendorNamesWithDiscounts ?? new Dictionary <string, decimal>();
        }
 protected override decimal CalculateSideCosts(SideCosts sideCosts)
 {
     return(0);
 }