Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
            }
        }