public async Task <ListWithCountDto <TutorCardDto> > SearchAsync(TutorListTabSearchQuery query, CancellationToken token) { //const int pageSize = 25; var searchParams = new SearchParameters() { Top = query.PageSize, Skip = query.Page * query.PageSize, Select = new[] { nameof(Entities.Tutor.Data), }, HighlightFields = new[] { nameof(Entities.Tutor.Courses) }, HighlightPostTag = string.Empty, HighlightPreTag = string.Empty, SearchFields = new[] { nameof(Entities.Tutor.Name), nameof(Entities.Tutor.Prefix), nameof(Entities.Tutor.Courses), nameof(Entities.Tutor.Subjects) }, ScoringProfile = TutorSearchWrite.ScoringProfile, IncludeTotalResultCount = true }; if (!string.IsNullOrEmpty(query.Country)) { searchParams.Filter = $"{nameof(Entities.Tutor.Country)} eq '{query.Country.ToUpperInvariant()}'"; } var result = await _client.Documents.SearchAsync <Entities.Tutor>(query.Term, searchParams, cancellationToken : token); var obj = new ListWithCountDto <TutorCardDto>() { Result = result.Results.Where(w => w.Document.Data != null).Select(s => { var tutor = s.Document.Data; var courses = (s.Highlights?[nameof(Entities.Tutor.Courses)] ?? Enumerable.Empty <string>()).Union( s.Document.Data.Courses).Take(3).Distinct(StringComparer.OrdinalIgnoreCase); if (tutor.Image != null) { s.Document.Data.Image = _urlBuilder.BuildUserImageEndpoint(tutor.UserId, tutor.Image); } s.Document.Data.Courses = courses; s.Document.Data.Subjects = s.Document.Data.Subjects?.Take(3); return(s.Document.Data); }), Count = result.Count }; return(obj); }
public async Task GetDocumentsAsync_ReturnUrlAsync() { using (var mock = AutoMock.GetLoose()) { var id = 159039L; var page = 0; var pageSize = 20; var cancellationToken = CancellationToken.None; var result = new ListWithCountDto <DocumentFeedDto>() { Result = new[] { new DocumentFeedDto() { Id = 159039, University = "SOME UNIVERSITY", Course = "some course", Title = "some name" } }, Count = 1 }; // The AutoMock class will inject a mock IDependency // into the SystemUnderTest constructor var mockUrlHelper = new Mock <IUrlHelper>(); mockUrlHelper.Setup(o => o.RouteUrl(It.IsAny <UrlRouteContext>())).Returns("a/mock/url/for/testing"); // mockUrlHelper.SetupGet(o => o.ActionContext.HttpContext.RequestServices.GetRequiredService<IBinarySerializer>()) // .Returns(new BinarySerializer(, )); mock.Mock <IDocumentDirectoryBlobProvider>().Setup(o => o.GetPreviewImageLink(It.IsAny <long>(), It.IsAny <int>())) .Returns(new Uri("https://spitball.co/test")); //mockUrlHelper.Setup(x => x.Action( // It.IsAny<UrlActionContext>() //)).Returns("a/mock/url/for/testing").Verifiable(); mock.Mock <IQueryBus>() .Setup(s => s.QueryAsync(It.IsAny <UserDocumentsQuery>(), cancellationToken)) .ReturnsAsync(result); var sut = mock.Create <ProfileController>(); sut.Url = mockUrlHelper.Object; sut.ControllerContext.HttpContext = new DefaultHttpContext(); var retVal = await sut.GetDocumentsAsync(new Models.ProfileDocumentsRequest() { Id = id, Page = page, PageSize = pageSize }, cancellationToken); mock.Mock <IQueryBus>().Verify(x => x.QueryAsync(It.IsAny <UserDocumentsQuery>(), cancellationToken)); retVal.Result.First().Url.Should().NotBeNullOrEmpty(); } }