コード例 #1
0
 //[Ignore("Fails because the first parameter is null")]
 public void BeAbleToBeConstructed()
 {
     // Arrange and Act
     _sut = new SaleCreator(null, null);
     // Assert
     Assert.That(_sut, Is.InstanceOf <SaleCreator>());
 }
コード例 #2
0
        public void CalculateTotalTest_PassesInLooseModeIfArgumentsDontMatchSetup()
        {
            var mockCatalogItemManager = new Mock <ICatalogItemManager>(MockBehavior.Loose);

            mockCatalogItemManager.Setup(x => x.GetPrice("Filofax")).Returns(It.IsAny <decimal>);
            var mockExchangeRateService = new Mock <IExchangeRateService>();

            _sut = new SaleCreator(mockCatalogItemManager.Object, mockExchangeRateService.Object);
            _sut.CalculateTotal("Handbag", "CDN", 2);
        }
コード例 #3
0
        public void CalculateTotal_CallsTheCorrectMethodWithCorrectParameters_OfICatalogItemManager()
        {
            var mockCatalogItemManager = new Mock <ICatalogItemManager>(MockBehavior.Strict);

            mockCatalogItemManager.Setup(x => x.GetPrice("Filofax")).Returns(It.IsAny <decimal>);
            var mockExchangeRateService = new Mock <IExchangeRateService>();

            _sut = new SaleCreator(mockCatalogItemManager.Object, mockExchangeRateService.Object);
            _sut.CalculateTotal("Filofax", "CDN", 2);
        }
コード例 #4
0
        public void BeAbleToBeConstructedUsingMoq()
        {
            // Arrange
            var mockCatalogItemManager  = new Mock <ICatalogItemManager>();
            var mockExchangeRateService = new Mock <IExchangeRateService>();

            // Act
            _sut = new SaleCreator(mockCatalogItemManager.Object, mockExchangeRateService.Object);
            // Assert
            Assert.That(_sut, Is.InstanceOf <SaleCreator>());
        }
コード例 #5
0
        public void CalculateTotal_DoesNotCallIExchangeRateService_GetRateFor_WhenDesiredCurrencyIsGBP()
        {
            // Arrange
            var mockCatalogItemManager  = new Mock <ICatalogItemManager>();
            var mockExchangeRateService = new Mock <IExchangeRateService>();

            _sut = new SaleCreator(mockCatalogItemManager.Object, mockExchangeRateService.Object);
            // Act
            _sut.CalculateTotal("Filofax", "GBP", 2);
            // Assert
            mockExchangeRateService.Verify(x => x.GetRateFor(It.IsAny <string>(), It.IsAny <string>()), Times.Never);
        }
コード例 #6
0
        public void CalculateTotal_CallsIExchangeRateService_GetRateFor_WithCorrectParameters()
        {
            // Arrange
            var mockCatalogItemManager  = new Mock <ICatalogItemManager>();
            var mockExchangeRateService = new Mock <IExchangeRateService>();

            _sut = new SaleCreator(mockCatalogItemManager.Object, mockExchangeRateService.Object);
            // Act
            _sut.CalculateTotal("Filofax", "CDN", 2);
            // Assert
            mockExchangeRateService.Verify(x => x.GetRateFor("GBP", "CDN"));
        }
コード例 #7
0
        static void Main(string[] args)
        {
            SaleCreator[] sales = new SaleCreator[3];

            sales[0] = new InCashSaleCreator();
            sales[1] = new DebitSaleCreator();
            sales[2] = new ParceledOutSaleCreator();

            List <Product> products = new List <Product>();

            products.Add(new Product(1, "Notebook", 3000));
            products.Add(new Product(2, "Iphone", 4000));
            products.Add(new Product(3, "PS5", 5000));

            var SaleInCash      = sales[0].CreateSale();
            var SaleDebit       = sales[1].CreateSale();
            var SaleParceledOut = sales[2].CreateSale();

            foreach (var p in products)
            {
                SaleInCash.addProduct(p);
                SaleDebit.addProduct(p);
                SaleParceledOut.addProduct(p);
            }

            Console.WriteLine(" 1 - Dinheiro \n 2 - Débito \n 3 - Parcelado \n");
            Console.WriteLine(" Informe o médoto de pagamento: \n");

            int paymentMethod = int.Parse(Console.ReadLine());

            Console.WriteLine();

            switch (paymentMethod)
            {
            case 1:
                Console.WriteLine(" Total com desconto: " + SaleInCash.getPrice());
                break;

            case 2:
                Console.WriteLine(" Total com desconto: " + SaleDebit.getPrice());
                break;

            case 3:
                Console.WriteLine(" Total com desconto: " + SaleParceledOut.getPrice());
                break;

            default:
                Console.WriteLine("Opção Inválida!");
                break;
            }
        }
コード例 #8
0
        public void CalculateTotal_ReturnsAnErrorString_WhenIExchangeRateService_GetRateFor_ThrowsAnException()
        {
            // Arrange
            var mockCatalogItemManager  = new Mock <ICatalogItemManager>();
            var mockExchangeRateService = new Mock <IExchangeRateService>();

            mockExchangeRateService.Setup(x => x.GetRateFor(It.IsAny <string>(), It.IsAny <string>())).Throws <TimeoutException>();

            _sut = new SaleCreator(mockCatalogItemManager.Object, mockExchangeRateService.Object);
            // Act
            var result = _sut.CalculateTotal("Filofax", "CDN", 2);

            // Assert
            Assert.That(result, Is.EqualTo("Sorry there was a problem obtaining an exchange rate"));
        }
コード例 #9
0
        public void CalculateTotal_ReturnsTheCorrectTotalStringForTestCase(string name, string exchange1, string exchange2, int expectedExchange, int expectedTotal)
        {
            // Arrange
            var mockCatalogItemManager = new Mock <ICatalogItemManager>();

            mockCatalogItemManager.Setup(x => x.GetPrice("Filofax")).Returns(10.00m);

            var mockExchangeRateService = new Mock <IExchangeRateService>();

            mockExchangeRateService.Setup(x => x.GetRateFor("GBP", "CDN")).Returns(1.50m);

            _sut = new SaleCreator(mockCatalogItemManager.Object, mockExchangeRateService.Object);
            // Act
            var result = _sut.CalculateTotal(name, exchange2, 2);

            // Assert
            Assert.That(result, Is.EqualTo($"Total price: {expectedTotal} {exchange2} at {expectedExchange} per {exchange1}"));
        }
コード例 #10
0
        public void CalculateTotal_ReturnsTheCorrectTotalString()
        {
            // Arrange
            var mockCatalogItemManager = new Mock <ICatalogItemManager>();

            mockCatalogItemManager.Setup(x => x.GetPrice("Filofax")).Returns(10.00m);

            var mockExchangeRateService = new Mock <IExchangeRateService>();

            mockExchangeRateService.Setup(x => x.GetRateFor("GBP", "CDN")).Returns(1.50m);

            _sut = new SaleCreator(mockCatalogItemManager.Object, mockExchangeRateService.Object);
            // Act
            var result = _sut.CalculateTotal("Filofax", "CDN", 2);

            // Assert
            Assert.That(result, Is.EqualTo("Total price: 30.00 CDN at 1.50 per GBP"));
        }