public async Task Post_CreationSucceeds_ShouldReturnCreatedFoodLocation()
        {
            Fixture fixture = new Fixture();

            var food = fixture.Create <Food>();

            var foodRepositoryStub = new Mock <IFoodRepository>(MockBehavior.Strict);

            foodRepositoryStub.SetupSequence(obj => obj.FindByDescriptionAsync(It.IsAny <string>()))
            .ReturnsAsync(null)
            .ReturnsAsync(food);
            foodRepositoryStub.Setup(obj => obj.Create(food));
            foodRepositoryStub.Setup(obj => obj.SaveChangedAsync()).Returns(Task.CompletedTask);

            var locationUrl   = "http://location/";
            var urlHelperStub = new Mock <UrlHelper>(MockBehavior.Strict);

            urlHelperStub.Setup(obj => obj.Link(It.IsAny <string>(), It.IsAny <object>())).Returns(locationUrl);

            FoodsController controller = new FoodsController(foodRepositoryStub.Object);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();
            controller.Url           = urlHelperStub.Object;

            var typedResult = await controller.PostAsync(food) as CreatedNegotiatedContentResult <Food>;

            Assert.AreSame(locationUrl, typedResult.Location.AbsoluteUri);
        }
示例#2
0
        public void Delete_return_bad_test()
        {
            FoodsController controller = GetController(doNotThrowException);
            var             response   = controller.Delete("Invalid_food").GetType().Name;

            Assert.AreEqual(response, "NotFoundObjectResult");
        }
        public async Task Post_CreationSucceeds_ShouldReturnCreatedFood()
        {
            Fixture fixture = new Fixture();

            var food = fixture.Create <Food>();

            var foodRepositoryStub = new Mock <IFoodRepository>(MockBehavior.Strict);

            foodRepositoryStub.SetupSequence(obj => obj.FindByDescriptionAsync(It.IsAny <string>()))
            .ReturnsAsync(null)
            .ReturnsAsync(food);
            foodRepositoryStub.Setup(obj => obj.Create(food));
            foodRepositoryStub.Setup(obj => obj.SaveChangedAsync()).Returns(Task.CompletedTask);

            var urlHelperStub = new Mock <UrlHelper>();

            urlHelperStub.Setup(obj => obj.Link(It.IsAny <string>(), It.IsAny <object>())).Returns(string.Empty);

            FoodsController controller = new FoodsController(foodRepositoryStub.Object);

            controller.Url = urlHelperStub.Object;

            var typedResult = await controller.PostAsync(food) as CreatedNegotiatedContentResult <Food>;

            Assert.IsNotNull(typedResult);

            Assert.AreSame(food, typedResult.Content);
        }
示例#4
0
        public void Delete_return_ok_test()
        {
            FoodsController controller = GetController(doNotThrowException);
            var             response   = controller.Delete("Registered_food").GetType().Name;

            Assert.AreEqual(response, "OkObjectResult");
        }
示例#5
0
        public void Delete_catchExeception()
        {
            FoodsController controller = GetController(throwException);
            var             response   = controller.Delete("Registered_food") as BadRequestObjectResult;
            var             message    = response.Value.GetType().Name;

            Assert.AreEqual("Exception", message);
        }
示例#6
0
        public void GetAll_return_all_categories()
        {
            FoodsController controller = GetController(doNotThrowException);
            var             result     = controller.GetAll() as OkObjectResult;
            var             value      = result.Value as FoodsResponse;

            Assert.AreEqual(value.Foods.Count, 2);
        }
示例#7
0
        public void GetByName_return_food()
        {
            FoodsController controller = GetController(doNotThrowException);
            var             result     = controller.GetByName("test_food_name") as OkObjectResult;
            FoodsResponse   response   = result.Value as FoodsResponse;

            Assert.IsNotNull(response.Foods[0]);
        }
示例#8
0
        public void GetByName_catch_exception()
        {
            FoodsController controller = GetController(throwException);
            var             result     = controller.GetByName("test_food_name") as BadRequestObjectResult;
            var             message    = result.Value.GetType().Name;

            Assert.AreEqual(message, "Exception");
        }
示例#9
0
        public void CreateFood_return_bad_test()
        {
            FoodsController controller = GetController(doNotThrowException);
            EditedFood      food       = GetInvalidFood();
            var             response   = controller.CreateFood(food);

            Assert.AreEqual("NotFoundObjectResult", response.GetType().Name);
        }
