コード例 #1
0
        public void post_should_return_bad_request_if_item_null()
        {
            ShoppingListItemCreate request = null;

            var result = _controller.Post(request);

            Assert.AreEqual(result.GetType(), typeof(BadRequestResult));
        }
コード例 #2
0
        public void post_should_not_save_to_repository_if_item_null()
        {
            ShoppingListItemCreate request = null;

            var result = _controller.Post(request);

            _repositoryMock.Verify(x => x.Insert(request), Times.Never);
        }
コード例 #3
0
        public ShoppingListItem Insert(ShoppingListItemCreate request)
        {
            var item = new ShoppingListItem {
                ItemName = request.ItemName, Quantity = request.Quantity
            };

            _dataStore.Add(item);
            return(item);
        }
コード例 #4
0
        public void post_should_return_bad_request_if_item_name_is_empty()
        {
            var request = new ShoppingListItemCreate {
                ItemName = ""
            };

            var result = _controller.Post(request);

            Assert.AreEqual(result.GetType(), typeof(BadRequestResult));
        }
コード例 #5
0
        public void should_insert_and_return_shopping_list_item()
        {
            var repository = new ShoppingListRepository();
            var item       = new ShoppingListItemCreate {
                ItemName = "Item1", Quantity = 1
            };
            ShoppingListItem createdItem = repository.Insert(item);

            Assert.AreEqual(createdItem.ItemName, "Item1");
            Assert.AreEqual(createdItem.Quantity, 1);
        }
コード例 #6
0
        public void should_insert_shopping_list_item_to_data_store()
        {
            var repository = new ShoppingListRepository();
            var item       = new ShoppingListItemCreate {
                ItemName = "Item1", Quantity = 1
            };

            repository.Insert(item);

            Assert.AreEqual(_dataStore.Count, 1);
            Assert.AreEqual(_dataStore[0].ItemName, "Item1");
            Assert.AreEqual(_dataStore[0].Quantity, 1);
        }
コード例 #7
0
        public void post_should_return_bad_request_if_item_already_exists()
        {
            var request = new ShoppingListItemCreate {
                ItemName = "Item1", Quantity = 1
            };

            var repositoryItem = new ShoppingListItem {
                ItemName = "Item1", Quantity = 1
            };

            _repositoryMock.Setup(x => x.GetItem(request.ItemName)).Returns(repositoryItem);

            var result = _controller.Post(request);

            Assert.AreEqual(result.GetType(), typeof(BadRequestResult));
        }
コード例 #8
0
        public void post_should_save_to_repository_if_valid_item()
        {
            var request = new ShoppingListItemCreate {
                ItemName = "Item1", Quantity = 1
            };

            var repositoryItem = new ShoppingListItem {
                ItemName = "Item1", Quantity = 1
            };

            _repositoryMock.Setup(x => x.Insert(request)).Returns(repositoryItem);

            var result = _controller.Post(request);

            _repositoryMock.Verify(x => x.Insert(request));
        }
コード例 #9
0
        public IHttpActionResult Post(ShoppingListItemCreate request)
        {
            if (request == null || string.IsNullOrWhiteSpace(request.ItemName))
            {
                return(BadRequest());
            }

            var doesAlreadyExist = (_repository.GetItem(request.ItemName) != null);

            if (doesAlreadyExist)
            {
                return(BadRequest());
            }

            var createdItem = _repository.Insert(request);

            return(Created($"api/shoppinglist/?itemname={createdItem.ItemName}", createdItem));
        }
コード例 #10
0
        public void should_post_shopping_list_item_and_return_created_with_correct_content()
        {
            var request = new ShoppingListItemCreate {
                ItemName = "Item1", Quantity = 1
            };

            var repositoryItem = new ShoppingListItem {
                ItemName = "Item1", Quantity = 1
            };

            _repositoryMock.Setup(x => x.Insert(request)).Returns(repositoryItem);

            var result = _controller.Post(request);

            Assert.AreEqual(result.GetType(), typeof(CreatedNegotiatedContentResult <ShoppingListItem>));
            var createdResult = (CreatedNegotiatedContentResult <ShoppingListItem>)result;

            Assert.AreEqual(createdResult.Location, $"api/shoppinglist/?itemname={request.ItemName}");
            Assert.AreEqual(createdResult.Content.ItemName, request.ItemName);
            Assert.AreEqual(createdResult.Content.Quantity, request.Quantity);
        }