public async Task CreateAsync_given_study_returns_id() { // Arrange var entity = default(Study); var context = new Mock <IContext>(); context.Setup(c => c.Studies.Add(It.IsAny <Study>())).Callback <Study>(t => entity = t); context.Setup(c => c.SaveChangesAsync(default(CancellationToken))) .Returns(Task.FromResult(0)) .Callback(() => entity.Id = 11); using (var repository = new StudyRepository(context.Object)) { var study = new StudyNoIdDTO { Title = "StudyTitle", Description = "StudyDescription" }; // Act var result = await repository.CreateAsync(study); // Assert Assert.Equal(11, result); } }
public async Task <IActionResult> Post([FromBody] StudyNoIdDTO study) { if (!ModelState.IsValid) { _log.LogWarning("ModelState not valid. Return BadRequest"); return(BadRequest(ModelState)); } var id = await _repository.CreateAsync(study); return(CreatedAtAction(nameof(Get), new { id }, null)); }
public async Task <int> CreateAsync(StudyNoIdDTO study) { var entity = new Study { Title = study.Title, Description = study.Description }; _context.Studies.Add(entity); await _context.SaveChangesAsync(); return(entity.Id); }
public async Task Post_given_valid_study_calls_CreateAsync() { // Arrange var repository = new Mock <IStudyRepository>(); var controller = new StudyController(repository.Object, log.Object); var study = new StudyNoIdDTO(); // Act await controller.Post(study); // Assert repository.Verify(r => r.CreateAsync(study)); }
public async Task Post_given_invalid_study_doesnot_call_CreateAsync() { // Arrange var repository = new Mock <IStudyRepository>(); var controller = new StudyController(repository.Object, log.Object); controller.ModelState.AddModelError(string.Empty, "Error"); var study = new StudyNoIdDTO(); // Act await controller.Post(study); // Assert repository.Verify(r => r.CreateAsync(It.IsAny <StudyNoIdDTO>()), Times.Never); }
public async Task Post_given_invalid_study_returns_BadRequest() { // Arrange var repository = new Mock <IStudyRepository>(); var controller = new StudyController(repository.Object, log.Object); controller.ModelState.AddModelError(string.Empty, "Error"); var study = new StudyNoIdDTO(); // Act var result = await controller.Post(study); // Assert Assert.IsType <BadRequestObjectResult>(result); }
public async Task Post_given_valid_study_returns_CreatedAtAction() { // Arrange var repository = new Mock <IStudyRepository>(); repository.Setup(r => r.CreateAsync(It.IsAny <StudyNoIdDTO>())).ReturnsAsync(11); var controller = new StudyController(repository.Object, log.Object); var study = new StudyNoIdDTO(); // Act var result = await controller.Post(study) as CreatedAtActionResult; // Assert Assert.Equal(nameof(StudyController.Get), result.ActionName); Assert.Equal(11, result.RouteValues["id"]); }
public async Task CreateAsync_given_study_calls_SaveChangesAsync() { var context = new Mock <IContext>(); context.Setup(c => c.Studies.Add(It.IsAny <Study>())); using (var repository = new StudyRepository(context.Object)) { var study = new StudyNoIdDTO { Title = "StudyTitle", Description = "StudyDescription" }; // Act var result = await repository.CreateAsync(study); // Assert context.Verify(c => c.SaveChangesAsync(default(CancellationToken))); } }
public async Task CreateAsync_given_study_adds_to_database() { // Arrange var entity = default(Study); var context = new Mock <IContext>(); context.Setup(c => c.Studies.Add(It.IsAny <Study>())).Callback <Study>(t => entity = t); using (var repository = new StudyRepository(context.Object)) { var study = new StudyNoIdDTO { Title = "StudyTitle", Description = "StudyDescription" }; // Act await repository.CreateAsync(study); // Assert Assert.Equal("StudyTitle", entity.Title); Assert.Equal("StudyDescription", entity.Description); } }