forked from zzzprojects/System.Linq.Dynamic.Core
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIssue775.cs
More file actions
52 lines (42 loc) · 1.52 KB
/
Issue775.cs
File metadata and controls
52 lines (42 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using NFluent;
using System.Linq.Dynamic.Core.Tests.Helpers.Models;
using FluentAssertions;
using Xunit;
namespace System.Linq.Dynamic.Core.Tests;
public partial class QueryableTests
{
[Fact]
public void Issue775a()
{
// Arrange
var users = User.GenerateSampleModels(10);
// Act
var realResult = users.Where(x => x.Income == users.Select(p => p.Income).Min()).Select(x => x.Id).ToArray();
var result = users.AsQueryable().Where("Income == @0.Select(Income).Min()", users).Select("Id");
// Assert
Check.That(result.ToDynamicArray().Cast<Guid>()).ContainsExactly(realResult);
}
[Fact]
public void Issue775b()
{
// Arrange
var users = User.GenerateSampleModels(10);
var pets = new[] { new Pet() }.AsQueryable();
// Act
var realResult = users.Where(x => x.Income == pets.Select(p => p.Id).FirstOrDefault()).Select(x => x.Id).ToArray();
var result = users.AsQueryable().Where("Income == @0.Select(Id).FirstOrDefault()", pets).Select("Id");
// Assert
Check.That(result.ToDynamicArray().Cast<Guid>()).ContainsExactly(realResult);
}
[Fact]
public void Issue775_Exception()
{
// Arrange
var users = User.GenerateSampleModels(10);
var pets = new[] { new Pet() }.AsQueryable();
// Act
Action act = () => users.AsQueryable().Where("Income == @0.Select(Id).XXX()", pets);
// Assert
act.Should().Throw<InvalidOperationException>();
}
}