Skip to content

Commit 75d1465

Browse files
authored
Add test case for AsQueryable() not working in nested select (#2541)
See #2540
1 parent 053467c commit 75d1465

File tree

2 files changed

+102
-0
lines changed

2 files changed

+102
-0
lines changed

src/NHibernate.Test/Async/Linq/NestedSelectsTests.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
using System;
1212
using System.Collections.ObjectModel;
1313
using System.Linq;
14+
using System.Linq.Expressions;
15+
using NHibernate.DomainModel.Northwind.Entities;
1416
using NUnit.Framework;
1517
using NHibernate.Linq;
1618

@@ -395,5 +397,54 @@ where subQuery.Contains(vm.Id)
395397
var animals = await (outerQuery.ToListAsync());
396398
Assert.That(animals.Count, Is.EqualTo(2));
397399
}
400+
401+
[Test]
402+
public async Task CanSelectWithWhereSubQueryAsync()
403+
{
404+
var query = from timesheet in db.Timesheets
405+
select new
406+
{
407+
timesheet.Id,
408+
Entries = timesheet.Entries.Where(e => e.NumberOfHours >= 0).ToList()
409+
};
410+
411+
var list = await (query.ToListAsync());
412+
413+
Assert.AreEqual(3, list.Count);
414+
}
415+
416+
[KnownBug("GH-2540")]
417+
[Test]
418+
public async Task CanSelectWithAsQueryableAndWhereSubQueryAsync()
419+
{
420+
var query = from timesheet in db.Timesheets
421+
select new
422+
{
423+
timesheet.Id,
424+
Entries = timesheet.Entries.AsQueryable().Where(e => e.NumberOfHours >= 0).ToList()
425+
};
426+
427+
var list = await (query.ToListAsync());
428+
429+
Assert.AreEqual(3, list.Count);
430+
}
431+
432+
[KnownBug("GH-2540")]
433+
[Test]
434+
public async Task CanSelectWithAsQueryableAndWhereSubQueryWithExternalPredicateAsync()
435+
{
436+
Expression<Func<TimesheetEntry, bool>> predicate = e => e.NumberOfHours >= 0;
437+
438+
var query = from timesheet in db.Timesheets
439+
select new
440+
{
441+
timesheet.Id,
442+
Entries = timesheet.Entries.AsQueryable().Where(predicate).ToList()
443+
};
444+
445+
var list = await (query.ToListAsync());
446+
447+
Assert.AreEqual(3, list.Count);
448+
}
398449
}
399450
}

src/NHibernate.Test/Linq/NestedSelectsTests.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System;
22
using System.Collections.ObjectModel;
33
using System.Linq;
4+
using System.Linq.Expressions;
5+
using NHibernate.DomainModel.Northwind.Entities;
46
using NUnit.Framework;
57

68
namespace NHibernate.Test.Linq
@@ -397,5 +399,54 @@ where subQuery.Contains(vm.Id)
397399
var animals = outerQuery.ToList();
398400
Assert.That(animals.Count, Is.EqualTo(2));
399401
}
402+
403+
[Test]
404+
public void CanSelectWithWhereSubQuery()
405+
{
406+
var query = from timesheet in db.Timesheets
407+
select new
408+
{
409+
timesheet.Id,
410+
Entries = timesheet.Entries.Where(e => e.NumberOfHours >= 0).ToList()
411+
};
412+
413+
var list = query.ToList();
414+
415+
Assert.AreEqual(3, list.Count);
416+
}
417+
418+
[KnownBug("GH-2540")]
419+
[Test]
420+
public void CanSelectWithAsQueryableAndWhereSubQuery()
421+
{
422+
var query = from timesheet in db.Timesheets
423+
select new
424+
{
425+
timesheet.Id,
426+
Entries = timesheet.Entries.AsQueryable().Where(e => e.NumberOfHours >= 0).ToList()
427+
};
428+
429+
var list = query.ToList();
430+
431+
Assert.AreEqual(3, list.Count);
432+
}
433+
434+
[KnownBug("GH-2540")]
435+
[Test]
436+
public void CanSelectWithAsQueryableAndWhereSubQueryWithExternalPredicate()
437+
{
438+
Expression<Func<TimesheetEntry, bool>> predicate = e => e.NumberOfHours >= 0;
439+
440+
var query = from timesheet in db.Timesheets
441+
select new
442+
{
443+
timesheet.Id,
444+
Entries = timesheet.Entries.AsQueryable().Where(predicate).ToList()
445+
};
446+
447+
var list = query.ToList();
448+
449+
Assert.AreEqual(3, list.Count);
450+
}
400451
}
401452
}

0 commit comments

Comments
 (0)