public async Task <IActionResult> Post([FromBody] TrackCreateDTO trackCreateDTO) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var id = await repository.Create(trackCreateDTO); return(CreatedAtAction(nameof(Get), new { id }, null)); }
public async void postWithBadTrackReturnsBadRequest() { var track = new TrackCreateDTO() { }; var mockRepository = new Mock <ITrackRepository>(); var controller = new TracksController(mockRepository.Object); controller.ModelState.AddModelError(string.Empty, "Error"); var response = await controller.Post(track); Assert.IsType <BadRequestObjectResult>(response); }
public async void postWithGoodTrackReturnsOK() { var track = new TrackCreateDTO() { Name = "eat", LengthInMeters = 100, MaxCars = 50 }; var mockRepository = new Mock <ITrackRepository>(); mockRepository.Setup(a => a.Create(track)).ReturnsAsync(1231); var controller = new TracksController(mockRepository.Object); var response = await controller.Post(track) as CreatedAtActionResult; Assert.Equal("Get", response.ActionName); Assert.Equal(1231, response.RouteValues["id"]); }
public async Task Delete_given_id_deletes_track() { var track = new TrackCreateDTO() { Name = "Awesome Track", MaxCars = 12, LengthInMeters = 5000 }; var repo = new TrackRepository(context); await repo.Create(track); var controller = new TracksController(repo); var response = await controller.Delete(1); Assert.IsType <OkResult>(response); Assert.Null(context.Tracks.Find(1)); }
public async Task Create_given_track_creates_track() { var expected = new TrackCreateDTO { Name = "Awesome Track" }; var mock = new Mock <ITrackRepository>(); mock.Setup(m => m.Create(expected)).ReturnsAsync(5); var controller = new TracksController(mock.Object); var actual = await controller.Post(expected) as CreatedAtActionResult; Assert.Equal("Get", actual.ActionName); Assert.Equal(5, actual.RouteValues["id"]); }
public async Task Create_given_track_calls_SaveChangesAsync() { var context = new Mock <ISlotCarContext>(); context.Setup(c => c.Tracks.Add(It.IsAny <Track>())); using (var repository = new TrackRepository(context.Object)) { var track = new TrackCreateDTO { Name = "name" }; await repository.Create(track); } context.Verify(c => c.SaveChangesAsync(default(CancellationToken))); }
public async Task Update_given_id_updates_track() { var track = new TrackCreateDTO() { Name = "Awesome Track" }; var updatedTrack = new TrackUpdateDTO() { Name = "Awesome Track", MaxCars = 12, LengthInMeters = 5000 }; var repo = new TrackRepository(context); await repo.Create(track); var controller = new TracksController(repo); var put = await controller.Put(1, updatedTrack) as OkObjectResult; var actual = await repo.Find(1); Assert.Equal(updatedTrack.MaxCars, actual.MaxCars); Assert.Equal(updatedTrack.LengthInMeters, actual.LengthInMeters); }
public async Task Create_given_track_adds_it() { var entity = default(Track); var context = new Mock <ISlotCarContext>(); context.Setup(c => c.Tracks.Add(It.IsAny <Track>())).Callback <Track>(t => entity = t); using (var repository = new TrackRepository(context.Object)) { var track = new TrackCreateDTO { Name = "name", LengthInMeters = 12.5, MaxCars = 4 }; await repository.Create(track); } Assert.Equal("name", entity.Name); Assert.Equal(12.5, entity.LengthInMeters); Assert.Equal(4, entity.MaxCars); }
public async Task Create_given_track_returns_new_Id() { var entity = default(Track); var context = new Mock <ISlotCarContext>(); context.Setup(c => c.Tracks.Add(It.IsAny <Track>())) .Callback <Track>(t => entity = t); context.Setup(c => c.SaveChangesAsync(default(CancellationToken))) .Returns(Task.FromResult(0)) .Callback(() => entity.Id = 42); using (var repository = new TrackRepository(context.Object)) { var track = new TrackCreateDTO { Name = "name" }; var id = await repository.Create(track); Assert.Equal(42, id); } }