Skip to content

Commit 45cad72

Browse files
committed
[ksqlDb.RestApi.Client]: added IgnoreInDML function to the fluent AP unit testsI #90
1 parent cc3243b commit 45cad72

File tree

3 files changed

+52
-2
lines changed

3 files changed

+52
-2
lines changed

Tests/ksqlDB.RestApi.Client.Tests/FluentAPI/Builders/ModelBuilderTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,23 @@ public void Property_IgnoreField()
6767
entityMetadata!.FieldsMetadata.First(c => c.MemberInfo.Name == nameof(Payment.Description)).Ignore.Should().BeTrue();
6868
}
6969

70+
[Test]
71+
public void Property_IgnoreByInsertsField()
72+
{
73+
//Arrange
74+
75+
//Act
76+
var fieldTypeBuilder = builder.Entity<Payment>()
77+
.Property(b => b.Description)
78+
.IgnoreInDML();
79+
80+
//Assert
81+
fieldTypeBuilder.Should().NotBeNull();
82+
var entityMetadata = ((IMetadataProvider)builder).GetEntities().FirstOrDefault(c => c.Type == typeof(Payment));
83+
entityMetadata.Should().NotBeNull();
84+
entityMetadata!.FieldsMetadata.First(c => c.MemberInfo.Name == nameof(Payment.Description)).IgnoreInDML.Should().BeTrue();
85+
}
86+
7087
[Test]
7188
public void Property_HasColumnName()
7289
{
@@ -233,6 +250,7 @@ public void Headers()
233250
var metadata = entityMetadata!.FieldsMetadata.First(c => c.MemberInfo.Name == nameof(Payment.Header));
234251

235252
metadata.HasHeaders.Should().BeTrue();
253+
metadata.IgnoreInDML.Should().BeTrue();
236254
}
237255

238256
private record KeyValuePair

Tests/ksqlDB.RestApi.Client.Tests/KSql/RestApi/Statements/CreateInsertTests.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,38 @@ public void Generate_UseModelBuilder_Ignore()
149149
statement.Should().Be($"INSERT INTO {insertProperties.EntityName} (Title, Id) VALUES ('Title', 1);");
150150
}
151151

152+
private class Actor
153+
{
154+
[Key]
155+
public int Id { get; set; }
156+
public string Name { get; set; } = null!;
157+
}
158+
159+
public static IEnumerable<(IdentifierEscaping, string)> GenerateIgnoreByInsertsTestCases()
160+
{
161+
yield return (Never, "INSERT INTO Actors (Id) VALUES (1);");
162+
yield return (Keywords, "INSERT INTO Actors (Id) VALUES (1);");
163+
yield return (Always, "INSERT INTO `Actors` (`Id`) VALUES (1);");
164+
}
165+
166+
[TestCaseSource(nameof(GenerateIgnoreByInsertsTestCases))]
167+
public void Generate_UseModelBuilder_IgnoreByInserts((IdentifierEscaping escaping, string expected) testCase)
168+
{
169+
//Arrange
170+
modelBuilder.Entity<Actor>()
171+
.Property(c => c.Name)
172+
.IgnoreInDML();
173+
174+
var (escaping, expected) = testCase;
175+
var actor = new Actor { Id = 1, Name = "E.T." };
176+
177+
//Act
178+
var statement = new CreateInsert(modelBuilder).Generate(actor, new InsertProperties { IdentifierEscaping = escaping });
179+
180+
//Assert
181+
statement.Should().Be(expected);
182+
}
183+
152184
[Test]
153185
public void Generate_ShouldNotPluralizeEntityName()
154186
{

Tests/ksqlDB.RestApi.Client.Tests/Models/Movies/Movie.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ namespace ksqlDb.RestApi.Client.Tests.Models.Movies;
44

55
public class Movie
66
{
7-
[IgnoreByInserts]
7+
[ksqlDB.RestApi.Client.KSql.RestApi.Statements.Annotations.Ignore]
88
public long RowTime { get; set; }
99
public string Title { get; set; } = null!;
1010
[Key]
1111
public int Id { get; set; }
1212
public int Release_Year { get; set; }
1313

14-
[IgnoreByInserts]
14+
[ksqlDB.RestApi.Client.KSql.RestApi.Statements.Annotations.Ignore]
1515
public int IgnoreMe { get; set; }
1616

1717
public IEnumerable<int> ReadOnly { get; } = new[] { 1, 2 };

0 commit comments

Comments
 (0)