Skip to content

Commit 0742222

Browse files
committed
[ksqlDB.RestApi.Client]: added TypeExtensionsTests.GetMemberNameunit tests
1 parent 6e9a86c commit 0742222

File tree

2 files changed

+71
-14
lines changed

2 files changed

+71
-14
lines changed

Tests/ksqlDB.RestApi.Client.Tests/Infrastructure/Extensions/TypeExtensionsTests.cs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System.Collections;
2+
using System.Linq.Expressions;
3+
using System.Reflection;
24
using System.Text;
35
using System.Text.Json.Serialization;
46
using FluentAssertions;
@@ -358,6 +360,8 @@ public void TryGetAttribute()
358360
attribute.Should().BeOfType<KeyAttribute>();
359361
}
360362

363+
#region GetMemberName
364+
361365
private record MySensor
362366
{
363367
[JsonPropertyName("SensorId")]
@@ -416,4 +420,64 @@ public void GetMemberName_ModelBuilderHasColumnName()
416420
//Assert
417421
memberName.Should().Be(columnName);
418422
}
423+
424+
[Test]
425+
public void GetMemberName_MemberExpression_ModelBuilderHasColumnName()
426+
{
427+
//Arrange
428+
var columnName = "Id";
429+
Expression<Func<MySensor, string>> expression = c => c.SensorId2;
430+
431+
var modelBuilder = new ModelBuilder();
432+
modelBuilder.Entity<MySensor>()
433+
.Property(expression)
434+
.HasColumnName(columnName);
435+
436+
//Act
437+
var memberName = ((MemberExpression)expression.Body).GetMemberName(modelBuilder);
438+
439+
//Assert
440+
memberName.Should().Be(columnName);
441+
}
442+
443+
[Test]
444+
public void GetMemberName_FromMemberExpression_JsonPropertyNameAttributeWasUsed()
445+
{
446+
//Arrange
447+
Expression<Func<MySensor, string>> expression = c => c.SensorId2;
448+
449+
var modelBuilder = new ModelBuilder();
450+
modelBuilder.Entity<MySensor>()
451+
.Property(expression)
452+
.WithHeaders();
453+
var memberExpression = (MemberExpression) expression.Body;
454+
455+
//Act
456+
var memberName = memberExpression.GetMemberName(modelBuilder);
457+
458+
//Assert
459+
var jsonPropertyNameAttribute = memberExpression.Member.GetCustomAttribute<JsonPropertyNameAttribute>();
460+
memberName.Should().Be(jsonPropertyNameAttribute?.Name);
461+
}
462+
463+
[Test]
464+
public void GetMemberName_FromMemberExpression_PropertyNameWasUsed()
465+
{
466+
//Arrange
467+
Expression<Func<MySensor, string>> expression = c => c.Title;
468+
469+
var modelBuilder = new ModelBuilder();
470+
modelBuilder.Entity<MySensor>()
471+
.Property(expression)
472+
.WithHeaders();
473+
var memberExpression = (MemberExpression)expression.Body;
474+
475+
//Act
476+
var memberName = memberExpression.GetMemberName(modelBuilder);
477+
478+
//Assert
479+
memberName.Should().Be(nameof(MySensor.Title));
480+
}
481+
482+
#endregion
419483
}

Tests/ksqlDB.RestApi.Client.Tests/KSql/Query/KSqlQueryGeneratorTests.cs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class KSqlQueryGeneratorTests : TestBase
2727
readonly string streamName = nameof(Location) + "s";
2828

2929
private KSqlDBContextOptions contextOptions = null!;
30+
private ModelBuilder modelBuilder = null!;
3031
private QueryContext queryContext = null!;
3132

3233
[SetUp]
@@ -35,7 +36,11 @@ public override void TestInitialize()
3536
base.TestInitialize();
3637

3738
contextOptions = new KSqlDBContextOptions(TestParameters.KsqlDbUrl);
38-
queryContext = new QueryContext();
39+
modelBuilder = new ModelBuilder();
40+
queryContext = new QueryContext()
41+
{
42+
ModelBuilder = modelBuilder
43+
};
3944
ClassUnderTest = new KSqlQueryGenerator(contextOptions);
4045
}
4146

@@ -93,7 +98,6 @@ public void BuildKSql_ModelBuilder_HasColumnNameOverride()
9398
{
9499
//Arrange
95100
string idColumnName = "Id";
96-
ModelBuilder modelBuilder = new ModelBuilder();
97101
modelBuilder.Entity<MySensor>()
98102
.Property(c => c.SensorId2)
99103
.HasColumnName(idColumnName);
@@ -103,11 +107,6 @@ public void BuildKSql_ModelBuilder_HasColumnNameOverride()
103107
.Where(c => c.SensorId2 == "1")
104108
.Select(c => c.SensorId2);
105109

106-
queryContext = new QueryContext()
107-
{
108-
ModelBuilder = modelBuilder
109-
};
110-
111110
//Act
112111
var ksql = ClassUnderTest.BuildKSql(query.Expression, queryContext);
113112

@@ -133,7 +132,6 @@ public void BuildKSql_ModelBuilder_HasColumnNameOverride_ForPropertyInBaseClass(
133132
{
134133
//Arrange
135134
string idColumnName = "SensorId";
136-
ModelBuilder modelBuilder = new ModelBuilder();
137135
modelBuilder.Entity<Derived>()
138136
.Property(c => c.Id)
139137
.HasColumnName(idColumnName);
@@ -142,12 +140,7 @@ public void BuildKSql_ModelBuilder_HasColumnNameOverride_ForPropertyInBaseClass(
142140
.CreatePushQuery<Derived>()
143141
.Where(c => c.Id == 1)
144142
.Select(c => c.Id);
145-
146-
queryContext = new QueryContext()
147-
{
148-
ModelBuilder = modelBuilder
149-
};
150-
143+
151144
//Act
152145
var ksql = ClassUnderTest.BuildKSql(query.Expression, queryContext);
153146

0 commit comments

Comments
 (0)