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)); }