public void Get_WithoutParameters_ReturnsAStringList()
        {
            Mock <ILogger <SkuController> > logger = new Mock <ILogger <SkuController> >();
            Mock <ISkuService> service             = new Mock <ISkuService>();

            service.Setup(o => o.ListSkus()).Returns(oneSku);
            SkuController sut = new SkuController(service.Object, commonFakes.Mapper);

            ActionResult <List <string> > actionResult = sut.Get();
            List <string> result = (List <string>)actionResult.Value;

            Assert.IsTrue(result is List <string>, "result is not a 'string list'");
        }
        public void Get_CallsListSkusMethodFromServicesLayer_WichReturnsAnEmptyList()
        {
            Mock <ILogger <SkuController> > logger = new Mock <ILogger <SkuController> >();
            Mock <ISkuService> service             = new Mock <ISkuService>();

            service.Setup(m => m.ListSkus()).Returns(emptySkus);
            SkuController sut = new SkuController(service.Object, commonFakes.Mapper);

            ActionResult <List <string> > actionResult = sut.Get();
            List <string> result = (List <string>)actionResult.Value;

            Assert.AreEqual(emptySkus.Count, result.Count);
        }
        public void Get_WithoutParameters_InvokesListSkusMethodFromServicesLayer()
        {
            Mock <ILogger <SkuController> > logger = new Mock <ILogger <SkuController> >();
            Mock <ISkuService> service             = new Mock <ISkuService>();

            service.Setup(m => m.ListSkus()).Returns(oneSku);
            SkuController sut = new SkuController(service.Object, commonFakes.Mapper);


            ActionResult <List <string> > actionResult = sut.Get();
            List <string> result = (List <string>)actionResult.Value;

            service.Verify(m => m.ListSkus(), Times.Once());
        }
        public async Task Get_WithAnSkuId_InvokesGetTransactionsBySkuMethodFromServicesLayer()
        {
            Mock <ILogger <SkuController> > logger = new Mock <ILogger <SkuController> >();
            Mock <ISkuService> service             = new Mock <ISkuService>();

            service.Setup(m => m.GetTransactionsBySku(CommonFakes.firstSku)).Returns(Task.FromResult(fullSku));
            SkuController sut = new SkuController(service.Object, commonFakes.Mapper);

            ActionResult <Sku> actionResult = await sut.Get(CommonFakes.firstSku);

            Sku result = (Sku)actionResult.Value;

            service.Verify(m => m.GetTransactionsBySku(CommonFakes.firstSku), Times.Once);
        }
        public async Task Get_CallsGetTransactionsBySkuMethodFromServicesLayer_WichThrowsAnException()
        {
            Mock <ILogger <SkuController> > logger = new Mock <ILogger <SkuController> >();
            Mock <ISkuService> service             = new Mock <ISkuService>();

            service.Setup(m => m.GetTransactionsBySku(CommonFakes.firstSku)).Throws(exception);
            SkuController sut = new SkuController(service.Object, commonFakes.Mapper);

            try
            {
                await sut.Get(CommonFakes.firstSku);

                Assert.IsTrue(false, "No exception thrown. Exception exception was expected.");
            }
            catch (Exception result)
            {
                Assert.AreSame(exception, result);
            }
        }
        public async Task Get_WithAnSkuId_ReturnsAFullSkuData()
        {
            Mock <ILogger <SkuController> > logger = new Mock <ILogger <SkuController> >();
            Mock <ISkuService> service             = new Mock <ISkuService>();

            service.Setup(m => m.GetTransactionsBySku(CommonFakes.firstSku)).Returns(Task.FromResult(fullSku));
            SkuController sut = new SkuController(service.Object, commonFakes.Mapper);

            ActionResult <Sku> actionResult = await sut.Get(CommonFakes.firstSku);

            Sku result = (Sku)actionResult.Value;

            Assert.AreEqual(fullSku.Name, result.Name);
            Assert.AreEqual(fullSku.Total, result.Total);
            Assert.AreEqual(fullSku.Transactions.Count, result.Transactions.Count);
            Assert.AreEqual(fullSku.Transactions.First().Sku, result.Transactions.First().Sku);
            Assert.AreEqual(fullSku.Transactions.First().Amount, result.Transactions.First().Amount);
            Assert.AreEqual(fullSku.Transactions.First().Currency, result.Transactions.First().Currency);
        }
        public void Get_CallsListSkusMethodFromServicesLayer_WichThrowsAnException()
        {
            Mock <ILogger <SkuController> > logger = new Mock <ILogger <SkuController> >();
            Mock <ISkuService> service             = new Mock <ISkuService>();

            service.Setup(m => m.ListSkus()).Throws(exception);
            SkuController sut = new SkuController(service.Object, commonFakes.Mapper);

            try
            {
                sut.Get();

                Assert.IsTrue(false, "No exception thrown. Exception exception was expected.");
            }
            catch (Exception result)
            {
                Assert.AreSame(exception, result);
            }
        }