Example #1
0
 public MockTemplateSearchProviderFactory(Guid id, string displayName, MockTemplateSearchProvider searchProvider)
 {
     Id                     = id;
     DisplayName            = displayName;
     _searchProvider        = searchProvider;
     searchProvider.Factory = this;
 }
        public async Task TwoSourcesAreBothSearched()
        {
            var provider1 = new MockTemplateSearchProvider();
            var provider2 = new MockTemplateSearchProvider();

            _engineEnvironmentSettings.Components.AddComponent(
                typeof(ITemplateSearchProviderFactory),
                new MockTemplateSearchProviderFactory(Guid.NewGuid(), "provider1", provider1));

            _engineEnvironmentSettings.Components.AddComponent(
                typeof(ITemplateSearchProviderFactory),
                new MockTemplateSearchProviderFactory(Guid.NewGuid(), "provider2", provider2));

            var searchCoordinator = new TemplateSearchCoordinator(_engineEnvironmentSettings);
            var searchResult      = await searchCoordinator.SearchAsync(p => true, p => p.Templates.ToList(), default).ConfigureAwait(false);

            Assert.Equal(2, searchResult.Count());
            Assert.Single(searchResult, r => r.Provider.Factory.DisplayName == "provider1");
            Assert.Single(searchResult, r => r.Provider.Factory.DisplayName == "provider2");

            Assert.True(provider2.WasSearched);
        }
        public async Task SourcesCorrectlyReturnResults()
        {
            List <MockTemplateSearchProvider> createdProviders = new List <MockTemplateSearchProvider>();
            var sourcesToSetup = GetMockNameSearchResults();

            foreach (var source in sourcesToSetup)
            {
                var provider = new MockTemplateSearchProvider();
                createdProviders.Add(provider);
                provider.Results = source.Value;
                _engineEnvironmentSettings.Components.AddComponent(
                    typeof(ITemplateSearchProviderFactory),
                    new MockTemplateSearchProviderFactory(Guid.NewGuid(), source.Key, provider));
            }

            const string templateName = "foo";

            Func <TemplatePackageSearchData, IReadOnlyList <ITemplateInfo> > filter =
                templatePack => templatePack.Templates
                .Where(t => ((ITemplateInfo)t).Name.Contains(templateName, StringComparison.OrdinalIgnoreCase))
                .ToList();

            var searchCoordinator = new TemplateSearchCoordinator(_engineEnvironmentSettings);
            var searchResult      = await searchCoordinator.SearchAsync(p => true, filter, default).ConfigureAwait(false);

            Assert.Equal(2, searchResult.Count);

            var searchResultDictionary = searchResult.ToDictionary(r => r.Provider.Factory.DisplayName);

            Assert.True(searchResultDictionary.ContainsKey("source one"));
            Assert.True(searchResultDictionary.ContainsKey("source two"));

            Assert.Equal(3, searchResultDictionary["source two"].SearchHits.Count);
            Assert.Equal(2, searchResultDictionary["source one"].SearchHits.Count);

            Assert.True(createdProviders.All(p => p.WasSearched));
        }