public async Task TestPutChannel() { var gen = new RandomGenerator(); var anyChannel = data_channels.First(); var model = new ChannelUpdateViewModel { Id = anyChannel.Id, Name = gen.Phrase(10), Loops = gen.Boolean(), }; var result = await controller.PutChannel(model); var response = await result.ExecuteAsync(CancellationToken.None); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); }
public async Task<IHttpActionResult> PutChannel(ChannelUpdateViewModel model) { try { if (!ModelState.IsValid) { throw new ValidationException(); } var channel = await _channels.Find(model.Id); if (channel == null) { throw new KeyNotFoundException(); } model.Update(channel); await _channels.Update(channel); return Ok(); } catch (ValidationException) { // All validations errors are already in ModelState. } catch (KeyNotFoundException) { return NotFound(); } catch (Exception e) { ModelState.AddModelError(e.GetType().ToString(), e.Message); } return BadRequest(ModelState); }