예제 #1
0
        public async Task Post_when_not_ModelState_IsValid_returns_BadRequest()
        {
            var controller = new StudiesController(null);

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

            var study = new StudyDTO();

            var result = await controller.Post(study);

            Assert.IsType <BadRequestObjectResult>(result);
        }
예제 #2
0
        public async Task Post_when_valid_returns_Created()
        {
            var repository = new Mock <IStudyRepository>();
            var controller = new StudiesController(repository.Object);

            var study = new StudyDTO {
                Name = "Name"
            };

            var result = await controller.Post(study);

            Assert.IsAssignableFrom <CreatedAtActionResult>(result);
        }
예제 #3
0
        public async Task Post_calls_repository_Create()
        {
            var repository = new Mock <IStudyRepository>();
            var controller = new StudiesController(repository.Object);

            var study = new StudyDTO {
                Name = "Name"
            };

            await controller.Post(study);

            repository.Verify(r => r.CreateAsync(study), Times.Once);
        }
예제 #4
0
        public async Task Post_when_not_ModelState_IsValid_does_not_call_repository()
        {
            var repository = new Mock <IStudyRepository>();
            var controller = new StudiesController(repository.Object);

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

            var study = new StudyDTO {
                Name = "Name"
            };

            await controller.Post(study);

            repository.Verify(r => r.CreateAsync(study), Times.Never);
        }
예제 #5
0
        public async Task Post_when_valid_returns_Get_action()
        {
            var study = new StudyDTO {
                Name = "Name"
            };
            var repository = new Mock <IStudyRepository>();

            repository.Setup(r => r.CreateAsync(study)).ReturnsAsync(42);
            var controller = new StudiesController(repository.Object);

            var result = await controller.Post(study) as CreatedAtActionResult;

            Assert.Equal("Get", result.ActionName);
            Assert.Null(result.ControllerName); // null means current controller
            Assert.Equal(42, result.RouteValues["id"]);
        }
예제 #6
0
        public async Task Post_when_valid_returns_study_with_new_id()
        {
            var study = new StudyDTO {
                Name = "Name"
            };
            var repository = new Mock <IStudyRepository>();

            repository.Setup(r => r.CreateAsync(study)).ReturnsAsync(42);
            var controller = new StudiesController(repository.Object);

            var result = await controller.Post(study) as CreatedAtActionResult;

            var created = result.Value as StudyDTO;

            Assert.Equal(42, created.Id);
        }