Skip to content

Instantly share code, notes, and snippets.

@haefele
Created March 30, 2015 17:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save haefele/f6f96e1062dec14b6cf7 to your computer and use it in GitHub Desktop.
Save haefele/f6f96e1062dec14b6cf7 to your computer and use it in GitHub Desktop.
A test for RavenDB where DocumentQuery doesn't support OfType, although the LINQ Query does support it.
public class DocumentQueryTests : RavenTestBase
{
[Fact]
public void CanUseOfTypeToChangeTheType()
{
using (var store = NewDocumentStore())
{
new Employee_ForSearch().Execute(store);
using (var session = store.OpenSession())
{
session.Store(new Employee
{
FirstName = "Max",
LastName = "Muster",
});
session.Store(new Employee
{
LastName = "Apple",
FirstName = "Cola"
});
session.Store(new Employee
{
LastName = "Muster",
FirstName = "Maxi"
});
session.SaveChanges();
}
WaitForIndexing(store);
using (var session = store.OpenSession())
{
//This works, no issue here
var employees = session.Query<Employee_ForSearch.Result, Employee_ForSearch>()
.Search(f => f.Query, "max")
.OfType<Employee>()
.ToList();
Assert.NotEmpty(employees);
Assert.Equal(employees.Count, 1);
}
using (var session = store.OpenSession())
{
//Here it fails
var employees = session.Advanced.DocumentQuery<Employee_ForSearch.Result, Employee_ForSearch>()
.Search(f => f.Query, "max")
.Cast<Employee>()
.ToList();
Assert.NotEmpty(employees);
Assert.Equal(employees.Count, 1);
}
}
}
}
public class Employee_ForSearch : AbstractIndexCreationTask<Employee, Employee_ForSearch.Result>
{
public class Result
{
public string[] Query { get; set; }
}
public Employee_ForSearch()
{
this.Map = employees =>
from employee in employees
select new Result
{
Query = new[] {employee.FirstName, employee.LastName}
};
this.Index(f => f.Query, FieldIndexing.Analyzed);
}
}
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment