예제 #1
0
        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());
        }
예제 #2
0
        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
                });
            }
        }
예제 #5
0
        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);
        }