コード例 #1
0
        public async Task InvoiceContainsTotalBonus(
            [Frozen] Mock <IStockRepository> stockRepositoryMock,
            [Frozen] Mock <IOrderItemPriceCalculator> orderItemPriceCalculatorMock,
            [Frozen] Mock <IOrderItemBonusCalculator> orderItemBonusCalculatorMock,
            InvoiceGenerator sut, Order order, List <OrderItem> orderItems)
        {
            orderItems.ForEach(order.AddItem);

            stockRepositoryMock.Setup(m => m.GetById(It.IsAny <int>()))
            .Returns <int>(id => Task.FromResult(new StockItem()));

            // mock price = 0
            orderItemPriceCalculatorMock.Setup(m => m.Calculate(It.IsAny <OrderItem>()))
            .ReturnsAsync(0);

            // mock bonus = {StockItemId} x {DurationDays}
            orderItemBonusCalculatorMock.Setup(m => m.Calculate(It.IsAny <OrderItem>()))
            .Returns <OrderItem>(i => Task.FromResult((int?)(i.StockItemId * i.DurationDays)));

            var invoice = await sut.Generate(order);

            var expectedTotalBonus = orderItems.Sum(i => i.StockItemId * i.DurationDays);

            Assert.Contains($"\nBONUS\t\t{expectedTotalBonus}pt.", invoice);
        }
コード例 #2
0
 public void Able_to_create_instance()
 {
     _ = new InvoiceGenerator(
         Substitute.For <IProductRepository>(),
         Substitute.For <ISupplierRepository>(),
         Substitute.For <ICustomerRepository>());
 }
コード例 #3
0
        public void GivenTimeAndDistance_calculatePremiumFare(double distance, double time, double output)
        {
            InvoiceGenerator invoiceGeneratorPremium = new InvoiceGenerator(InvoiceGenerator.ServiceType.PREMIUM_RIDE);
            Ride             ride = new Ride(distance, time);

            Assert.AreEqual(output, invoiceGeneratorPremium.returnTotalFareForSingleRide(ride));
        }
コード例 #4
0
        public void GivenDistanceAndTime_ShouldReturn_TotalFare()
        {
            double expected = 25;
            double result   = InvoiceGenerator.CalculateFare(2, 5, RideType.NORMAL);

            Assert.AreEqual(expected, result);
        }
コード例 #5
0
        public void GivenWrongRideParameters_WhenRead_ShouldReturn_Exception_INVALID_RIDE_TYPE()
        {
            invoiceGenerator = new InvoiceGenerator(RideType.NORMAL);
            var exception = Assert.Throws <CabInvoiceException>(() => invoiceGenerator.CalculateFare(-45, -3));

            Assert.AreEqual(CabInvoiceException.ExceptionType.INVALID_DISTANCE, exception.etype);
        }
コード例 #6
0
        public IActionResult GetInvoice(int id)
        {
            var order   = OrdersRepo.Get(id);
            var invoice = InvoiceGenerator.GenerateInvoice(order, FeeRepository.Get());

            return(new FileContentResult(Encoding.UTF8.GetBytes(invoice), InvoiceGenerator.MediaType));
        }
コード例 #7
0
        public void GenerateInvoice_SpecifiedInput_ExpectedResult(string series, string expected)
        {
            InvoiceGenerator invoiceGenerator = new InvoiceGenerator();
            string           actual           = invoiceGenerator.GenerateInvoice(series);

            Assert.AreEqual(expected, actual);
        }
