public async void AddStudent_ReturnsOkResult()
        {
            //Setup
            var sampleJediStudent = new JediStudent();

            sampleJediStudent.Id      = 1;
            sampleJediStudent.Name    = "Luke Skywalker";
            sampleJediStudent.Height  = "172";
            sampleJediStudent.Mass    = "77";
            sampleJediStudent.Species = "0";
            sampleJediStudent.Planet  = "0";

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <AddStudent.CreateRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => (true, sampleJediStudent, null));

            // Initiate
            var controller = new IndividualsController(mediator.Object);
            var request    = new AddStudent.CreateRequest();

            // Result
            var resultObj = await controller.CreateStudent(request);

            var okResult = resultObj.Result as OkObjectResult;

            // Test
            Assert.NotNull(okResult);
            Assert.Equal(200, okResult.StatusCode);
            Assert.Equal(sampleJediStudent, okResult.Value);
        }
        public async void GetStudents_ReturnsOkResult()
        {
            //Setup
            var sampleJediStudent = new JediStudent();

            sampleJediStudent.Id      = 1;
            sampleJediStudent.Name    = "Luke Skywalker";
            sampleJediStudent.Height  = "172";
            sampleJediStudent.Mass    = "77";
            sampleJediStudent.Species = "0";
            sampleJediStudent.Planet  = "0";
            var jediStudents = new List <JediStudent>();

            jediStudents.Add(sampleJediStudent);

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <GetStudents.Query>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => (true, jediStudents, null));

            // Initiate
            var controller = new IndividualsController(mediator.Object);

            // Result
            var resultObj = await controller.Get();

            var okResult = resultObj as OkObjectResult;

            // Test
            Assert.NotNull(okResult);
            Assert.Equal(200, okResult.StatusCode);
            Assert.Equal(jediStudents, okResult.Value);
        }
        public async void PostEditNegativeBreedId()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Edit(2, new Individual(2, "Fido", -1));

                CheckMessage(result, $"The Breed ID must be between 1 and {int.MaxValue}.");
            }
        }
        public async void PostCreateNullName()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Create(new Individual());

                CheckMessage(result, "An Individual must have a name.");
            }
        }
        public async void PostEditNotFound()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Edit(50, new Individual(50, "Test Individual Modified", 2));

                CheckMessage(result, "The selected Individual could not be found.");
            }
        }
        public async void PostEditNullBreedId()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Edit(2, new Individual { Id = 2, Name = "Fido" });

                CheckMessage(result, "You must select a Breed for this Individual.");
            }
        }
        public async void PostCreateZeroBreedId()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Create(new Individual("Test Individual 11", 0));

                CheckMessage(result, "You must select a Breed for this Individual.");
            }
        }
        public async void PostEditNoName()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Edit(2, new Individual(2, string.Empty, 2));

                CheckMessage(result, "An Individual must have a name.");
            }
        }
        public async void GetDeleteNullId()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Delete(null);

                CheckMessage(result, "The Individual ID provided was invalid.");
            }
        }
        public async void PostEditZeroId()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Edit(0, new Individual());

                CheckMessage(result, $"The Individual ID must be between 1 and {int.MaxValue}.");
            }
        }
        public async void PostEditMismatchedIds()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Edit(1, new Individual { Id = 2 });

                CheckMessage(result, "The Individual ID provided was invalid.");
            }
        }
        public async void GetDeleteNegativeId()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Delete(-1);

                CheckMessage(result, $"The Individual ID must be between 1 and {int.MaxValue}.");
            }
        }
        public async void GetDeleteNotFound()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Delete(50);

                CheckMessage(result, "The selected Individual could not be found.");
            }
        }
        public async void PostEditBreedDoesntExist()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Edit(2, new Individual(2, "Fido", 100));

                CheckMessage(result, "The selected Breed could not be found.");
            }
        }
        public async void PostDeleteConfirmNegativeId()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.DeleteConfirmed(-1);

                RedirectToActionResult redirect = Assert.IsType <RedirectToActionResult>(result);

                Assert.Equal("Index", redirect.ActionName);
            }
        }
        public async void GetIndex()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Index();

                ViewResult viewResult = Assert.IsType <ViewResult>(result);
                IEnumerable <Individual> individuals = Assert.IsAssignableFrom <IEnumerable <Individual> >(viewResult.ViewData.Model);

                Assert.Equal(database.Context.Individuals.Count(), individuals.Count());
            }
        }
