From 500a586549dfa22ff4475c652e959f0316912519 Mon Sep 17 00:00:00 2001 From: Michael Pendon Date: Sun, 11 Oct 2020 16:04:23 +0200 Subject: [PATCH] #234 #235 #236 #237 #238 #239 - Insert/Merge Identity for ExpandoObject. --- .../RepoDb/Extensions/DbConnectionExtension.cs | 12 ++++++++++++ .../RepoDb/Operations/DbConnection/MergeAll.cs | 6 ++++-- .../Operations/InsertAllTest.cs | 2 ++ .../Operations/InsertTest.cs | 2 ++ .../Operations/MergeAllTest.cs | 4 ++++ .../Operations/MergeTest.cs | 4 ++++ .../Operations/InsertAllTest.cs | 2 ++ .../Operations/InsertTest.cs | 2 ++ .../Operations/MergeAllTest.cs | 4 ++++ .../Operations/MergeTest.cs | 4 ++++ .../RepoDb.PostgreSql.IntegrationTests/Helper.cs | 2 +- .../Operations/InsertAllTest.cs | 3 +++ .../Operations/InsertTest.cs | 2 ++ .../Operations/MergeAllTest.cs | 2 ++ .../Operations/MergeTest.cs | 2 ++ .../MDS/Operations/InsertAllTest.cs | 2 ++ .../MDS/Operations/InsertTest.cs | 2 ++ .../MDS/Operations/MergeAllTest.cs | 4 ++++ .../MDS/Operations/MergeTest.cs | 4 ++++ .../SDS/Operations/InsertAllTest.cs | 2 ++ .../SDS/Operations/InsertTest.cs | 2 ++ .../SDS/Operations/MergeAllTest.cs | 4 ++++ .../SDS/Operations/MergeTest.cs | 5 +++++ .../Operations/InsertAllTest.cs | 3 ++- .../Operations/InsertTest.cs | 2 ++ .../Operations/MergeAllTest.cs | 7 +++++-- .../Operations/MergeTest.cs | 4 ++++ 27 files changed, 88 insertions(+), 6 deletions(-) diff --git a/RepoDb.Core/RepoDb/Extensions/DbConnectionExtension.cs b/RepoDb.Core/RepoDb/Extensions/DbConnectionExtension.cs index 87c0d0e80..e5a87018c 100644 --- a/RepoDb.Core/RepoDb/Extensions/DbConnectionExtension.cs +++ b/RepoDb.Core/RepoDb/Extensions/DbConnectionExtension.cs @@ -2389,7 +2389,13 @@ internal static QueryGroup CreateQueryGroupForUpsert(object entity, internal static QueryGroup CreateQueryGroupForUpsert(IDictionary dictionary, IEnumerable qualifiers = null) { + if (qualifiers?.Any() != true) + { + throw new MissingFieldsException("No qualifier fields found for the 'Upsert' operation."); + } + var queryFields = new List(); + foreach (var field in qualifiers) { if (dictionary.ContainsKey(field.Name)) @@ -2397,6 +2403,12 @@ internal static QueryGroup CreateQueryGroupForUpsert(IDictionary queryFields.Add(new QueryField(field, dictionary[field.Name])); } } + + if (queryFields?.Any() != true) + { + throw new MissingFieldsException("No qualifier fields defined for the 'Upsert' operation. Please check the items defined at the dictionary object."); + } + return new QueryGroup(queryFields); } diff --git a/RepoDb.Core/RepoDb/Operations/DbConnection/MergeAll.cs b/RepoDb.Core/RepoDb/Operations/DbConnection/MergeAll.cs index 1cfa5e7c2..55b06c84c 100644 --- a/RepoDb.Core/RepoDb/Operations/DbConnection/MergeAll.cs +++ b/RepoDb.Core/RepoDb/Operations/DbConnection/MergeAll.cs @@ -1502,13 +1502,14 @@ internal static int UpsertAllInternalBase(this IDbConnection connection } // Iterate the entities + var immutableFields = fields.AsList(); // Fix for the IDictionary object foreach (var entity in entities.AsList()) { // Call the upsert var upsertResult = connection.UpsertInternalBase(tableName, entity, qualifiers, - fields, + immutableFields, hints, commandTimeout, transaction, @@ -1903,13 +1904,14 @@ internal static async Task UpsertAllAsyncInternalBase(this IDbConn } // Iterate the entities + var immutableFields = fields.AsList(); // Fix for the IDictionary object foreach (var entity in entities.AsList()) { // Call the upsert var upsertResult = await connection.UpsertAsyncInternalBase(tableName, entity, qualifiers, - fields, + immutableFields, hints, commandTimeout, transaction, diff --git a/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/InsertAllTest.cs b/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/InsertAllTest.cs index aaba95519..9197b41d8 100644 --- a/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/InsertAllTest.cs +++ b/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/InsertAllTest.cs @@ -195,6 +195,7 @@ public void TestMySqlConnectionInsertAllViaTableNameAsExpandoObjectsForIdentity( // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -343,6 +344,7 @@ public void TestMySqlConnectionInsertAllAsyncViaTableNameAsExpandoObjectsForIden // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/InsertTest.cs b/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/InsertTest.cs index ab58b754d..0e847e524 100644 --- a/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/InsertTest.cs +++ b/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/InsertTest.cs @@ -202,6 +202,7 @@ public void TestMySqlConnectionInsertViaTableNameAsExpandoObjectForIdentity() // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.IsTrue(((dynamic)table).Id == Convert.ToInt64(result)); // Act var queryResult = connection.Query(result); @@ -356,6 +357,7 @@ public void TestMySqlConnectionInsertAsyncViaTableNameAsExpandoObjectForIdentity // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.IsTrue(((dynamic)table).Id == Convert.ToInt64(result)); // Act var queryResult = connection.Query(result); diff --git a/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/MergeAllTest.cs b/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/MergeAllTest.cs index 53ceba979..c130d5251 100644 --- a/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/MergeAllTest.cs +++ b/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/MergeAllTest.cs @@ -408,6 +408,7 @@ public void TestMySqlConnectionMergeAllAsExpandoObjectViaTableNameForIdentityFor // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -463,6 +464,7 @@ public void TestMySqlConnectionMergeAllAsExpandoObjectViaTableNameForIdentityFor // Assert Assert.AreEqual(entities.Count, connection.CountAll()); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -801,6 +803,7 @@ public void TestMySqlConnectionMergeAllAsyncAsExpandoObjectViaTableNameForIdenti // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -856,6 +859,7 @@ public void TestMySqlConnectionMergeAllAsyncAsExpandoObjectViaTableNameForIdenti // Assert Assert.AreEqual(entities.Count, connection.CountAll()); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/MergeTest.cs b/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/MergeTest.cs index bb47ce55d..dbe1a85bb 100644 --- a/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/MergeTest.cs +++ b/RepoDb.MySql/RepoDb.MySql.IntegrationTests/Operations/MergeTest.cs @@ -228,6 +228,7 @@ public void TestMySqlConnectionMergeAsExpandoObjectViaTableNameForIdentityForEmp // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.IsTrue(((dynamic)table).Id == Convert.ToInt64(result)); Helper.AssertMembersEquality(queryResult.First(), table); } } @@ -278,6 +279,7 @@ public void TestMySqlConnectionMergeAsExpandoObjectViaTableNameForIdentityForNon // Assert Assert.AreEqual(1, connection.CountAll()); Assert.AreEqual(table.Id, result); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -442,6 +444,7 @@ public void TestMySqlConnectionMergeAsyncAsExpandoObjectViaTableNameForIdentityF // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.IsTrue(((dynamic)table).Id == Convert.ToInt64(result)); Helper.AssertMembersEquality(queryResult.First(), table); } } @@ -492,6 +495,7 @@ public void TestMySqlConnectionMergeAsyncAsExpandoObjectViaTableNameForIdentityF // Assert Assert.AreEqual(1, connection.CountAll()); Assert.AreEqual(table.Id, result); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); diff --git a/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/InsertAllTest.cs b/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/InsertAllTest.cs index 967aab6fc..3062d9a89 100644 --- a/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/InsertAllTest.cs +++ b/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/InsertAllTest.cs @@ -195,6 +195,7 @@ public void TestMySqlConnectionInsertAllViaTableNameAsExpandoObjectsForIdentity( // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -343,6 +344,7 @@ public void TestMySqlConnectionInsertAllAsyncViaTableNameAsExpandoObjectsForIden // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/InsertTest.cs b/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/InsertTest.cs index b1767091d..0a64c10a0 100644 --- a/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/InsertTest.cs +++ b/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/InsertTest.cs @@ -202,6 +202,7 @@ public void TestMySqlConnectionInsertViaTableNameAsExpandoObjectForIdentity() // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.IsTrue(((dynamic)table).Id == Convert.ToInt64(result)); // Act var queryResult = connection.Query(result); @@ -356,6 +357,7 @@ public void TestMySqlConnectionInsertAsyncViaTableNameAsExpandoObjectForIdentity // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.IsTrue(((dynamic)table).Id == Convert.ToInt64(result)); // Act var queryResult = connection.Query(result); diff --git a/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/MergeAllTest.cs b/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/MergeAllTest.cs index ee0255748..3bfff9846 100644 --- a/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/MergeAllTest.cs +++ b/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/MergeAllTest.cs @@ -408,6 +408,7 @@ public void TestMySqlConnectionMergeAllAsExpandoObjectViaTableNameForIdentityFor // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -463,6 +464,7 @@ public void TestMySqlConnectionMergeAllAsExpandoObjectViaTableNameForIdentityFor // Assert Assert.AreEqual(entities.Count, connection.CountAll()); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -801,6 +803,7 @@ public void TestMySqlConnectionMergeAllAsyncAsExpandoObjectViaTableNameForIdenti // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -856,6 +859,7 @@ public void TestMySqlConnectionMergeAllAsyncAsExpandoObjectViaTableNameForIdenti // Assert Assert.AreEqual(entities.Count, connection.CountAll()); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/MergeTest.cs b/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/MergeTest.cs index b1cb393c1..683031e12 100644 --- a/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/MergeTest.cs +++ b/RepoDb.MySqlConnector/RepoDb.MySqlConnector.IntegrationTests/Operations/MergeTest.cs @@ -228,6 +228,7 @@ public void TestMySqlConnectionMergeAsExpandoObjectViaTableNameForIdentityForEmp // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.IsTrue(((dynamic)table).Id == Convert.ToInt64(result)); Helper.AssertMembersEquality(queryResult.First(), table); } } @@ -278,6 +279,7 @@ public void TestMySqlConnectionMergeAsExpandoObjectViaTableNameForIdentityForNon // Assert Assert.AreEqual(1, connection.CountAll()); Assert.AreEqual(table.Id, result); + Assert.IsTrue(((dynamic)table).Id == Convert.ToInt64(result)); // Act var queryResult = connection.Query(result); @@ -442,6 +444,7 @@ public void TestMySqlConnectionMergeAsyncAsExpandoObjectViaTableNameForIdentityF // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.IsTrue(((dynamic)table).Id == Convert.ToInt64(result)); Helper.AssertMembersEquality(queryResult.First(), table); } } @@ -492,6 +495,7 @@ public void TestMySqlConnectionMergeAsyncAsExpandoObjectViaTableNameForIdentityF // Assert Assert.AreEqual(1, connection.CountAll()); Assert.AreEqual(table.Id, result); + Assert.IsTrue(((dynamic)table).Id == Convert.ToInt64(result)); // Act var queryResult = connection.Query(result); diff --git a/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Helper.cs b/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Helper.cs index 98a613be1..b3948bca2 100644 --- a/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Helper.cs +++ b/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Helper.cs @@ -315,7 +315,7 @@ public static List CreateCompleteTablesAsExpandoObjects(int count for (var i = 0; i < count; i++) { var item = new ExpandoObject() as IDictionary; - item["Id"] = (i + 1); + item["Id"] = (long)(i + 1); item["ColumnBigInt"] = Convert.ToInt64(i); item["ColumnBigIntAsArray"] = new long[] { 1, 2, 3, 4, 5 }; item["ColumnBigSerial"] = Convert.ToInt64(i); diff --git a/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/InsertAllTest.cs b/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/InsertAllTest.cs index e03a446ac..610b6f796 100644 --- a/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/InsertAllTest.cs +++ b/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/InsertAllTest.cs @@ -195,6 +195,7 @@ public void TestPostgreSqlConnectionInsertAllViaTableNameAsExpandoObjectsForIden // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -267,6 +268,7 @@ public void TestPostgreSqlConnectionInsertAllViaTableNameAsExpandoObjectsForNonI // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -343,6 +345,7 @@ public void TestPostgreSqlConnectionInsertAllAsyncViaTableNameAsExpandoObjectsFo // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/InsertTest.cs b/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/InsertTest.cs index fdde16492..23dc6d20d 100644 --- a/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/InsertTest.cs +++ b/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/InsertTest.cs @@ -202,6 +202,7 @@ public void TestPostgreSqlConnectionInsertViaTableNameAsExpandoObjectForIdentity // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -356,6 +357,7 @@ public void TestPostgreSqlConnectionInsertAsyncViaTableNameAsExpandoObjectForIde // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); diff --git a/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/MergeAllTest.cs b/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/MergeAllTest.cs index 275174123..830b92645 100644 --- a/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/MergeAllTest.cs +++ b/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/MergeAllTest.cs @@ -408,6 +408,7 @@ public void TestPostgreSqlConnectionMergeAllAsExpandoObjectViaTableNameForIdenti // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -801,6 +802,7 @@ public void TestPostgreSqlConnectionMergeAllAsyncAsExpandoObjectViaTableNameForI // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/MergeTest.cs b/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/MergeTest.cs index eba18ad7d..f6fd7ef8a 100644 --- a/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/MergeTest.cs +++ b/RepoDb.PostgreSql/RepoDb.PostgreSql.IntegrationTests/Operations/MergeTest.cs @@ -228,6 +228,7 @@ public void TestPostgreSqlConnectionMergeAsExpandoObjectViaTableNameForIdentityF // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); Helper.AssertMembersEquality(queryResult.First(), table); } } @@ -442,6 +443,7 @@ public void TestPostgreSqlConnectionMergeAsyncAsExpandoObjectViaTableNameForIden // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); Helper.AssertMembersEquality(queryResult.First(), table); } } diff --git a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/InsertAllTest.cs b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/InsertAllTest.cs index 7e954c79a..98ef40ca7 100644 --- a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/InsertAllTest.cs +++ b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/InsertAllTest.cs @@ -204,6 +204,7 @@ public void TestSqLiteConnectionInsertAllViaTableNameAsExpandoObjectForIdentity( // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -388,6 +389,7 @@ public void TestSqLiteConnectionInsertAllViaTableNameAsyncAsExpandoObjectForIden // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/InsertTest.cs b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/InsertTest.cs index 92ae40a82..29a053caa 100644 --- a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/InsertTest.cs +++ b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/InsertTest.cs @@ -195,6 +195,7 @@ public void TestSqliteConnectionInsertViaTableNameAsExpandoObjectForIdentity() // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -367,6 +368,7 @@ public void TestSqLiteConnectionInsertAsyncViaTableNameAsExpandoObjectForIdentit // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); diff --git a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/MergeAllTest.cs b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/MergeAllTest.cs index 328e39211..65c2c6788 100644 --- a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/MergeAllTest.cs +++ b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/MergeAllTest.cs @@ -419,6 +419,7 @@ public void TestSqLiteConnectionMergeAllAsExpandoObjectViaTableNameForIdentityFo // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -474,6 +475,7 @@ public void TestSqLiteConnectionMergeAllAsExpandoObjectViaTableNameForIdentityFo // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -815,6 +817,7 @@ public void TestSqLiteConnectionMergeAllAsyncAsExpandoObjectViaTableNameForIdent // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -870,6 +873,7 @@ public void TestSqLiteConnectionMergeAllAsyncAsExpandoObjectViaTableNameForIdent // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/MergeTest.cs b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/MergeTest.cs index f47c9fd32..3d4b0be40 100644 --- a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/MergeTest.cs +++ b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/MDS/Operations/MergeTest.cs @@ -377,6 +377,7 @@ public void TestSqLiteConnectionMergeViaTableNameAsExpandoObjectForIdentityForEm // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue((long)result > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -401,6 +402,7 @@ public void TestSqLiteConnectionMergeViaTableNameAsExpandoObjectForIdentityForNo // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -589,6 +591,7 @@ public void TestSqLiteConnectionMergeAsyncViaTableNameAsExpandoObjectForIdentity // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -613,6 +616,7 @@ public void TestSqLiteConnectionMergeAsyncViaTableNameAsExpandoObjectForIdentity // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); diff --git a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/InsertAllTest.cs b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/InsertAllTest.cs index ef8a44390..5d88b8861 100644 --- a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/InsertAllTest.cs +++ b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/InsertAllTest.cs @@ -204,6 +204,7 @@ public void TestSQLiteConnectionInsertAllViaTableNameAsExpandoObjectForIdentity( // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -388,6 +389,7 @@ public void TestSQLiteConnectionInsertAllViaTableNameAsyncAsExpandoObjectForIden // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/InsertTest.cs b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/InsertTest.cs index b74b1551b..a69a85673 100644 --- a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/InsertTest.cs +++ b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/InsertTest.cs @@ -195,6 +195,7 @@ public void TestSQLiteConnectionInsertViaTableNameAsExpandoObjectForIdentity() // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -367,6 +368,7 @@ public void TestSQLiteConnectionInsertAsyncViaTableNameAsExpandoObjectForIdentit // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); diff --git a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/MergeAllTest.cs b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/MergeAllTest.cs index 2271188d0..4de251b20 100644 --- a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/MergeAllTest.cs +++ b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/MergeAllTest.cs @@ -419,6 +419,7 @@ public void TestSQLiteConnectionMergeAllAsExpandoObjectViaTableNameForIdentityFo // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -474,6 +475,7 @@ public void TestSQLiteConnectionMergeAllAsExpandoObjectViaTableNameForIdentityFo // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -815,6 +817,7 @@ public void TestSQLiteConnectionMergeAllAsyncAsExpandoObjectViaTableNameForIdent // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -870,6 +873,7 @@ public void TestSQLiteConnectionMergeAllAsyncAsExpandoObjectViaTableNameForIdent // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/MergeTest.cs b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/MergeTest.cs index 03eb44dc9..24872cf8a 100644 --- a/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/MergeTest.cs +++ b/RepoDb.SqLite/RepoDb.SqLite.IntegrationTests/SDS/Operations/MergeTest.cs @@ -377,6 +377,7 @@ public void TestSQLiteConnectionMergeViaTableNameAsExpandoObjectForIdentityForEm // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue((long)result > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -401,6 +402,7 @@ public void TestSQLiteConnectionMergeViaTableNameAsExpandoObjectForIdentityForNo // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -589,6 +591,8 @@ public void TestSQLiteConnectionMergeAsyncViaTableNameAsExpandoObjectForIdentity // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.IsTrue((long)result > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -613,6 +617,7 @@ public void TestSQLiteConnectionMergeAsyncViaTableNameAsExpandoObjectForIdentity // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); diff --git a/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/InsertAllTest.cs b/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/InsertAllTest.cs index efa137625..022bc9e81 100644 --- a/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/InsertAllTest.cs +++ b/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/InsertAllTest.cs @@ -1,6 +1,5 @@ using Microsoft.Data.SqlClient; using Microsoft.VisualStudio.TestTools.UnitTesting; -using RepoDb.SqlServer.IntegrationTests; using RepoDb.SqlServer.IntegrationTests.Models; using RepoDb.SqlServer.IntegrationTests.Setup; using System.Linq; @@ -196,6 +195,7 @@ public void TestSqlConnectionInsertAllViaTableNameAsExpandoObjectForIdentity() // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -344,6 +344,7 @@ public void TestSqlConnectionInsertAllAsyncViaTableNameAsExpandoObjectForIdentit // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); diff --git a/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/InsertTest.cs b/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/InsertTest.cs index 1ba1ed886..9cab6c694 100644 --- a/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/InsertTest.cs +++ b/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/InsertTest.cs @@ -202,6 +202,7 @@ public void TestSqlConnectionInsertViaTableNameAsExpandoObjectForIdentity() // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -356,6 +357,7 @@ public void TestSqlConnectionInsertAsyncViaTableNameAsExpandoObjectForIdentity() // Assert Assert.AreEqual(1, connection.CountAll()); Assert.IsTrue(Convert.ToInt64(result) > 0); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); diff --git a/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/MergeAllTest.cs b/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/MergeAllTest.cs index 895395822..2b9539997 100644 --- a/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/MergeAllTest.cs +++ b/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/MergeAllTest.cs @@ -407,6 +407,7 @@ public void TestSqlConnectionMergeAllAsExpandoObjectViaTableNameForIdentityForEm // Assert Assert.AreEqual(tables.Count, connection.CountAll()); Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); @@ -761,7 +762,7 @@ public void TestSqlConnectionMergeAllAsyncViaTableNameForIdentityForEmptyTable() public void TestSqlConnectionMergeAllAsyncAsExpandoObjectViaTableNameForIdentityForEmptyTable() { // Setup - var tables = Helper.CreateCompleteTables(10); + var tables = Helper.CreateCompleteTablesAsExpandoObjects(10); using (var connection = new SqlConnection(Database.ConnectionString)) { @@ -771,13 +772,15 @@ public void TestSqlConnectionMergeAllAsyncAsExpandoObjectViaTableNameForIdentity // Assert Assert.AreEqual(tables.Count, connection.CountAll()); + Assert.AreEqual(tables.Count, result); + Assert.IsTrue(tables.All(table => ((dynamic)table).Id > 0)); // Act var queryResult = connection.QueryAll(); // Assert Assert.AreEqual(tables.Count, queryResult.Count()); - tables.ForEach(table => Helper.AssertMembersEquality(table, queryResult.First(e => e.Id == table.Id))); + tables.ForEach(table => Helper.AssertMembersEquality(queryResult.First(e => e.Id == ((dynamic)table).Id), table)); } } diff --git a/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/MergeTest.cs b/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/MergeTest.cs index 8201dbfe0..28c8990f6 100644 --- a/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/MergeTest.cs +++ b/RepoDb.SqlServer/RepoDb.SqlServer.IntegrationTests/Operations/MergeTest.cs @@ -227,6 +227,7 @@ public void TestSqlConnectionMergeViaTableNameForExpandoObjectIdentityForEmptyTa // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); Helper.AssertMembersEquality(queryResult.First(), table); } } @@ -276,6 +277,7 @@ public void TestSqlConnectionMergeViaTableNameForExpandoObjectIdentityForNonEmpt // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result); @@ -440,6 +442,7 @@ public void TestSqlConnectionMergeAsyncViaTableNameForExpandoObjectIdentityForEm // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); Helper.AssertMembersEquality(queryResult.First(), table); } } @@ -489,6 +492,7 @@ public void TestSqlConnectionMergeAsyncViaTableNameForExpandoObjectIdentityForNo // Assert Assert.AreEqual(1, connection.CountAll()); + Assert.AreEqual(((dynamic)table).Id, result); // Act var queryResult = connection.Query(result);