public void TestDeleteSportReturnsToIndexMethod()
        {
            //Arrange
            var sports = new[]
            {
                new Sport {
                    Name = "Voetbal", SportId = 1
                },
                new Sport {
                    Name = "Basketbal", SportId = 2
                },
                new Sport {
                    Name = "Hockey", SportId = 3
                },
                new Sport {
                    Name = "Volleybal", SportId = 4
                },
            };

            var mockManager  = new Mock <ISportManager>();
            var mockTempData = new Mock <ITempDataDictionary>();
            var controller   = new SportController(mockManager.Object)
            {
                TempData = mockTempData.Object
            };

            mockManager.Setup(x => x.DeleteSport(It.IsAny <Sport>())).Throws <Exception>();
            mockManager.Setup(x => x.Read(It.IsAny <int>())).Returns(sports[1]);

            //Act
            var result = controller.Delete(sports[1].SportId);

            //Assert
            Assert.IsType(typeof(RedirectToActionResult), result);
        }
        public void Post_Valid_Test()
        {
            // Arrange
            Sport sportObjAsInput = new Sport();

            sportObjAsInput.name   = "Sport 1";
            sportObjAsInput.userId = 1;

            var mockRepository = new Mock <ISportRepository>();

            mockRepository.Setup(x => x.InsertSport(sportObjAsInput))
            .Returns(1);

            var controller = new SportController(mockRepository.Object);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();

            // Act
            HttpResponseMessage response = controller.Post(sportObjAsInput);

            // Assert
            string responseJSONStr = response.Content.ReadAsStringAsync().Result;
            string responseStr     = Helper.Deserialize <string>(responseJSONStr);

            Assert.IsNotNull(response);
            Assert.AreEqual(response.StatusCode, HttpStatusCode.OK);
            Assert.AreEqual(responseStr, "Sport added successfully.");
        }
        public void IndexMethodWithSortOrderDescendingReturnsCorrectCollectionOfSportsSortedDescending()
        {
            //Arrange
            var sports = new[]
            {
                new Sport {
                    Name = "Voetbal"
                },
                new Sport {
                    Name = "Basketbal"
                },
                new Sport {
                    Name = "Hockey"
                },
                new Sport {
                    Name = "Volleybal"
                }
            };
            var mockManager = new Mock <ISportManager>();
            var controller  = new SportController(mockManager.Object);


            mockManager.Setup(a => a.SportsList()).Returns(sports);

            //Act
            var result   = controller.Index("name_desc", null, null, 1);
            var pageList = (PagedList <Sport>)result.ViewData.Model;

            //Assert
            Assert.IsType(typeof(PagedList <Sport>), result.ViewData.Model);
            Assert.Same("Volleybal", pageList[0].Name);
        }
        public void TestUpdateSportObjectRedirectsToIndexAction()
        {
            //Arrange

            var model = new SportObjectModel
            {
                Sport = new Sport {
                    SportId = 1, Name = "testsport"
                },

                SportObject = new SportObject {
                    SportObjectId = 3, Name = "TestOBJECT"
                }
            };
            var mockManager  = new Mock <ISportManager>();
            var mockTempData = new Mock <ITempDataDictionary>();
            var controller   = new SportController(mockManager.Object)
            {
                TempData = mockTempData.Object
            };

            mockManager.Setup(x => x.UpdateSportObject(It.IsAny <SportObject>())).Throws <Exception>();

            var objectToTest = new SportObject
            {
                SportObjectId = 3,
                Name          = "Test"
            };

            //Act
            var result = controller.UpdateObject(objectToTest);

            //Assert
            Assert.IsType(typeof(RedirectToActionResult), result);
        }
        public void TestAddInvalidSportObjectReturnsCurrentView()
        {
            //Arrange

            var model = new SportObjectModel
            {
                Sport = new Sport {
                    SportId = 1, Name = "testsport"
                },

                SportObject = new SportObject {
                    SportObjectId = 3, Name = "TestOBJECT"
                }
            };
            var mockManager  = new Mock <ISportManager>();
            var mockTempData = new Mock <ITempDataDictionary>();
            var controller   = new SportController(mockManager.Object)
            {
                TempData = mockTempData.Object
            };

            controller.ModelState.AddModelError("", "");
            mockManager.Setup(x => x.AddSportObject(It.IsAny <Sport>(), It.IsAny <SportObject>())).Throws <Exception>();

            //Act
            var result = (ViewResult)controller.AddObject(model, 1);

            //Asert
            Assert.True(result.ViewName == "AddObject");
        }
        public void Put_InValid_UserId_Test()
        {
            // Arrange
            Sport sportObjAsInput = new Sport();

            sportObjAsInput.id     = 1;
            sportObjAsInput.name   = "Sport 1";
            sportObjAsInput.userId = -1;

            var mockRepository = new Mock <ISportRepository>();

            var controller = new SportController(mockRepository.Object);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();

            // Act
            HttpResponseMessage response = controller.Put(sportObjAsInput);

            // Assert
            string responseJSONStr = response.Content.ReadAsStringAsync().Result;
            string responseStr     = Helper.Deserialize <string>(responseJSONStr);

            Assert.IsNotNull(response);
            Assert.AreEqual(response.StatusCode, HttpStatusCode.PartialContent);
            Assert.AreEqual(responseStr, "User Id is invalid.");
        }
        public void TestUpdateInvalidSportObjectRedirectsToIndexAction()
        {
            var model = new SportObjectModel
            {
                Sport = new Sport {
                    SportId = 1, Name = "testsport"
                },

                SportObject = new SportObject {
                    SportObjectId = 3, Name = "TestOBJECT"
                }
            };
            var mockManager  = new Mock <ISportManager>();
            var mockTempData = new Mock <ITempDataDictionary>();
            var controller   = new SportController(mockManager.Object)
            {
                TempData = mockTempData.Object
            };

            controller.ModelState.AddModelError("", "");
            mockManager.Setup(x => x.UpdateSportObject(It.IsAny <SportObject>())).Throws <Exception>();

            var objectToTest = new SportObject
            {
                SportObjectId = 3,
                Name          = "Test"
            };

            //Act
            var result = (ViewResult)controller.UpdateObject(objectToTest);

            //Assert
            Assert.True(result.ViewName == "UpdateObject");
        }
        public void TestDeleteSportObjectReturnsToIndexMethod()
        {
            //Arrange
            var sportObjects = new[]
            {
                new SportObject {
                    Name = "testobject 1"
                },
                new SportObject {
                    Name = "testobject 2"
                },
                new SportObject {
                    Name = "testobject 3"
                },
                new SportObject {
                    Name = "testobject 4"
                },
            };
            var mockManager  = new Mock <ISportManager>();
            var mockTempData = new Mock <ITempDataDictionary>();
            var controller   = new SportController(mockManager.Object)
            {
                TempData = mockTempData.Object
            };

            mockManager.Setup(x => x.DeleteSportObject(It.IsAny <SportObject>())).Throws <Exception>();
            mockManager.Setup(x => x.ReadSportObject(It.IsAny <int>())).Returns(sportObjects[1]);
            //Act
            var results = controller.DeleteObject(sportObjects[1].SportObjectId);

            //Assert
            Assert.IsType(typeof(RedirectToActionResult), results);
        }
        public void IndexMethodWithSearchStringReturnsCorrectCollectionOfSports()
        {
            //Arrange
            var sports = new[]
            {
                new Sport {
                    Name = "Voetbal"
                },
                new Sport {
                    Name = "Basketbal"
                },
                new Sport {
                    Name = "Hockey"
                },
                new Sport {
                    Name = "Volleybal"
                }
            };
            var mockManager = new Mock <ISportManager>();

            mockManager.Setup(x => x.SportsList()).Returns(sports);
            var controller = new SportController(mockManager.Object);

            //Act
            var result = controller.Index(null, null, "bal", 1);

            //Assert
            Assert.IsType(typeof(PagedList <Sport>), result.ViewData.Model);
            Assert.Equal(3, result.ViewData.Count);
        }
        public void TestAddInvalidSportReturnsCurrentView()
        {
            //Arrange
            var dummysport = new Sport
            {
                Name = "KongBall",
            };



            var mockManager  = new Mock <ISportManager>();
            var mockTempData = new Mock <ITempDataDictionary>();
            var controller   = new SportController(mockManager.Object)
            {
                TempData = mockTempData.Object
            };

            controller.ModelState.AddModelError("", "");

            mockManager.Setup(x => x.AddSport(It.IsAny <Sport>())).Throws <Exception>();

            //Act
            var result = (ViewResult)controller.Add(dummysport);

            //Assert
            Assert.True(result.ViewName == "Add");
        }
        public void AmountOfPagesOnIndexMethodIsCorrect()
        {
            //Arrange
            var sports = new[]
            {
                new Sport {
                    Name = "Voetbal"
                },
                new Sport {
                    Name = "Basketbal"
                },
                new Sport {
                    Name = "Hockey"
                },
                new Sport {
                    Name = "Volleybal"
                },
                new Sport {
                    Name = "Trefbal"
                },
                new Sport {
                    Name = "Tennis"
                },
                new Sport {
                    Name = "Darten"
                },
                new Sport {
                    Name = "Karate"
                },
                new Sport {
                    Name = "Dansen"
                },
                new Sport {
                    Name = "Yoga"
                },
                new Sport {
                    Name = "Badminton"
                },
                new Sport {
                    Name = "Softbal"
                }
            };

            var mockManager = new Mock <ISportManager>();
            var controller  = new SportController(mockManager.Object);

            mockManager.Setup(a => a.SportsList()).Returns(sports);

            //Act
            var result   = controller.Index(null, null, null, 1);
            var pageList = (PagedList <Sport>)result.ViewData.Model;

            //Assert
            Assert.Equal(2, pageList.PageCount);
            Assert.Equal(12, pageList.TotalItemCount);
        }
        public void TestUpdateInvalidSporReturnsCurrentView()
        {
            //Arrange
            var dummysport = new Sport
            {
                Name = "KongBall",
            };

            var sports = new[]
            {
                new Sport {
                    Name = "Voetbal"
                },
                new Sport {
                    Name = "Basketbal"
                },
                new Sport {
                    Name = "Hockey"
                },
                new Sport {
                    Name = "Volleybal"
                }
            };

            var mockManager  = new Mock <ISportManager>();
            var mockTempData = new Mock <ITempDataDictionary>();
            var controller   = new SportController(mockManager.Object)
            {
                TempData = mockTempData.Object
            };

            controller.ModelState.AddModelError("", "");

            mockManager.Setup(x => x.UpdateSport(It.IsAny <Sport>())).Throws <Exception>();

            //Act
            var result = (ViewResult)controller.Update(dummysport);

            //Assert
            Assert.True(result.ViewName == "Update");
        }
        public async void TestDeleteSport()
        {
            //Arrange
            var serviceMock  = new Mock <ISportService>();
            var sport2Delete = new Sport {
                Id = 1, Name = "Sport"
            };

            serviceMock.Setup(x => x.Remove(sport2Delete.Id)).Returns(Task.FromResult(result: sport2Delete.Id));
            serviceMock.Setup(y => y.GetSportByIdAsync(sport2Delete.Id)).
            Returns(Task.FromResult(sport2Delete));
            var controller = new SportController(serviceMock.Object);

            //Act
            var result = await controller.Delete(1) as ViewResult;

            var model = (Sport)result.ViewData.Model;

            //Assert
            Assert.Equal(expected: 1, actual: model.Id);
        }
        public void Post_Null_Input_Test()
        {
            // Arrange
            var mockRepository = new Mock <ISportRepository>();

            var controller = new SportController(mockRepository.Object);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();

            // Act
            HttpResponseMessage response = controller.Post(null);

            // Assert
            string responseJSONStr = response.Content.ReadAsStringAsync().Result;
            string responseStr     = Helper.Deserialize <string>(responseJSONStr);

            Assert.IsNotNull(response);
            Assert.AreEqual(response.StatusCode, HttpStatusCode.NoContent);
            Assert.AreEqual(responseStr, "Invalid JSON Passed.");
        }
        public void TestUpdateSportReturnsToIndexMethod()
        {
            //Arrange
            var dummysport = new Sport
            {
                Name = "KongBall",
            };

            var sports = new[]
            {
                new Sport {
                    Name = "Voetbal"
                },
                new Sport {
                    Name = "Basketbal"
                },
                new Sport {
                    Name = "Hockey"
                },
                new Sport {
                    Name = "Volleybal"
                }
            };

            var mockManager  = new Mock <ISportManager>();
            var mockTempData = new Mock <ITempDataDictionary>();
            var controller   = new SportController(mockManager.Object)
            {
                TempData = mockTempData.Object
            };

            mockManager.Setup(x => x.UpdateSport(It.IsAny <Sport>())).Throws <Exception>();

            //Act
            var result = controller.Update(dummysport);

            //Assert
            Assert.IsType(typeof(RedirectToActionResult), result);
        }
        public async void TestGetSportByID()
        {
            // Arrange
            int SportId     = 2;
            var mockService = new Mock <ISportService>();

            mockService.Setup(x => x.GetSportByIdAsync(SportId))
            .Returns(Task.FromResult(new Sport {
                Id = 2, Name = "Swimming"
            }));

            var controller = new SportController(mockService.Object);

            // Act
            var result = await controller.Details(SportId) as ViewResult;

            var model = (Sport)result.ViewData.Model;

            // Assert
            var contentResult = Assert.IsType <ViewResult>(result);

            Assert.Equal("Swimming", model.Name);
        }
        public void Delete_Valid_Test()
        {
            // Arrange
            var mockRepository = new Mock <ISportRepository>();

            mockRepository.Setup(x => x.DeleteSport(1))
            .Returns(true);

            var controller = new SportController(mockRepository.Object);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();

            // Act
            HttpResponseMessage response = controller.Delete(1);

            // Assert
            string responseJSONStr = response.Content.ReadAsStringAsync().Result;
            string responseStr     = Helper.Deserialize <string>(responseJSONStr);

            Assert.IsNotNull(response);
            Assert.AreEqual(response.StatusCode, HttpStatusCode.OK);
            Assert.AreEqual(responseStr, "Sport successfully deleted.");
        }
        public void Get_Sport_Test()
        {
            // Arrange
            Sport sportObjAsOutput = new Sport();

            sportObjAsOutput.name   = "Sport 1";
            sportObjAsOutput.userId = 1;

            var mockRepository = new Mock <ISportRepository>();

            mockRepository.Setup(x => x.GetSport(1))
            .Returns(sportObjAsOutput);

            var controller = new SportController(mockRepository.Object);

            controller.Request       = new HttpRequestMessage();
            controller.Configuration = new HttpConfiguration();

            // Act
            Sport sportsObj = controller.Get(1);

            // Assert
            Assert.AreEqual <Sport>(sportsObj, sportObjAsOutput);
        }
 public void Setup()
 {
     context    = TestUtils.GetMockContext();
     controller = new SportController(context);
     controller.ControllerContext.HttpContext = TestUtils.SetUserContext(context, 0);
 }