public async Task IdentifyRecipientsReturnsCorrectUsers() { int?recipientUserId = null; int?jobId = null; int?groupId = null; int?requestId = null; List <VolunteerSummary> volunteerSummaries = new List <VolunteerSummary>(); Random random = new Random(); for (int i = 1; i < 50; i++) { volunteerSummaries.Add(new VolunteerSummary() { DistanceInMiles = random.NextDouble(), UserID = i }); } _getVolunteersByPostcodeAndActivityResponse = new GetVolunteersByPostcodeAndActivityResponse() { Volunteers = volunteerSummaries }; List <Core.Domains.SendMessageRequest> result = await _classUnderTest.IdentifyRecipients(recipientUserId, jobId, groupId, requestId, null); Assert.AreEqual(_getVolunteersByPostcodeAndActivityResponse.Volunteers.Count(), result.Count()); }
public async Task WhenIGetHelper_WithNoStreetChampionButWithLinkedActivity_IGetOneUserReturened() { GetVolunteersByPostcodeAndActivityRequest request = new GetVolunteersByPostcodeAndActivityRequest() { VolunteerFilter = new VolunteerFilter { Postcode = "NG1 1AA", Activities = new List <SupportActivities> { SupportActivities.Shopping } } }; GetVolunteersByPostcodeAndActivityHandler getVolunteersByPostcodeAndActivityHandler = new GetVolunteersByPostcodeAndActivityHandler(_helperService.Object, _repository.Object); GetVolunteersByPostcodeAndActivityResponse result = await getVolunteersByPostcodeAndActivityHandler.Handle(request, CancellationToken.None); Assert.AreEqual(1, result.Volunteers.Count()); _helperService.Verify(X => X.GetHelpersWithinRadius("NG1 1AA", It.IsAny <double?>(), It.IsAny <CancellationToken>())); }
public async Task IdentifyRecipientsReturnsCorrectUsers() { int?recipientUserId = null; int?jobId = null; int?groupId = GROUPID; int?requestId = 1; int maxVolunteer = 10; _getGroupNewRequestNotificationStrategyResponse = new GetGroupNewRequestNotificationStrategyResponse() { MaxVolunteer = maxVolunteer, NewRequestNotificationStrategy = NewRequestNotificationStrategy.ClosestNEligibleVolunteers }; List <VolunteerSummary> volunteerSummaries = new List <VolunteerSummary>(); Random random = new Random(); for (int i = 1; i < 50; i++) { volunteerSummaries.Add(new VolunteerSummary() { DistanceInMiles = random.NextDouble(), UserID = i }); } _getVolunteersByPostcodeAndActivityResponse = new GetVolunteersByPostcodeAndActivityResponse() { Volunteers = volunteerSummaries }; List <Core.Domains.SendMessageRequest> result = await _classUnderTest.IdentifyRecipients(recipientUserId, jobId, groupId, requestId, null); Assert.AreEqual(maxVolunteer, result.Count(x => x.TemplateName == TemplateName.TaskNotification)); Assert.AreEqual(0, result.Count(x => x.TemplateName == TemplateName.RequestorTaskNotification)); var expected = volunteerSummaries.Where(x => _getGroupMembersResponse.Users.Any(u => u == x.UserID)).OrderBy(x => x.DistanceInMiles).Take(10).Select(x => x.UserID).ToList(); var actual = result.Where(x => x.TemplateName == TemplateName.TaskNotification).Select(x => x.RecipientUserID).ToList(); Assert.AreEqual(expected, actual); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] [RequestBodyType(typeof(GetVolunteersByPostcodeAndActivityRequest), "Get Volunteers By Postcode And Activity")] GetVolunteersByPostcodeAndActivityRequest req, ILogger log) { try { NewRelic.Api.Agent.NewRelic.SetTransactionName("UserService", "GetHelpersContactInformationByPostcode"); log.LogInformation("C# HTTP trigger function processed a request."); GetVolunteersByPostcodeAndActivityResponse response = await _mediator.Send(req); return(new OkObjectResult(ResponseWrapper <GetVolunteersByPostcodeAndActivityResponse, UserServiceErrorCode> .CreateSuccessfulResponse(response))); } catch (Exception exc) { LogError.Log(log, exc, req); return(new ObjectResult(ResponseWrapper <GetVolunteersByPostcodeAndActivityResponse, UserServiceErrorCode> .CreateUnsuccessfulResponse(UserServiceErrorCode.UnhandledError, "Internal Error")) { StatusCode = StatusCodes.Status500InternalServerError }); } }
public async Task WhenIPostRequest_WithNoChampions_IGetManualReer() { requestId = 1; _validPostcode = true; _championCount = 0; _emailSent = true; Guid guid = Guid.NewGuid(); _getVolunteersByPostcodeAndActivityResponse = new GetVolunteersByPostcodeAndActivityResponse { Volunteers = new List <VolunteerSummary> { new VolunteerSummary { UserID = 1, DistanceInMiles = 1, } } }; var request = new PostNewRequestForHelpRequest { HelpRequest = new HelpRequest { RequestorType = RequestorType.Myself, Requestor = new RequestPersonalDetails { Address = new Address { Postcode = "test", } } }, NewJobsRequest = new NewJobsRequest { Jobs = new List <Job> { new Job { Guid = guid, HealthCritical = true, DueDays = 5, SupportActivity = SupportActivities.Shopping } } } }; _getNewRequestActionsResponse = new GetNewRequestActionsResponse() { Actions = new Dictionary <Guid, TaskAction>(), RequestTaskActions = new Dictionary <NewTaskAction, List <int> >() }; _getNewRequestActionsResponse.Actions.Add(guid, new TaskAction() { TaskActions = new Dictionary <NewTaskAction, List <int> >() }); _getNewRequestActionsResponse.Actions[guid].TaskActions.Add(NewTaskAction.MakeAvailableToGroups, new List <int>() { 1 }); _getNewRequestActionsResponse.Actions[guid].TaskActions.Add(NewTaskAction.NotifyMatchingVolunteers, new List <int>() { 1 }); var response = await _classUnderTest.Handle(request, new CancellationToken()); Assert.AreEqual(Fulfillable.Accepted_ManualReferral, response.Fulfillable); }