public void FacetFieldParameterTheory001(Action <IFacetFieldParameter <TestDocument> > config, JObject expectd) { // Arrange var container = new JObject(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var serviceProvider = new Mock <ISolrExpressServiceProvider <TestDocument> >(); serviceProvider .Setup(q => q.GetService <IFacetFieldParameter <TestDocument> >()) .Returns(new FacetFieldParameter <TestDocument>(expressionBuilder, serviceProvider.Object)); serviceProvider .Setup(q => q.GetService <SearchQuery <TestDocument> >()) .Returns(new SearchQuery <TestDocument>(expressionBuilder)); var parameter = (IFacetFieldParameter <TestDocument>) new FacetFieldParameter <TestDocument>(expressionBuilder, serviceProvider.Object); config.Invoke(parameter); // Act ((ISearchItemExecution <JObject>)parameter).Execute(); ((ISearchItemExecution <JObject>)parameter).AddResultInContainer(container); // Assert Assert.Equal(expectd.ToString(), container.ToString()); }
public void DefaultFieldParameter001() { // Arrange var expected = JObject.Parse(@" { ""params"": { ""df"": ""id"" } }"); var container = new JObject(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var parameter = (IDefaultFieldParameter <TestDocument>) new DefaultFieldParameter <TestDocument>(expressionBuilder); parameter.FieldExpression = q => q.Id; // Act ((ISearchItemExecution <JObject>)parameter).Execute(); ((ISearchItemExecution <JObject>)parameter).AddResultInContainer(container); // Assert Assert.Equal(expected.ToString(), container.ToString()); }
public void BaseStandardQueryParameter002() { // Arrange var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var parameter1 = new Mock <BaseStandardQueryParameter <TestDocument> > { CallBase = true }.Object; parameter1.Value = new SearchQuery <TestDocument>(expressionBuilder).AddField(q => q.Id); var parameter2 = new Mock <BaseStandardQueryParameter <TestDocument> > { CallBase = true }.Object; parameter2.Value = new SearchQuery <TestDocument>(expressionBuilder).AddField(q => q.Dummy); // Act var result = parameter1.Equals(parameter2); // Assert Assert.False(result); }
public void FieldsParameter001() { // Arrange var expected = JObject.Parse(@" { ""fields"": [ ""id"", ""score"" ] }"); var container = new JObject(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var parameter = (IFieldsParameter <TestDocument>) new FieldsParameter <TestDocument>(expressionBuilder); parameter.FieldExpressions = new Expression <Func <TestDocument, object> >[] { q => q.Id, q => q.Score }; // Act ((ISearchItemExecution <JObject>)parameter).Execute(); ((ISearchItemExecution <JObject>)parameter).AddResultInContainer(container); // Assert Assert.Equal(expected.ToString(), container.ToString()); }
public void BaseBoostParameter002() { // Arrange var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TestDocument>(expressionBuilder); var parameter1 = new Mock <BaseBoostParameter <TestDocument> > { CallBase = true }.Object; parameter1.BoostFunctionType = BoostFunctionType.Bf; parameter1.Query = searchQuery.Field(q => q.Id); var parameter2 = new Mock <BaseBoostParameter <TestDocument> > { CallBase = true }.Object; parameter2.BoostFunctionType = BoostFunctionType.Boost; parameter2.Query = searchQuery.Field(q => q.Id); // Act var result = parameter1.Equals(parameter2); // Assert Assert.False(result); }
public void BaseDefaultFieldParameter002() { // Arrange var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var parameter1 = new Mock <BaseDefaultFieldParameter <TestDocument> > { CallBase = true }.Object; parameter1.ExpressionBuilder = expressionBuilder; parameter1.FieldExpression = q => q.Id; var parameter2 = new Mock <BaseDefaultFieldParameter <TestDocument> > { CallBase = true }.Object; parameter2.ExpressionBuilder = expressionBuilder; parameter2.FieldExpression = q => q.Dummy; // Act var result = parameter1.Equals(parameter2); // Assert Assert.False(result); }
public void FilterQueryParameter002() { // Arrange var expected = JObject.Parse(@" { ""filter"": [ ""{!tag=tag1}id:\""X\"""" ] }"); var container = new JObject(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TestDocument>(expressionBuilder); var parameter = (IFilterParameter <TestDocument>) new FilterParameter <TestDocument>(); parameter.Query = searchQuery.Field(q => q.Id).AddValue("X"); parameter.TagName = "tag1"; // Act ((ISearchItemExecution <JObject>)parameter).Execute(); ((ISearchItemExecution <JObject>)parameter).AddResultInContainer(container); // Assert Assert.Equal(expected.ToString(), container.ToString()); }
public void Setup() { var solrExpressOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrExpressOptions, solrConnection); expressionBuilder.LoadDocument(); var facetRange1 = (IFacetRangeParameter <TestDocument>) new FacetRangeParameter <TestDocument>(expressionBuilder, null); facetRange1.FieldExpression = field => field.Age; facetRange1.AliasName = "facetRange"; this._searchParameters = new List <ISearchParameter> { facetRange1 }; this._result = new FacetsResult <TestDocument>(); // Data using http://www.json-generator.com/ var assembly = typeof(FacetsResultBenchmarks).GetTypeInfo().Assembly; var jsonPlainText = EmbeddedResourceHelper.GetByName(assembly, $"SolrExpress.Benchmarks.Solr4.Search.Result.FacetsResultBenchmarks_{this.FacetTypes}{this.ElementsCount}.json"); this._jsonStream = new MemoryStream(Encoding.GetEncoding(0).GetBytes(jsonPlainText)); }
public void FilterQueryParameter001() { // Arrange var container = new List <string>(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var parameter1 = (IFilterParameter <TestDocument>) new FilterParameter <TestDocument>(); parameter1.Query = new SearchQuery <TestDocument>(expressionBuilder).Field(q => q.Id).AddValue("X"); var parameter2 = (IFilterParameter <TestDocument>) new FilterParameter <TestDocument>(); parameter2.Query = new SearchQuery <TestDocument>(expressionBuilder).Field(q => q.Score).AddValue("Y"); // Act ((ISearchItemExecution <List <string> >)parameter1).Execute(); ((ISearchItemExecution <List <string> >)parameter1).AddResultInContainer(container); ((ISearchItemExecution <List <string> >)parameter2).Execute(); ((ISearchItemExecution <List <string> >)parameter2).AddResultInContainer(container); // Assert Assert.Equal(2, container.Count); Assert.Equal("fq=id:\"X\"", container[0]); Assert.Equal("fq=score:\"Y\"", container[1]); }
public void LocalParameter001() { // Arrange var expected = JObject.Parse(@" { ""params"": { ""myLocalParameter"": ""id:\""ITEM01\"""" } }"); var container = new JObject(); var parameter = new LocalParameter <TestDocument>(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TestDocument>(expressionBuilder); parameter.Name = "myLocalParameter"; parameter.Query = searchQuery.Field(q => q.Id).EqualsTo("ITEM01"); // Act ((ISearchItemExecution <JObject>)parameter).Execute(); ((ISearchItemExecution <JObject>)parameter).AddResultInContainer(container); // Assert Assert.Equal(expected.ToString(), container.ToString()); }
public void BaseFieldsParameter001() { // Arrange var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var parameter1 = new Mock <BaseFieldsParameter <TestDocument> > { CallBase = true }.Object; parameter1.ExpressionBuilder = expressionBuilder; parameter1.FieldExpressions = new Expression <Func <TestDocument, object> >[] { q => q.Id, q => q.Score }; // Act var result = parameter1.Equals(parameter1); // Assert Assert.True(result); }
public void ExpressionBuilder006() { // Arrange var solrExpressOptions = new SolrExpressOptions(); var solrConnection = new Mock <ISolrConnection>(); solrConnection .Setup(q => q.Get(It.Is <string>(s => s.EndsWith("schema/fields")), It.IsAny <List <string> >())) .Returns(@" { ""fields"": [ { ""name"": ""id"", ""indexed"": true, ""stored"": true }, { ""name"": ""no_dynamic"", ""indexed"": true, ""stored"": true }, { ""name"": ""dynamic"", ""indexed"": true, ""stored"": true }] }"); solrConnection .Setup(q => q.Get(It.Is <string>(s => s.EndsWith("schema/dynamicfields")), It.IsAny <List <string> >())) .Returns(@" { ""dynamicFields"": [{ ""name"": ""*_x"", ""indexed"": true, ""stored"": true }] }"); var expressionBuilder = new ExpressionBuilder <TestDocumentDynamic>(solrExpressOptions, solrConnection.Object); expressionBuilder.LoadSolrSchemaFields(); // Act var fieldData = expressionBuilder.GetFieldSchema("id_x"); // Assert Assert.True(fieldData.IsIndexed); Assert.True(fieldData.IsStored); }
public DocumentSearch( SolrExpressOptions solrExpressOptions, ISolrExpressServiceProvider <TDocument> serviceProvider, ISearchItemCollection <TDocument> searchItemCollection) { Checker.IsNull(solrExpressOptions); Checker.IsNull(serviceProvider); Checker.IsNull(searchItemCollection); this._solrExpressOptions = solrExpressOptions; this._searchItemCollection = searchItemCollection; this.ServiceProvider = serviceProvider; }
public void SearchQueryFact006() { // Arrange var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TechProductDocument>(); var expressionBuilder = new ExpressionBuilder <TechProductDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TechProductDocument>(expressionBuilder); // Act var result = searchQuery.AddValue(new DateTime(1984, 09, 05, 10, 20, 30)).Execute(); // Assert Assert.Equal("1984-09-05T10:20:30Z", result); }
public void SearchQueryFact004() { // Arrange var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TechProductDocument>(); var expressionBuilder = new ExpressionBuilder <TechProductDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TechProductDocument>(expressionBuilder); // Act var result = searchQuery.EqualsTo(10).Execute(); // Assert Assert.Equal("10", result); }
public void SearchQueryFact006() { // Arrange var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TestDocument>(expressionBuilder); // Act var result = searchQuery.Field(q => q.Id).Execute(); // Assert Assert.Equal("id", result); }
public void SearchQueryFact009() { // Arrange var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TechProductDocument>(); var expressionBuilder = new ExpressionBuilder <TechProductDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TechProductDocument>(expressionBuilder); // Act var result = searchQuery.Contains("some value").Execute(); // Assert Assert.Equal(@"/*.some value.*/", result); }
public void ExpressionBuilder002() { // Arrange var solrExpressOptions = new SolrExpressOptions(); var solrConnection = new Mock <ISolrConnection>(); solrConnection .Setup(q => q.Get(It.Is <string>(s => s.EndsWith("schema/fields")), It.IsAny <List <string> >())) .Returns(@" { ""fields"": [ { ""name"": ""id"", ""indexed"": true, ""stored"": true }, { ""name"": ""no_dynamic"", ""indexed"": true, ""stored"": true }, { ""name"": ""dynamic"", ""indexed"": true, ""stored"": true }] }"); solrConnection .Setup(q => q.Get(It.Is <string>(s => s.EndsWith("schema/dynamicfields")), It.IsAny <List <string> >())) .Returns(@" { ""dynamicFields"": [] }"); var expressionBuilder = new ExpressionBuilder <TestDocumentDynamic>(solrExpressOptions, solrConnection.Object); expressionBuilder.LoadDocument(); // Act var fieldName = expressionBuilder.GetFieldName(q => q.DynamicWithPrefixAndSufix); // Assert Assert.Equal("prefix_dynamic_suffix", fieldName); }
public void SearchQueryFact010() { // Arrange var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TechProductDocument>(); var expressionBuilder = new ExpressionBuilder <TechProductDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TechProductDocument>(expressionBuilder); // Act var result = searchQuery .Field(f => f.Id).EqualsTo(10) .Or(q => q.Field(f => f.Name).Any("name#1", "name#2", "name#3")) .Execute(); // Assert Assert.Equal("id:10 OR (name:(\"name#1\" OR \"name#2\" OR \"name#3\"))", result); }
public void SpatialFilterParameterTheory001(Action <ISpatialFilterParameter <TestDocument> > config, JObject expectd) { // Arrange var container = new JObject(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var parameter = (ISpatialFilterParameter <TestDocument>) new SpatialFilterParameter <TestDocument>(expressionBuilder); config.Invoke(parameter); // Act ((ISearchItemExecution <JObject>)parameter).Execute(); ((ISearchItemExecution <JObject>)parameter).AddResultInContainer(container); // Assert Assert.Equal(expectd.ToString(), container.ToString()); }
public void FacetRangeParameterTheory002(Action <IFacetRangeParameter <TestDocument> > config) { // Arrange var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var serviceProvider = new Mock <ISolrExpressServiceProvider <TestDocument> >(); serviceProvider .Setup(q => q.GetService <SearchQuery <TestDocument> >()) .Returns(new SearchQuery <TestDocument>(expressionBuilder)); var parameter = (IFacetRangeParameter <TestDocument>) new FacetRangeParameter <TestDocument>(expressionBuilder, serviceProvider.Object); config.Invoke(parameter); // Act / Assert Assert.Throws <UnsupportedFeatureException>(() => ((ISearchItemExecution <List <string> >)parameter).Execute()); }
public void SortParameter001() { // Arrange var container = new List <string>(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var parameter = (ISortParameter <TestDocument>) new SortParameter <TestDocument>(expressionBuilder); parameter.FieldExpression(q => q.Id); // Act ((ISearchItemExecution <List <string> >)parameter).Execute(); ((ISearchItemExecution <List <string> >)parameter).AddResultInContainer(container); // Assert Assert.Single(container); Assert.Equal("sort=id asc", container[0]); }
public void DefaultFieldParameter001() { // Arrange var container = new List <string>(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var parameter = new DefaultFieldParameter <TestDocument>(expressionBuilder) { FieldExpression = q => q.Id }; // Act parameter.Execute(); parameter.AddResultInContainer(container); // Assert Assert.Single(container); Assert.Equal("df=id", container[0]); }
public void QueryParameter002() { // Arrange var container = new List <string>(); var parameter = (IQueryParameter <TestDocument>) new QueryParameter <TestDocument>(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TestDocument>(expressionBuilder); parameter.Value = searchQuery.EqualsTo("ITEM01"); // Act ((ISearchItemExecution <List <string> >)parameter).Execute(); ((ISearchItemExecution <List <string> >)parameter).AddResultInContainer(container); // Assert Assert.Single(container); Assert.Equal("q=\"ITEM01\"", container[0]); }
public void FacetRangeParameterTheory001(Action <IFacetRangeParameter <TestDocument> > config, string expectd) { // Arrange var container = new List <string>(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var parameter = (IFacetRangeParameter <TestDocument>) new FacetRangeParameter <TestDocument>(expressionBuilder, null); config.Invoke(parameter); // Act ((ISearchItemExecution <List <string> >)parameter).Execute(); ((ISearchItemExecution <List <string> >)parameter).AddResultInContainer(container); // Assert var actual = string.Join("&", container); Assert.Equal(expectd, actual); }
public void StandardQueryParameter001() { // Arrange var expected = JObject.Parse("{\"params\":{\"q.alt\": \"id:\\\"ITEM01\\\"\"}}"); var container = new JObject(); var parameter = (IStandardQueryParameter <TestDocument>) new StandardQueryParameter <TestDocument>(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TestDocument>(expressionBuilder); parameter.Value = searchQuery.Field(q => q.Id).EqualsTo("ITEM01"); // Act ((ISearchItemExecution <JObject>)parameter).Execute(); ((ISearchItemExecution <JObject>)parameter).AddResultInContainer(container); // Assert Assert.Equal(expected.ToString(), container.ToString()); }
public void LocalParameter001() { // Arrange var container = new List <string>(); var parameter = new LocalParameter <TestDocument>(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TestDocument>(expressionBuilder); parameter.Name = "myLocalParameter"; parameter.Query = searchQuery.Field(q => q.Id).EqualsTo("ITEM01"); // Act ((ISearchItemExecution <List <string> >)parameter).Execute(); ((ISearchItemExecution <List <string> >)parameter).AddResultInContainer(container); // Assert Assert.Single(container); Assert.Equal("myLocalParameter=id:\"ITEM01\"", container[0]); }
public void BoostParameterTheory001(BoostFunctionType boostFunctionType, string expected) { // Arrange var container = new List <string>(); var solrOptions = new SolrExpressOptions(); var solrConnection = new FakeSolrConnection <TestDocument>(); var expressionBuilder = new ExpressionBuilder <TestDocument>(solrOptions, solrConnection); expressionBuilder.LoadDocument(); var searchQuery = new SearchQuery <TestDocument>(expressionBuilder); var parameter = (IBoostParameter <TestDocument>) new BoostParameter <TestDocument>(); parameter.BoostFunctionType = boostFunctionType; parameter.Query = searchQuery.Field(q => q.Id); // Act ((ISearchItemExecution <List <string> >)parameter).Execute(); ((ISearchItemExecution <List <string> >)parameter).AddResultInContainer(container); // Assert Assert.Single(container); Assert.Equal(expected, container[0]); }
public void DocumentSearchFact001() { // Arrange var solrExpressOptions = new SolrExpressOptions { CheckAnyParameter = true }; var serviceProvider = new Mock <ISolrExpressServiceProvider <TestDocument> >(); var searchItemCollection = new Mock <ISearchItemCollection <TestDocument> >(); var documentSearch = new DocumentSearch <TestDocument>( solrExpressOptions, serviceProvider.Object, searchItemCollection.Object); var parameter = new FakeParameter { Name = "q" }; // Act / Assert Assert.Throws <SearchParameterIsInvalidException>(() => documentSearch.ValidateSearchItem(parameter)); }
public void DocumentSearchFact002() { // Arrange var solrExpressOptions = new SolrExpressOptions { CheckAnyParameter = false }; var serviceProvider = new Mock <ISolrExpressServiceProvider <TestDocument> >(); var searchItemCollection = new Mock <ISearchItemCollection <TestDocument> >(); var documentSearch = new DocumentSearch <TestDocument>( solrExpressOptions, serviceProvider.Object, searchItemCollection.Object); var parameter = new FakeParameter { Name = "q" }; // Act / Assert documentSearch.ValidateSearchItem(parameter); }