private void VerifyCall(ContactsSearchCriteriaModel criteria, System.Net.HttpStatusCode expectedCode) { var json = criteria == null ? string.Empty : JsonConvert.SerializeObject(criteria); using var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); var response = _client.PostAsync(ContactsApiUrl + "/search", content).Result; Assert.IsTrue(response.StatusCode == expectedCode); }
public async Task <ActionResult <SearchResults <ContactDto> > > Search([FromBody] ContactsSearchCriteriaModel criteria) { try { var results = await _mediator.Send(new GetContactsQuery(criteria.PageNumber, criteria.PageSize, criteria.Text)); return(Ok(results)); } catch (InvalidParametersException) { return(BadRequest()); } catch (Exception ex) { _logger.Error(ex, "Error searching contacts"); return(BadRequest()); } }
public void InvalidPageNumberParameterThrowsException() { var criteria = new ContactsSearchCriteriaModel() { PageNumber = 0, PageSize = 1 }; mediator .Setup(x => x.Send(It.Is <GetContactsQuery>(x => x.Page == criteria.PageNumber && x.Size == criteria.PageSize && x.Text == criteria.Text), It.IsAny <CancellationToken>())) .Throws(new InvalidParametersException("Invalid search parameters")); var returned = controller.Search(criteria).Result; Assert.IsNotNull(returned); Assert.IsNotNull(returned.Result); Assert.IsTrue(returned.Result is BadRequestResult); mediator.VerifyAll(); }