コード例 #8
0
        public async Task InvoiceContainsItems(
            [Frozen] Mock <IStockRepository> stockRepositoryMock,
            [Frozen] Mock <IOrderItemPriceCalculator> orderItemPriceCalculatorMock,
            [Frozen] Mock <IOrderItemBonusCalculator> orderItemBonusCalculatorMock,
            InvoiceGenerator sut, Order order, List <OrderItem> orderItems)
        {
            orderItems.ForEach(order.AddItem);

            // mock name = "stock-item-{Id}"
            stockRepositoryMock.Setup(m => m.GetById(It.IsAny <int>()))
            .Returns <int>(id => Task.FromResult(new StockItem {
                Name = $"stock-item-{id}"
            }));

            // mock price = {StockItemId} x {DurationDays}
            orderItemPriceCalculatorMock.Setup(m => m.Calculate(It.IsAny <OrderItem>()))
            .Returns <OrderItem>(i => Task.FromResult((decimal?)(i.StockItemId * i.DurationDays)));

            // mock bonus = 0
            orderItemBonusCalculatorMock.Setup(m => m.Calculate(It.IsAny <OrderItem>()))
            .ReturnsAsync(0);

            var invoice = await sut.Generate(order);

            orderItems.ForEach(i =>
                               Assert.Contains($"\nstock-item-{i.StockItemId}\t\t{i.StockItemId * i.DurationDays}€\n", invoice));
        }
コード例 #9
0
        public void givenUserId_WhenAbsent_ShouldThrowAnException()
        {
            invoiceGenerator = new InvoiceGenerator(RideType.NORMAL);
            var result = Assert.Throws <CabInvoiceException>(() => invoiceGenerator.GetUserInvoice(1));

            Assert.AreEqual(CabInvoiceException.ExceptionType.INVALID_USER_ID, result.type);
        }
コード例 #10
0
        public void totalFairForJourney()
        {
            InvoiceGenerator generate = new InvoiceGenerator();
            int Fair = generate.totalFair(5, 60);

            Assert.AreEqual(110, Fair);
        }
コード例 #11
0
        public void GenereteInvoice_ShouldCalculateTaxesForItems()
        {
            var invoiceGenerator = new InvoiceGenerator();
            var result           = invoiceGenerator.GenerateInvoice().Value;

            Assert.AreEqual(0.3, result, 0.0001);
        }
コード例 #12
0
        static void Main(string[] args)
        {
            var kompanijos = new CompanyRepository();

            Console.WriteLine("Kompanijos:");
            foreach (var item in kompanijos.Retrieve())
            {
                Console.WriteLine("{0} {1} {2}", item.ID, item.Name, item.Address);
            }

            var saskaitos = new InvoiceItemOutsideRepository();

            Console.WriteLine("Saskaitos:");
            foreach (var item in saskaitos.Retrieve())
            {
                Console.WriteLine("{0} {1} {2} {3} {4}", item.Number, item.ProviderCompanyId, item.RecipientCompanyId, item.ServiceName, item.Cost);
            }

            var ataskaitosGeneravimas = new InvoiceGenerator(new InvoiceItemOutsideRepository(), new CompanyRepository());
            var report = ataskaitosGeneravimas.GenerateReportInvoice();

            Console.WriteLine("Ataskaita:");
            foreach (var ataskaita in report)
            {
                Console.WriteLine("{0}, {1}, {2}, {3}, {4}, {5}", ataskaita.Number,
                                  ataskaita.ProviderCompanyAdress,
                                  ataskaita.ProviderCompanyName,
                                  ataskaita.RecipientCompanyAdress,
                                  ataskaita.RecipientCompanyName,
                                  ataskaita.Total);
            }
            Console.ReadLine();
        }
コード例 #13
0
        public async Task Able_to_generate_invoice()
        {
            var product     = ProductMockBuilder.Build();
            var productRepo = Substitute.For <IProductRepository>();

            productRepo.Get(Arg.Any <Guid>()).Returns(product);

            var supplier     = SupplierMockBuilder.Build();
            var supplierRepo = Substitute.For <ISupplierRepository>();

            supplierRepo.Get(Arg.Any <Guid>()).Returns(supplier);

            var customer     = CustomerMockBuilder.Build();
            var customerRepo = Substitute.For <ICustomerRepository>();

            customerRepo.Get(Arg.Any <Guid>()).Returns(customer);

            var sut    = new InvoiceGenerator(productRepo, supplierRepo, customerRepo);
            var actual = await sut.Generate(OrderMockBuilder.Build());

            actual.Customer.Should().Be(customer);
            actual.Supplier.Should().Be(supplier);
            actual.Product.Should().Be(product);
            actual.Amount.Should().Be(new InvoiceAmount(30, 0.19));
        }
