public void IndexHappyTest()
        {
            IEnumerable<Ploidy> expected = new List<Ploidy>
            {
                new Ploidy
                {
                    Id = 1,
                    Name = "orgrimmar"
                },
                new Ploidy 
                {
                    Id = 2,
                    Name = "stormwind"
                }
            };

            var mockRepo = new Mock<IPlantBreedingRepo>();
            mockRepo.Setup(r => r.GetPloidies()).Returns(expected);

            var controller = new PloidiesController(mockRepo.Object);
            var response = controller.Index() as ViewResult;

            Assert.IsNotNull(response);
            Assert.IsNotNull(response.Model as IEnumerable<Ploidy>);

            var actual = response.Model as IEnumerable<Ploidy>;

            Assert.IsTrue(Enumerable.SequenceEqual(actual, expected));
        }
        public void GETEditBadIdTest()
        {
            int? id = null;

            var controller = new PloidiesController();

            var response = controller.Edit(id) as HttpStatusCodeResult;

            Assert.IsNotNull(response);
            Assert.IsTrue(response.StatusCode == 400);
        }
        public void POSTEditHappyTest()
        {
            var ploidy = new Ploidy() { Id = 12, Name = "Banana" };
            var mockRepo = new Mock<IPlantBreedingRepo>();

            var controller = new PloidiesController(mockRepo.Object);

            var response = controller.Edit(ploidy) as RedirectToRouteResult;

            Assert.IsNotNull(response);
            Assert.IsNotNull(response.RouteValues);
            Assert.AreEqual("Index", response.RouteValues["action"]);
        }
        public void NullIndexTest()
        {
            IEnumerable<Ploidy> expected = null;

            var mockRepo = new Mock<IPlantBreedingRepo>();
            mockRepo.Setup(r => r.GetPloidies()).Returns(expected);

            var controller = new PloidiesController(mockRepo.Object);
            var response = controller.Index() as RedirectToRouteResult;

            Assert.IsNotNull(response);
            Assert.IsNotNull(response.RouteValues);
            Assert.AreEqual("Create", response.RouteValues["action"]);

        }
        public void GETEditNullTest()
        {
            int? id = 12;
            Ploidy expected = null;

            var mockRepo = new Mock<IPlantBreedingRepo>();
            mockRepo.Setup(r => r.GetPloidyById(id.Value)).Returns(expected);

            var controller = new PloidiesController(mockRepo.Object);

            var response = controller.Edit(id) as HttpNotFoundResult;

            Assert.IsNotNull(response);
            Assert.IsTrue(response.StatusCode == 404);
        }
        public void POSTEditWithBadSessionTest()
        {
            var ploidy = new Ploidy() { Id = 12, Name = "Banana" };
            var mockRepo = new Mock<IPlantBreedingRepo>();

            var controller = new PloidiesController(mockRepo.Object);
            controller.ModelState.AddModelError("test", "play them off, keyboard cat");

            var response = controller.Edit(ploidy) as ViewResult;

            Assert.IsNotNull(response);
            Assert.IsNotNull(response.Model);
            Assert.IsNotNull(response.Model as Ploidy);

            var actual = response.Model as Ploidy;

            Assert.AreEqual(ploidy, actual);
        }
        public void DetailsHappyTest()
        {
            int? id = 1;
            var expected = new Ploidy
            {
                Id = 1,
                Name = "chacha"
            };

            var mockRepo = new Mock<IPlantBreedingRepo>();
            mockRepo.Setup(r => r.GetPloidyById(id.Value)).Returns(expected);

            var controller = new PloidiesController(mockRepo.Object);

            var response = controller.Details(id) as ViewResult;

            Assert.IsNotNull(response);
            Assert.IsNotNull(response.Model);
            Assert.IsNotNull(response.Model as Ploidy);

            var actual = response.Model as Ploidy;

            Assert.AreEqual(expected, actual);
        }