public void SetUp() { _postcodeValidator = new Mock <IPostcodeValidator>(); _postcodeValidator.Setup(x => x.IsPostcodeValidAsync(It.IsAny <string>())).ReturnsAsync(true); _response = new GetPostcodeCoordinatesResponse() { PostcodeCoordinates = new List <PostcodeCoordinate>() { new PostcodeCoordinate() { Postcode = "NG1 5FS", Latitude = 52.954885, Longitude = -1.155263 } } }; _mediator = new Mock <IMediator>(); _mediator.Setup(x => x.Send(It.IsAny <GetPostcodeCoordinatesRequest>(), It.IsAny <CancellationToken>())).ReturnsAsync(_response); _loggerWrapper = new Mock <ILoggerWrapper <GetPostcodeCoordinates> >(); _loggerWrapper.SetupAllProperties(); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage reqAsHttpRequestMessage, CancellationToken cancellationToken) { try { NewRelic.Api.Agent.NewRelic.SetTransactionName("AddressService", "GetPostcodeCoordinates"); _logger.LogInformation("C# HTTP trigger function processed a request."); // accept compressed requests (can't do this with middleware) GetPostcodeCoordinatesRequest req = await HttpRequestMessageCompressionUtils.DeserialiseAsync <GetPostcodeCoordinatesRequest>(reqAsHttpRequestMessage); if (req.IsValid(out var validationResults)) { GetPostcodeCoordinatesResponse response = await _mediator.Send(req, cancellationToken); return(new OkObjectResult(ResponseWrapper <GetPostcodeCoordinatesResponse, AddressServiceErrorCode> .CreateSuccessfulResponse(response))); } else { return(new ObjectResult(ResponseWrapper <GetPostcodeCoordinatesResponse, AddressServiceErrorCode> .CreateUnsuccessfulResponse(AddressServiceErrorCode.ValidationError, validationResults)) { StatusCode = 422 }); } } catch (Exception ex) { _logger.LogErrorAndNotifyNewRelic($"Unhandled error in GetPostcodeCoordinates", ex); return(new ObjectResult(ResponseWrapper <GetPostcodeCoordinatesResponse, AddressServiceErrorCode> .CreateUnsuccessfulResponse(AddressServiceErrorCode.UnhandledError, "Internal Error")) { StatusCode = StatusCodes.Status500InternalServerError }); } }
public async Task Success() { GetPostcodeCoordinatesRequest getPostcodeCoordinatesRequest = new GetPostcodeCoordinatesRequest() { Postcodes = new List <string>() { "NG1 1AA" }, }; Core.Services.AddressService addressService = new Core.Services.AddressService(_httpClientWrapper.Object); GetPostcodeCoordinatesResponse result = await addressService.GetPostcodeCoordinatesAsync(getPostcodeCoordinatesRequest, CancellationToken.None); Assert.IsTrue(result.PostcodeCoordinates.Any(x => x.Postcode == "NG1 1AA" && x.Latitude == 45 && x.Longitude == 50)); _httpClientWrapper.Setup(x => x.PostAsync(It.Is <HttpClientConfigName>(y => y == HttpClientConfigName.AddressService), It.Is <string>(y => y == "api/GetPostcodeCoordinates"), It.IsAny <HttpContent>(), It.IsAny <CancellationToken>())); }
public async Task GetPostcodeCoordinates() { GetPostcodeCoordinatesRequest getPostcodeCoordinatesRequest = new GetPostcodeCoordinatesRequest() { Postcodes = new List <string>() { "NG1 5FS", "NG1 5BL" } }; GetPostcodeCoordinatesHandler getPostcodeCoordinatesHandler = new GetPostcodeCoordinatesHandler(_postcodeCoordinatesGetter.Object); GetPostcodeCoordinatesResponse result = await getPostcodeCoordinatesHandler.Handle(getPostcodeCoordinatesRequest, CancellationToken.None); Assert.AreEqual(2, result.PostcodeCoordinates.Count()); Assert.AreEqual(52.954885, result.PostcodeCoordinates.FirstOrDefault(x => x.Postcode == "NG1 5FS").Latitude); Assert.AreEqual(-1.155263, result.PostcodeCoordinates.FirstOrDefault(x => x.Postcode == "NG1 5FS").Longitude); Assert.AreEqual(52.955494, result.PostcodeCoordinates.FirstOrDefault(x => x.Postcode == "NG1 5BL").Latitude); Assert.AreEqual(-1.154864, result.PostcodeCoordinates.FirstOrDefault(x => x.Postcode == "NG1 5BL").Longitude); }
public void SetUp() { _httpClientWrapper = new Mock <IHttpClientWrapper>(); _httpClientWrapper.SetupAllProperties(); _getPostcodeCoordinatesResponse = new GetPostcodeCoordinatesResponse() { PostcodeCoordinates = new List <PostcodeCoordinate>() { new PostcodeCoordinate() { Postcode = "NG1 1AA", Latitude = 45, Longitude = 50 } } }; HttpResponseMessage httpResponseMessage = CreateSuccessfulResponseWrappersHttpResponseMessage(_getPostcodeCoordinatesResponse); _httpClientWrapper.Setup(x => x.PostAsync(It.IsAny <HttpClientConfigName>(), It.IsAny <string>(), It.IsAny <HttpContent>(), It.IsAny <CancellationToken>())).ReturnsAsync(httpResponseMessage); }
public async Task PrepareTemplateData_Returns() { int? recipientUserId = 1; int? jobId = null; int? groupId = null; int? requestId = null; string templateName = string.Empty; _getUserGroupsResponse = new GetUserGroupsResponse() { Groups = new List <int>() { 1 } }; _user = new User() { ID = 1, SupportActivities = new List <SupportActivities>() { SupportActivities.Shopping }, PostalCode = "NG1 6DQ", SupportRadiusMiles = 20, UserPersonalDetails = new UserPersonalDetails() { FirstName = "FIRST NAME", EmailAddress = "EMAIL ADDRESS", DisplayName = "DISPLAY NAME" } }; List <JobSummary> jobSummaries = new List <JobSummary>(); jobSummaries.Add(new JobSummary() { RequestID = 1, DistanceInMiles = 1, SupportActivity = SupportActivities.Shopping, RequestType = RequestType.Task }); jobSummaries.Add(new JobSummary() { RequestID = 2, DistanceInMiles = 2, SupportActivity = SupportActivities.Shopping, RequestType = RequestType.Task }); jobSummaries.Add(new JobSummary() { RequestID = 3, DistanceInMiles = 2, SupportActivity = SupportActivities.CheckingIn, RequestType = RequestType.Task }); _getPostcodeCoordinatesResponse = new GetPostcodeCoordinatesResponse() { PostcodeCoordinates = new List <PostcodeCoordinate>() { new PostcodeCoordinate() { Postcode = "DE23 6NY", Latitude = 1d, Longitude = 1d } } }; _getAllJobsByFilterResponse = new GetAllJobsByFilterResponse() { JobSummaries = jobSummaries, ShiftJobs = new List <ShiftJob>() }; //_filteredJobs = jobSummaries; var criteriaJobs = jobSummaries.Where(x => _user.SupportActivities.Contains(x.SupportActivity) && x.DistanceInMiles < _user.SupportRadiusMiles); var otherJobs = jobSummaries.Where(x => !criteriaJobs.Contains(x)); var otherJobsStats = otherJobs.GroupBy(x => x.SupportActivity, x => x.DueDate, (activity, dueDate) => new { Key = activity, Count = dueDate.Count(), Min = dueDate.Min() }); otherJobsStats = otherJobsStats.OrderByDescending(x => x.Count); var result = await _classUnderTest.PrepareTemplateData(Guid.NewGuid(), recipientUserId, jobId, groupId, requestId, null, templateName); DailyDigestData ddd = (DailyDigestData)result.BaseDynamicData; Assert.AreEqual(criteriaJobs.Count(), ddd.ChosenRequestTasks); Assert.AreEqual(otherJobs.Count() > 0, ddd.OtherRequestTasks); }
public async Task PrepareTemplateData_ReturnsEmailBuildDataAsThereAreNoChosenJobs() { int? recipientUserId = 1; int? jobId = null; int? groupId = null; int? requestId = null; string templateName = string.Empty; _getUserGroupsResponse = new GetUserGroupsResponse() { Groups = new List <int>() { 1 } }; _user = new User() { ID = 1, SupportActivities = new List <SupportActivities>() { SupportActivities.Shopping }, PostalCode = "NG1 6DQ", SupportRadiusMiles = 2, UserPersonalDetails = new UserPersonalDetails() { FirstName = "FIRST NAME", EmailAddress = "EMAIL ADDRESS", DisplayName = "DISPLAY NAME" } }; List <JobSummary> jobSummaries = new List <JobSummary>(); jobSummaries.Add(new JobSummary() { DistanceInMiles = 2, SupportActivity = SupportActivities.CheckingIn, RequestType = RequestType.Task }); _getAllJobsByFilterResponse = new GetAllJobsByFilterResponse() { JobSummaries = jobSummaries, ShiftJobs = new List <ShiftJob>() { new ShiftJob() { SupportActivity = SupportActivities.VaccineSupport, StartDate = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc), ShiftLength = 240, DistanceInMiles = 2 } } }; _getPostcodeCoordinatesResponse = new GetPostcodeCoordinatesResponse() { PostcodeCoordinates = new List <PostcodeCoordinate>() { new PostcodeCoordinate() { Postcode = "DE23 6NY", Latitude = 1d, Longitude = 1d } } }; var chosenJobCount = jobSummaries.Count(x => _user.SupportActivities.Contains(x.SupportActivity) && x.DistanceInMiles < _user.SupportRadiusMiles); var result = await _classUnderTest.PrepareTemplateData(Guid.NewGuid(), recipientUserId, jobId, groupId, requestId, null, templateName); Assert.AreEqual(null, result); }