コード例 #14
0
ファイル: Program.cs プロジェクト: Ruthikreddy/CabInvoice
        static void Main(string[] args)
        {
            Console.WriteLine("Welcome To Cab Invoice Generator");
            InvoiceGenerator invoiceGenerator = new InvoiceGenerator(RideType.PREMIUM);
            double           fare             = invoiceGenerator.CalculateFare(2.0, 5);

            Console.WriteLine($"Fare : {fare}");
        }
コード例 #15
0
        public void EnhancedInvoiceTotalNumberOfRides()
        {
            Ride[]                   ride     = { new Ride(5, 60), new Ride(4, 50), new Ride(3, 40) };
            InvoiceGenerator         generate = new InvoiceGenerator();
            Tuple <int, int, double> average  = generate.aggregateFare(ride);

            Assert.AreEqual(average.Item2, 3);
        }
コード例 #16
0
        public void EnhancedInvoiceAggregateFair()
        {
            Ride[]                   ride      = { new Ride(5, 60), new Ride(4, 50), new Ride(3, 40) };
            InvoiceGenerator         generate  = new InvoiceGenerator();
            Tuple <int, int, double> aggregate = generate.aggregateFare(ride);

            Assert.AreEqual(aggregate.Item1, 270);
        }
コード例 #17
0
ファイル: UnitTest1.cs プロジェクト: sanjujaiswal/CabServices
        public void TakeDistanceAndTimeReturnTotalFare()
        {
            double           travelDistance = 10.0;
            double           travelTime     = 5;
            InvoiceGenerator invoiceGen     = new InvoiceGenerator();

            Assert.AreEqual(105, invoiceGen.FareCalculate(travelDistance, travelTime));
        }
コード例 #18
0
        //Test case 4 - Should return total fare on having multiple rides
        public void Given_MultipleNoOfRides_Should_Return_TotalFare()
        {
            invoiceGenerator = new InvoiceGenerator(RideType.NORMAL);
            rides            = new Ride[] { new Ride(10, 60), new Ride(5, 30), new Ride(3, 20) };
            double fare = invoiceGenerator.CalculateFare(rides);

            Assert.AreEqual(290, fare);
        }
コード例 #19
0
 public QrController(InvoiceGenerator invoiceGenerator, PaymentDataGenerator paymentDataGenerator, SmtpEmailFileSender emailSender, IOptions <GeneratorOptions> genOptions, IOptions <GeneratorSensitiveOptions> genSensitiveOptions)
 {
     this._invoiceGenerator     = invoiceGenerator;
     this._paymentDataGenerator = paymentDataGenerator;
     this._emailSender          = emailSender;
     this._sensitiveOpts        = genSensitiveOptions.Value;
     this._genOpts = genOptions.Value;
 }
コード例 #20
0
        public void GivenUserId_WhenAbsent_Should_Return_CabInvoiceException()
        {
            invoiceGenerator = new InvoiceGenerator(RideType.NORMAL);

            var exception = Assert.Throws <CabInvoiceException>(() => invoiceGenerator.GetUserInvoice(1));

            Assert.AreEqual(CabInvoiceException.Type.INVALID_USER_ID, exception.type);
        }
コード例 #21
0
        public void CalculateFare_IfNullRides_ThrowsException()
        {
            var invoiceGenerator = new InvoiceGenerator();

            var exception = Assert.Throws <CabInvoiceException>(() => invoiceGenerator.CalculateFare(null));

            Assert.That(exception.type, Is.EqualTo(CabInvoiceException.ExceptionType.NULL_RIDES));
        }
コード例 #22
0
        public void CalculateFare_IfInvalidTime_ThrowsException()
        {
            var invoiceGenerator = new InvoiceGenerator();

            var exception = Assert.Throws <CabInvoiceException>(() => invoiceGenerator.CalculateFare(1.0, -1));

            Assert.That(exception.type, Is.EqualTo(CabInvoiceException.ExceptionType.INVALID_TIME));
        }
