public void BowlerController_Get_ReturnsAllBowlers() { //Arrange var repositoryMock = new Mock <IUnitOfWork>(); //Setup mock to dictate behavior of repository and it will return a list of bowlers when called: repositoryMock.Setup(x => x.Repository.GetAll <Bowler>()).Returns(bowlers); //Create instance of bowler controller that will have mock repository injected; this is what will be used during the unit test var bowlerController = new BowlerController(repositoryMock.Object); //Act var result = bowlerController.Get(); //Assert repositoryMock.Verify(x => x.Repository.GetAll <Bowler>(), Times.Once); // Ensure repository was called Assert.IsNotNull(result); // Test to make sure return is not null Assert.IsInstanceOfType(result, typeof(IList <Bowler>)); // Test type CollectionAssert.AreEqual(result.ToList(), bowlers.ToList()); // Test the return is identical to what we expected }
public void BowlerController_GetWithValidName_ReturnsSingleBowlers() { //Arrange const string bowlerName = "Allen"; var repositoryMock = new Mock <IUnitOfWork>(); var singleBowler = bowlers.Where(x => x.FirstName == bowlerName).AsQueryable(); //Setup mock to dictate behavior of repository and it will return single bowler matching name used in test when called: repositoryMock.Setup(x => x.Repository.GetQuery <Bowler>(It.IsAny <Expression <Func <Bowler, bool> > >())).Returns(singleBowler); //Create instance of bowler controller that will have mock repository injected; this is what will be used during the unit test var bowlerController = new BowlerController(repositoryMock.Object); //Act var result = bowlerController.Get(bowlerName); //Assert repositoryMock.Verify(x => x.Repository.GetQuery <Bowler>(It.IsAny <Expression <Func <Bowler, bool> > >()), Times.Once); // Ensure repository was called Assert.IsNotNull(result); // Test to make sure return is not null Assert.IsInstanceOfType(result, typeof(IList <Bowler>)); // Test type CollectionAssert.AreEqual(result.ToList(), singleBowler.ToList()); // Test the return collection (with a single bowler) is identical to what we expected }