public async Task PostRight_adds_data_to_right_position_on_diff_and_returns_created_result() { // Arrange var newDiff = await GetNewDiff(); // Act var leftData = new NewInputViewModel("Zm9vYmFy"); var payload = new StringContent(JsonConvert.SerializeObject(leftData), Encoding.UTF8, "application/json"); var rightInputResponse = await _client.PostAsync($"/api/diffs/{newDiff.Id}/right", payload); // Assert await AssertInputCreatedOnDiffPosition(rightInputResponse, newDiff.Id, InputPosition.Right); }
public async Task PostLeftAsync_publishes_NewInputIntegrationEvent_on_event_bus() { // Arrange var diffId = Guid.NewGuid(); var newInput = new NewInputViewModel { Data = "foobar" }; var eventBus = new Mock <IRabbitMQEventBus>(); var controller = SetupDiffControllerForPostInput(diffId, eventBus: eventBus); // Act var response = await controller.PostLeftAsync(diffId, newInput); // Assert AssertNewInputIntegrationEventPublished(response, diffId, InputPosition.Left, eventBus); }
public async Task PostLeftAsync_adds_data_to_left_position_of_given_diff() { // Arrange var diffId = Guid.NewGuid(); var newInput = new NewInputViewModel { Data = "foobar" }; var inputRepository = new Mock <IInputRepository>(); var controller = SetupDiffControllerForPostInput(diffId, inputRepository); // Act var response = await controller.PostLeftAsync(diffId, newInput); // Assert AssertInputCreatedOnPosition(response, diffId, newInput.Data, InputPosition.Left, inputRepository); }
private async Task <InputViewModel> AddInputToDiffAsync(string route, string data) { if (string.IsNullOrEmpty(data)) { return(null); } var newInput = new NewInputViewModel(data); var payload = new StringContent(JsonConvert.SerializeObject(newInput), Encoding.UTF8, "application/json"); var response = await _client.PostAsync(route, payload); Assert.True(response.IsSuccessStatusCode, $"Failed to post on {route} - {response.StatusCode}"); var strContent = await response.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <InputViewModel>(strContent)); }
private async Task <IActionResult> HandlePostInputRequest(Guid diffId, NewInputViewModel input, InputPosition position) { if (!ModelState.IsValid) { _logger.LogWarning($"Post{Enum.GetName(typeof(InputPosition), position)}({diffId}) failed validation"); return(BadRequest(ModelState)); } _logger.LogInformation($"Find({diffId}): retrieving item on repository"); var diff = await _diffRepository.FindAsync(_ => _.UUID == diffId); if (diff == null) { _logger.LogWarning($"Find({diffId}): item not found on repository"); return(NotFound(new ResourceNotFoundForIdResultMessage <Diff>(diffId))); } var newInput = new InputData(diffId, position, input.Data); _logger.LogInformation($"Save({diffId}, Diff obj): saving item on repository"); await _inputRepository.AddOneAsync(newInput); _logger.LogInformation($"Save({diffId}, Diff obj): saving item on repository"); var eventMessage = new NewInputIntegrationEvent(newInput); _logger.LogInformation($"Input registered, sending integration event ({eventMessage.Id})"); _eventBus.Publish(eventMessage); _logger.LogInformation($"Integration event ({eventMessage.Id}) sent!"); var viewModel = _mapper.Map <InputViewModel>(newInput); return(Created(newInput.Id, viewModel)); }
public async Task <IActionResult> PostRightAsync([FromRoute] Guid id, [FromBody] NewInputViewModel input) { return(await HandlePostInputRequest(id, input, InputPosition.Right)); }