Пример #17
0
        public IndividualsControllerUnitTests()
        {
            _individualRepoMock = new Mock <IIndividualRepository>();
            _mapperMock         = new Mock <IMapper>();
            var uowFactoryMock = new Mock <IUnitOfWorkFactory>();
            var uowMock        = new Mock <IUnitOfWork>();

            uowFactoryMock.Setup(f => f.Create()).Returns(uowMock.Object);
            uowMock.Setup(f => f.GetRepository <IIndividualRepository>()).Returns(_individualRepoMock.Object);

            _sut = new IndividualsController(
                uowFactoryMock.Object,
                _mapperMock.Object);
        }
        public async void GetEditFound()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Edit(2);

                IndividualViewModel viewModel  = CheckViewModel(result);
                Individual          individual = database.Context.Individuals.SingleOrDefault(i => i.Id == 2);

                Assert.Equal(2, viewModel.Individual.Id);
                Assert.Equal(individual.Name, viewModel.Individual.Name);
                Assert.NotEmpty(viewModel.Breeds);
            }
        }
        public void GetCreate()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = controller.Create();

                IndividualViewModel viewModel = CheckViewModel(result);

                Assert.Equal(0, viewModel.Individual.Id);
                Assert.Equal(0, viewModel.Individual.Breed.Id);
                Assert.True(string.IsNullOrEmpty(viewModel.Individual.Name));
                Assert.NotEmpty(viewModel.Breeds);
            }
        }
        public async void GetDeleteFound()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Delete(10);

                IndividualViewModel viewModel  = CheckViewModel(result);
                Individual          individual = database.Context.Individuals.SingleOrDefault(i => i.Id == 10);

                Assert.Equal(10, viewModel.Individual.Id);
                Assert.Equal(individual.Name, viewModel.Individual.Name);
                Assert.Equal(individual.BreedId, viewModel.Individual.Breed.Id);
            }
        }
        public async void PostCreateSuccess()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Create(new Individual("Test Individual Success", 1));

                RedirectToActionResult redirect = Assert.IsType <RedirectToActionResult>(result);

                Assert.Equal("Index", redirect.ActionName);

                Individual individual = database.Context.Individuals.SingleOrDefault(i => i.Name == "Test Individual Success");

                Assert.False(individual == null);
            }
        }
        public async void PostDeleteConfirmSuccess()
        {
            using (var database = new TestDb())
            {
                Assert.True(database.Context.Individuals.Any(i => i.Id == 3));

                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.DeleteConfirmed(3);

                RedirectToActionResult redirect = Assert.IsType <RedirectToActionResult>(result);

                Assert.Equal("Index", redirect.ActionName);

                Assert.False(database.Context.Individuals.Any(i => i.Id == 3));
            }
        }
        public async void PostEditSaved()
        {
            using (var database = new TestDb())
            {
                var controller = new IndividualsController(database.Context);

                IActionResult result = await controller.Edit(6, new Individual(6, "Modified Individual", 4));

                RedirectToActionResult redirect = Assert.IsType <RedirectToActionResult>(result);

                Assert.Equal("Index", redirect.ActionName);

                Individual individual = database.Context.Individuals.SingleOrDefault(b => b.Id == 6);

                Assert.Equal("Modified Individual", individual.Name);
            }
        }
        public async void AddStudent_ReturnsErrorResult()
        {
            // Setup
            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <AddStudent.CreateRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => (false, null, "Database error"));

            // Initiate
            var controller = new IndividualsController(mediator.Object);
            var request    = new AddStudent.CreateRequest();

            // Result
            var resultObj = await controller.CreateStudent(request);

            var errorResult = resultObj.Result as ObjectResult;

            // Test
            Assert.NotNull(errorResult);
            Assert.Equal(500, errorResult.StatusCode);
            Assert.Equal("Database error", errorResult.Value);
        }
        public async void GetStudents_ReturnsNotFoundResult()
        {
            // Setup
            var jediStudents = new List <JediStudent>();

            var mediator = new Mock <IMediator>();

            mediator.Setup(x => x.Send(It.IsAny <GetStudents.Query>(), It.IsAny <CancellationToken>())).ReturnsAsync(() => (false, jediStudents, "No Jedi Students found"));

            // Initiate
            var controller = new IndividualsController(mediator.Object);

            // Result
            var resultObj = await controller.Get();

            var notFoundResult = resultObj as NotFoundObjectResult;

            // Test
            Assert.NotNull(notFoundResult);
            Assert.Equal(404, notFoundResult.StatusCode);
            Assert.Equal("No Jedi Students found", notFoundResult.Value);
        }