コード例 #23
0
        public void CalculateFare_IfValidParameters_ReturnsFare(RideType rideType, double expectedFare)
        {
            var invoiceGenerator = new InvoiceGenerator(rideType);

            var result = invoiceGenerator.CalculateFare(2.0, 1);

            Assert.That(result, Is.EqualTo(expectedFare));
        }
コード例 #24
0
        public void GivenNormalMultipleRideShouldReturnInvoiceSummary()
        {
            invoiceGenerator = new InvoiceGenerator(RideType.NORMAL);
            Ride[]         rides           = { new Ride(2.0, 5), new Ride(2.0, 5) };
            InvoiceSummary summary         = invoiceGenerator.CalculateFare(rides);
            InvoiceSummary expectedSummary = new InvoiceSummary(2, 50.0);

            Assert.AreEqual(expectedSummary, summary);
        }
コード例 #25
0
        public void GivenPremiumRides_ShouldReturnTotalFare()
        {
            invoiceGenerator = new InvoiceGenerator(RideType.PREMIUM);
            Ride[]         rides  = { new Ride(2, 5), new Ride(2, 1) };
            InvoiceSummary result = invoiceGenerator.CalculateFare(rides);
            InvoiceSummary expectedInvoiceSummary = new InvoiceSummary(2, 72);

            Assert.AreEqual(expectedInvoiceSummary, result);
        }
コード例 #26
0
        public void GivenMultipleRides_ShouldReturnInvoiceSummary()
        {
            invoiceGenerator = new InvoiceGenerator(RideType.NORMAL);
            Ride[]         rides  = { new Ride(2, 5), new Ride(2, 1) };
            InvoiceSummary result = invoiceGenerator.CalculateFare(rides);
            InvoiceSummary expectedInvoiceSummary = new InvoiceSummary(2, 46);

            Assert.AreEqual(expectedInvoiceSummary, result);
        }
コード例 #27
0
        public void GivenMultipleRide_ShouldReturn_TotalNoRides_Fare_AverageFarePerRide()
        {
            invoiceGenerator = new InvoiceGenerator(RideType.NORMAL);
            Ride[]         rides                   = { new Ride(2.0, 5), new Ride(0.1, 3) };
            InvoiceSummary enhancedSummary         = invoiceGenerator.CalculateFare(rides);
            InvoiceSummary expectedEnhancedSummary = new InvoiceSummary(2, 30);

            Assert.AreEqual(expectedEnhancedSummary, enhancedSummary);
        }
コード例 #28
0
        public void GivenMultipleRides_ShouldReturn_InvoiceSummary()
        {
            double expected = 45.0;

            Ride[]         ridesTestObj = { new Ride(2.0, 5, RideType.NORMAL), new Ride(0.1, 1, RideType.PREMIUM) };
            InvoiceSummary result       = InvoiceGenerator.CalculateFare(ridesTestObj);

            Assert.AreEqual(expected, result.totalFare);
        }
コード例 #29
0
        public void GivenMultipleRides_WhenInvoiceGenerator_thenShouldReturnFollowingInvoiceSummary()
        {
            invoiceGenerator = new InvoiceGenerator(RideType.NORMAL);
            Ride[]         rides           = { new Ride(2.0, 5), new Ride(0.1, 1) };
            InvoiceSummary invoiceSummary  = invoiceGenerator.CalculateAvrageFare(rides);
            InvoiceSummary expectedSummary = new InvoiceSummary(2, 30.0, 15);

            Assert.AreEqual(expectedSummary, invoiceSummary);
        }
コード例 #30
0
        public void GivenMultipleRideShouldReturnInvoiceSummary()
        {
            invoiceGenerator = new InvoiceGenerator(RideType.NORMAL);
            Ride[]         rides           = { new Ride(2.0, 5), new Ride(0.1, 5) };
            InvoiceSummary summary         = invoiceGenerator.CalculateFare(rides);
            InvoiceSummary expectedSummary = new InvoiceSummary(2, 35.0);

            NUnit.Framework.Assert.AreEqual(expectedSummary.GetType(), summary.GetType());
        }