public void Purchase_Post_Success()
        {
            //Arrange
            _claim    = new Claim("UserId", _correctUserId);
            _identity = Mock.Of <ClaimsIdentity>(ci => ci.FindFirst(It.IsAny <string>()) == _claim);
            _purchaseController.User = Mock.Of <IPrincipal>(ip => ip.Identity == _identity);
            _purchaseLogic.Setup(x => x.Purchase(lstPurchaseModel, Convert.ToInt32(_correctUserId)));

            //Acts
            var response = _purchaseController.Post(lstPurchaseModel);

            //Assert
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
        }
Exemple #2
0
        public void PostPurchase_InvalidItemNameReturnsError()
        {
            var repo       = new MockItemRepository();
            var controller = new PurchaseController(repo);
            var itemName   = "NotAnItem";
            var result     = controller.Post(itemName);

            Assert.IsInstanceOfType(result, typeof(BadRequestErrorMessageResult));
        }
Exemple #3
0
        public void PostPurchase_DecrementsInventory()
        {
            var repo          = new MockItemRepository();
            var startingCount = repo.GetInventory().Count;
            var controller    = new PurchaseController(repo);
            var itemName      = "TunaMelt";
            var item          = controller.Post(itemName) as CreatedAtRouteNegotiatedContentResult <IItem>;
            var newCount      = repo.GetInventory().Count;

            Assert.IsTrue(startingCount == (newCount + 1));
        }
Exemple #4
0
        public void PostPurchase_ReturnsSame()
        {
            var repo       = new MockItemRepository();
            var controller = new PurchaseController(repo);
            var itemName   = "TunaMelt";
            var item       = controller.Post(itemName) as CreatedAtRouteNegotiatedContentResult <IItem>;

            Assert.IsNotNull(item);
            Assert.AreEqual(item.RouteName, "GetItemByName");
            Assert.AreEqual(item.RouteValues["itemName"], item.Content.Name);
            Assert.AreEqual(item.Content.Name, itemName);
        }
Exemple #5
0
        public void PostPurchase_ReturnsPopulatedItem()
        {
            var repo       = new MockItemRepository();
            var controller = new PurchaseController(repo);
            var itemName   = "TunaMelt";
            var response   = controller.Post(itemName) as CreatedAtRouteNegotiatedContentResult <IItem>;

            Assert.IsNotNull(response);

            var newItem = response.Content;

            Assert.AreEqual(newItem.Name, itemName);
            Assert.AreEqual(newItem.Description, "Tuna melt on rye");
            Assert.AreEqual(newItem.Price, 5);
        }
Exemple #6
0
        public void IntegrationNonexistentItemIdReturnsItemNotFound()
        {
            // Arrange
            InventoryController inventoryController = new InventoryController();
            PurchaseController  purchaseController  = new PurchaseController();
            IEnumerable <Item>  inventory           = inventoryController.Get();
            int nonexistentItemId = 0;

            foreach (Item i in inventory)
            {
                if (i.ItemId >= nonexistentItemId)
                {
                    nonexistentItemId = i.ItemId + 1;
                }
            }

            // Act
            PurchaseResults result = purchaseController.Post(nonexistentItemId);

            // Assert
            Assert.AreEqual(PurchaseResults.ItemNotFound, result, "API should have reported item not found.");
        }
Exemple #7
0
        public void IntegrationPurchasingOutOfStockItemReturnsOutOfStock()
        {
            // Arrange
            InventoryController inventoryController = new InventoryController();
            PurchaseController  purchaseController  = new PurchaseController();
            IEnumerable <Item>  inventory           = inventoryController.Get();
            Item outOfStockItem = null;

            foreach (Item i in inventory)
            {
                if (i.Quantity == 0)
                {
                    outOfStockItem = i;
                    break;
                }
            }

            // Act
            Assert.IsNotNull(outOfStockItem, "There should be an out of stock item in the test database.");
            PurchaseResults result = purchaseController.Post(outOfStockItem.ItemId);

            // Assert
            Assert.AreEqual(PurchaseResults.OutOfStock, result, "API should have reported out of stock item.");
        }
Exemple #8
0
        public void IntegrationPurchasingInStockItemReturnsInStock()
        {
            // Arrange
            InventoryController inventoryController = new InventoryController();
            PurchaseController  purchaseController  = new PurchaseController();
            IEnumerable <Item>  inventory           = inventoryController.Get();
            Item inStockItem = null;

            foreach (Item i in inventory)
            {
                if (i.Quantity > 0)
                {
                    inStockItem = i;
                    break;
                }
            }

            // Act
            Assert.IsNotNull(inStockItem, "There should be an in stock item in the test database.");
            PurchaseResults result = purchaseController.Post(inStockItem.ItemId);

            // Assert
            Assert.AreEqual(PurchaseResults.ItemPurchased, result, "Item should have been successfully purchased.");
        }