public async Task HappyPath() { GetNearbyPostcodesRequest req = new GetNearbyPostcodesRequest() { Postcode = "NG1 5FS" }; GetNearbyPostcodes getNearbyPostcodes = new GetNearbyPostcodes(_mediator.Object, _postcodeValidator.Object, _logger.Object); IActionResult result = await getNearbyPostcodes.Run(req, CancellationToken.None); OkObjectResult objectResult = result as OkObjectResult; Assert.IsNotNull(objectResult); Assert.AreEqual(200, objectResult.StatusCode); ResponseWrapper <GetNearbyPostcodesResponse, AddressServiceErrorCode> deserialisedResponse = objectResult.Value as ResponseWrapper <GetNearbyPostcodesResponse, AddressServiceErrorCode>; Assert.IsNotNull(deserialisedResponse); Assert.IsTrue(deserialisedResponse.HasContent); Assert.IsTrue(deserialisedResponse.IsSuccessful); Assert.AreEqual(0, deserialisedResponse.Errors.Count()); Assert.AreEqual("NG1 5FS", deserialisedResponse.Content.Postcodes.FirstOrDefault().Postcode); _mediator.Verify(x => x.Send(It.IsAny <GetNearbyPostcodesRequest>(), It.IsAny <CancellationToken>())); }
public async Task InvalidPostcode() { _postcodeValidator.Setup(x => x.IsPostcodeValidAsync(It.IsAny <string>())).ReturnsAsync(false); GetNearbyPostcodesRequest req = new GetNearbyPostcodesRequest() { Postcode = "NG1 5FS" }; GetNearbyPostcodes getNearbyPostcodes = new GetNearbyPostcodes(_mediator.Object, _postcodeValidator.Object, _logger.Object); IActionResult result = await getNearbyPostcodes.Run(req, CancellationToken.None); ObjectResult objectResult = result as ObjectResult; Assert.IsNotNull(objectResult); Assert.AreEqual(422, objectResult.StatusCode); ResponseWrapper <GetNearbyPostcodesResponse, AddressServiceErrorCode> deserialisedResponse = objectResult.Value as ResponseWrapper <GetNearbyPostcodesResponse, AddressServiceErrorCode>; Assert.IsNotNull(deserialisedResponse); Assert.IsFalse(deserialisedResponse.HasContent); Assert.IsFalse(deserialisedResponse.IsSuccessful); Assert.AreEqual(1, deserialisedResponse.Errors.Count()); Assert.AreEqual(AddressServiceErrorCode.InvalidPostcode, deserialisedResponse.Errors[0].ErrorCode); _mediator.Verify(x => x.Send(It.IsAny <GetNearbyPostcodesRequest>(), It.IsAny <CancellationToken>()), Times.Never); }
public async Task ErrorThrown() { _mediator.Setup(x => x.Send(It.IsAny <GetNearbyPostcodesRequest>(), It.IsAny <CancellationToken>())).Throws <Exception>(); GetNearbyPostcodesRequest req = new GetNearbyPostcodesRequest() { Postcode = "NG1 5FS" }; GetNearbyPostcodes getNearbyPostcodes = new GetNearbyPostcodes(_mediator.Object, _postcodeValidator.Object, _logger.Object); IActionResult result = await getNearbyPostcodes.Run(req, CancellationToken.None); ObjectResult objectResult = result as ObjectResult; Assert.IsNotNull(objectResult); ResponseWrapper <GetNearbyPostcodesResponse, AddressServiceErrorCode> deserialisedResponse = objectResult.Value as ResponseWrapper <GetNearbyPostcodesResponse, AddressServiceErrorCode>; Assert.IsNotNull(deserialisedResponse); Assert.AreEqual(500, objectResult.StatusCode);; Assert.IsFalse(deserialisedResponse.HasContent); Assert.IsFalse(deserialisedResponse.IsSuccessful); Assert.AreEqual(1, deserialisedResponse.Errors.Count()); Assert.AreEqual(AddressServiceErrorCode.UnhandledError, deserialisedResponse.Errors[0].ErrorCode); _mediator.Verify(x => x.Send(It.IsAny <GetNearbyPostcodesRequest>(), It.IsAny <CancellationToken>())); _logger.Verify(x => x.LogErrorAndNotifyNewRelic(It.Is <string>(y => y.Contains("Unhandled error")), It.IsAny <Exception>(), It.IsAny <GetNearbyPostcodesRequest>())); }