示例#10
0
        public void Update_return_bad_test()
        {
            FoodsController controller = GetController(doNotThrowException);
            EditedFood      editedFood = GetInvalidFood();
            var             response   = controller.Update(editedFood).GetType().Name;

            Assert.AreEqual(response, "NotFoundObjectResult");
        }
示例#11
0
        public void CreateFood_CatchException_test()
        {
            FoodsController controller = GetController(throwException);
            EditedFood      food       = GetFood();
            var             response   = controller.CreateFood(food) as BadRequestObjectResult;
            var             message    = response.Value.GetType().Name;

            Assert.AreEqual("Exception", message);
        }
示例#12
0
 void Awake()
 {
     loaded = false;
     if (socket == null)
     {
         ter    = GetComponent <CreateTerrainMesh>();
         obs    = GetComponent <ObstaclesController>();
         foods  = GetComponent <FoodsController>();
         socket = GetComponent <EESocketIOComponent>();
     }
 }
示例#13
0
        public FoodsControllerTests()
        {
            _repository = new Mock <IFoodRepository>();
            _urlHelper  = new Mock <IUrlHelper>();

            _controller = new FoodsController(_urlHelper.Object, _repository.Object)
            {
                ControllerContext = new ControllerContext
                {
                    HttpContext = new DefaultHttpContext()
                }
            };
        }
        public async Task GetById_FoodDoesntExist_ShouldReturnNotFound()
        {
            Fixture fixture = new Fixture();

            var foodRepositoryStub = new Mock <IFoodRepository>(MockBehavior.Strict);

            foodRepositoryStub.Setup(obj => obj.FindByIdAsync(It.IsAny <int>())).ReturnsAsync((Food)null);

            FoodsController controller = new FoodsController(foodRepositoryStub.Object);

            var typedResult = await controller.GetAsync(fixture.Create <int>()) as NotFoundResult;

            Assert.IsNotNull(typedResult);
        }
        public async Task Post_CreatingDuplicate_ShouldReturnConflict()
        {
            Fixture fixture = new Fixture();

            var foodRepositoryStub = new Mock <IFoodRepository>(MockBehavior.Strict);

            foodRepositoryStub.Setup(obj => obj.FindByDescriptionAsync(It.IsAny <string>())).ReturnsAsync(fixture.Create <Food>());

            FoodsController controller = new FoodsController(foodRepositoryStub.Object);

            var typedResult = await controller.PostAsync(fixture.Create <Food>()) as ConflictResult;

            Assert.IsNotNull(typedResult);
        }
        public async Task Get_ShouldReturnAllFoundFoods()
        {
            Fixture fixture = new Fixture();
            var     foods   = fixture.CreateMany <Food>();

            var foodRepositoryStub = new Mock <IFoodRepository>(MockBehavior.Strict);

            foodRepositoryStub.Setup(obj => obj.GetAllAsync()).ReturnsAsync(foods);

            FoodsController controller = new FoodsController(foodRepositoryStub.Object);

            var result = await controller.GetAsync();

            CollectionAssert.AreEqual(foods, result);
        }
        public async Task Post_CreationFails_ShouldReturnBadRequest()
        {
            Fixture fixture = new Fixture();

            var foodRepositoryStub = new Mock <IFoodRepository>(MockBehavior.Strict);

            foodRepositoryStub.Setup(obj => obj.FindByDescriptionAsync(It.IsAny <string>())).ReturnsAsync((Food)null);
            foodRepositoryStub.Setup(obj => obj.Create(It.IsAny <Food>()));
            foodRepositoryStub.Setup(obj => obj.SaveChangedAsync()).Throws <RepositoryException>();

            FoodsController controller = new FoodsController(foodRepositoryStub.Object);

            var typedResult = await controller.PostAsync(fixture.Create <Food>()) as BadRequestResult;

            Assert.IsNotNull(typedResult);
        }
        public async Task Delete_FoodExistsAndDeletionSucceeds_ShouldDeleteFood()
        {
            Fixture fixture = new Fixture();

            var foodId = fixture.Create <int>();
            var food   = fixture.Build <Food>().With(f => f.Id, foodId).Create();

            var foodRepositoryMock = new Mock <IFoodRepository>(MockBehavior.Strict);

            foodRepositoryMock.Setup(obj => obj.FindByIdAsync(foodId)).ReturnsAsync(food);
            foodRepositoryMock.Setup(obj => obj.DeleteAsync(foodId)).Returns(Task.CompletedTask);
            foodRepositoryMock.Setup(obj => obj.SaveChangedAsync()).Returns(Task.CompletedTask);

            FoodsController controller = new FoodsController(foodRepositoryMock.Object);

            await controller.DeleteAsync(foodId);

            foodRepositoryMock.Verify(obj => obj.DeleteAsync(foodId));
        }
        public async Task Delete_FoodExistsAndDeletionSucceeds_ShouldReturnOk()
        {
            Fixture fixture = new Fixture();

            var foodId = fixture.Create <int>();
            var food   = fixture.Build <Food>().With(f => f.Id, foodId).Create();

            var foodRepositoryStub = new Mock <IFoodRepository>(MockBehavior.Strict);

            foodRepositoryStub.Setup(obj => obj.FindByIdAsync(foodId)).ReturnsAsync(food);
            foodRepositoryStub.Setup(obj => obj.DeleteAsync(foodId)).Returns(Task.CompletedTask);
            foodRepositoryStub.Setup(obj => obj.SaveChangedAsync()).Returns(Task.CompletedTask);

            FoodsController controller = new FoodsController(foodRepositoryStub.Object);

            var typedResult = await controller.DeleteAsync(foodId) as OkResult;

            Assert.IsNotNull(typedResult);
        }
        public async Task GetById_FoodExists_ShouldReturnFoundFood()
        {
            Fixture fixture = new Fixture();

            var foodId = fixture.Create <int>();
            var food   = fixture.Build <Food>().With(f => f.Id, foodId).Create();

            var foodRepositoryStub = new Mock <IFoodRepository>(MockBehavior.Strict);

            foodRepositoryStub.Setup(obj => obj.FindByIdAsync(foodId)).ReturnsAsync(food);
            foodRepositoryStub.Setup(obj => obj.SaveChangedAsync());

            FoodsController controller = new FoodsController(foodRepositoryStub.Object);

            var typedResult = await controller.GetAsync(foodId) as OkNegotiatedContentResult <Food>;

            Assert.IsNotNull(typedResult);
            Assert.AreSame(food, typedResult.Content);
        }
        public void Food_crud_test()
        {
            using (ApplicationDbContext context = new ApplicationDbContext(builder.Options))
            {
                //Steps to ensure sqlite database exist
                context.Database.OpenConnection();
                context.Database.EnsureCreated();

                //Create foods api controller
                var foods_api = new FoodsController(context);

                //Use api controller and get list of foods.
                Task <ActionResult <IEnumerable <Food> > > testGetAll = foods_api.GetFoods();

                //Test to see if list is empty before entry
                Assert.Empty(testGetAll.Result.Value);

                //Create food test object
                Food testFood = new Food();
                testFood.Id   = "123";
                testFood.Name = "Test1";

                //Post food to using api controller
                Task <ActionResult <Food> > testPost = foods_api.PostFood(testFood);

                //Use api controller and get list of foods.
                testGetAll = foods_api.GetFoods();

                //Test to see if list count is 1
                Assert.Single(testGetAll.Result.Value);

                //Test to see if data is correct
                Assert.Equal("Test1", testGetAll.Result.Value.Where(f => f.Id == "123").First().Name);

                //Get food by id
                Task <ActionResult <Food> > testGet = foods_api.GetFood("123");

                //Test to see if return data is correct
                Assert.Equal("Test1", testGet.Result.Value.Name);

                //Change food name
                testFood.Name = "Test2";

                //Get food by id
                Task <IActionResult> testPut = foods_api.PutFood("123", testFood);

                //Get food by id
                testGet = foods_api.GetFood("123");

                //Test to see if return data is correct
                Assert.Equal("Test2", testGet.Result.Value.Name);

                //Delete the test food
                Task <ActionResult <Food> > testDelete = foods_api.DeleteFood("123");

                //Use api controller and get list of foods.
                testGetAll = foods_api.GetFoods();

                //Test to see if list is empty before entry
                Assert.Empty(testGetAll.Result.Value);
            }
        }
示例#22
0
 public FoodControllerSpecs()
 {
     this.controller = new FoodsController();
 }
示例#23
0
 public ControllerTests()
 {
     _mockApp         = new Mock <ApplicationDbContext>();
     _foodsController = new FoodsController(_mockApp.Object);
 }