public async Task CanGetDetails()
        {
            int testAdvancementId = 2;

            //Get a test controller
            GameContext gameContext = GetTestContext("test_details");

            foreach (Ability ability in Iteration1Seeder.GetSeedAbilities())
            {
                gameContext.Abilities.Add(ability);
            }
            gameContext.SaveChanges();

            AdvancementsController testController = new AdvancementsController(gameContext);

            //Run the controller's Details()
            IActionResult result = await testController.Details(testAdvancementId);

            //Assert that...
            //...we got a view back
            ViewResult viewResult = Assert.IsType <ViewResult>(result);
            //...the view is an advancement
            Advancement model = Assert.IsAssignableFrom <Advancement>(viewResult.ViewData.Model);

            //...the abilities for the advancement are present
            Assert.Equal(gameContext.Abilities.Where(a => a.AdvancementId == testAdvancementId).Count(), model.Abilities.Count());
        }
        public async Task TestDetailsWithOutOfRangeIdReturnsNotFound()
        {
            //Get a test controller
            GameContext            context        = GetTestContext("advancement_details_oob_id");
            AdvancementsController testController = new AdvancementsController(context);

            //Run the controller's Details() with an Id that isn't present in the database
            IActionResult result = await testController.Details(context.Advancements.Count() + 20);

            Assert.IsType <NotFoundResult>(result);
        }
        public async Task TestDetailsWithoutIdReturnsNotFound()
        {
            //Get a test controller
            GameContext            context        = GetTestContext("advancement_details_no_id");
            AdvancementsController testController = new AdvancementsController(context);

            //Run the controller's Details() without an Id
            IActionResult result = await testController.Details(null);

            Assert.IsType <NotFoundResult>(result);
        }
        public async Task CanGetIndex()
        {
            //Get a test controller
            GameContext            gameContext    = GetTestContext("advance_index");
            AdvancementsController testController = new AdvancementsController(gameContext);

            //Run the controller's Index()
            IActionResult result = await testController.Index();

            //Assert that...
            //...we got a view back
            ViewResult viewResult = Assert.IsType <ViewResult>(result);
            //...the view data is a set of advancements
            IEnumerable <Advancement> model = Assert.IsAssignableFrom <IEnumerable <Advancement> >(viewResult.ViewData.Model);

            //...the whole advancement set is present
            Assert.Equal(gameContext.Advancements.Count(), model.Count());
        }