From 81f0094229cea5d08e2bc5cd49258fd9d03e7748 Mon Sep 17 00:00:00 2001 From: "fabien.menager" Date: Sun, 8 Mar 2026 09:37:37 +0100 Subject: [PATCH] Add tests for properties with a getter and setter --- ...terOnAliasProperty.DotNet10_0.verified.txt | 3 ++ ...lterOnAliasProperty.DotNet9_0.verified.txt | 3 ++ ...tyTests.FilterOnAliasProperty.verified.txt | 3 ++ ...electAliasProperty.DotNet10_0.verified.txt | 2 ++ ...SelectAliasProperty.DotNet9_0.verified.txt | 2 ++ ...ertyTests.SelectAliasProperty.verified.txt | 2 ++ .../StatefullPropertyTests.cs | 29 +++++++++++++++++++ ...bleComputedPropertyWithSetter.verified.txt | 17 +++++++++++ .../PropertyTests.cs | 28 ++++++++++++++++++ 9 files changed, 89 insertions(+) create mode 100644 tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.DotNet10_0.verified.txt create mode 100644 tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.DotNet9_0.verified.txt create mode 100644 tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.verified.txt create mode 100644 tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.DotNet10_0.verified.txt create mode 100644 tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.DotNet9_0.verified.txt create mode 100644 tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.verified.txt create mode 100644 tests/EntityFrameworkCore.Projectables.Generator.Tests/PropertyTests.SimpleProjectableComputedPropertyWithSetter.verified.txt diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.DotNet10_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.DotNet10_0.verified.txt new file mode 100644 index 0000000..291fcb8 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.DotNet10_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] +WHERE [e].[Id] = 1 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..291fcb8 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] +WHERE [e].[Id] = 1 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.verified.txt new file mode 100644 index 0000000..291fcb8 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnAliasProperty.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] +WHERE [e].[Id] = 1 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.DotNet10_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.DotNet10_0.verified.txt new file mode 100644 index 0000000..b1c3b32 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.DotNet10_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..b1c3b32 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.verified.txt new file mode 100644 index 0000000..b1c3b32 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectAliasProperty.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.cs b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.cs index 140f7b2..a2dadc2 100644 --- a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.cs +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.cs @@ -24,6 +24,13 @@ public record Entity [Projectable] public int Computed2 => Id * 2; + + [Projectable] + public int Alias + { + get => Id; + set => Id = value; + } } [Fact] @@ -80,5 +87,27 @@ public Task CombineSelectProjectableProperties() return Verifier.Verify(query.ToQueryString()); } + + [Fact] + public Task FilterOnAliasProperty() + { + using var dbContext = new SampleDbContext(); + + var query = dbContext.Set() + .Where(x => x.Alias == 1); + + return Verifier.Verify(query.ToQueryString()); + } + + [Fact] + public Task SelectAliasProperty() + { + using var dbContext = new SampleDbContext(); + + var query = dbContext.Set() + .Select(x => x.Alias); + + return Verifier.Verify(query.ToQueryString()); + } } } diff --git a/tests/EntityFrameworkCore.Projectables.Generator.Tests/PropertyTests.SimpleProjectableComputedPropertyWithSetter.verified.txt b/tests/EntityFrameworkCore.Projectables.Generator.Tests/PropertyTests.SimpleProjectableComputedPropertyWithSetter.verified.txt new file mode 100644 index 0000000..3ad21d6 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.Generator.Tests/PropertyTests.SimpleProjectableComputedPropertyWithSetter.verified.txt @@ -0,0 +1,17 @@ +// +#nullable disable +using System; +using EntityFrameworkCore.Projectables; +using Foo; + +namespace EntityFrameworkCore.Projectables.Generated +{ + [global::System.ComponentModel.EditorBrowsable(global::System.ComponentModel.EditorBrowsableState.Never)] + static class Foo_C_Foo + { + static global::System.Linq.Expressions.Expression> Expression() + { + return (global::Foo.C @this) => @this.Bar; + } + } +} \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.Generator.Tests/PropertyTests.cs b/tests/EntityFrameworkCore.Projectables.Generator.Tests/PropertyTests.cs index 9ca49e3..64c86ad 100644 --- a/tests/EntityFrameworkCore.Projectables.Generator.Tests/PropertyTests.cs +++ b/tests/EntityFrameworkCore.Projectables.Generator.Tests/PropertyTests.cs @@ -471,4 +471,32 @@ public class Bar { return Verifier.Verify(result.GeneratedTrees[0].ToString()); } + + [Fact] + public Task SimpleProjectableComputedPropertyWithSetter() + { + var compilation = CreateCompilation(@" +using System; +using EntityFrameworkCore.Projectables; +namespace Foo { + class C { + public int Bar { get; set; } + + [Projectable] + public int Foo + { + get => Bar; + set => Bar = value; + } + } +} +"); + + var result = RunGenerator(compilation); + + Assert.Empty(result.Diagnostics); + Assert.Single(result.GeneratedTrees); + + return Verifier.Verify(result.GeneratedTrees[0].ToString()); + } } \ No newline at end of file