@@ -1265,6 +1265,180 @@ public void Test_MSSQL_ExecuteCommand_DCL_Queries()
1265
1265
1266
1266
#endregion
1267
1267
1268
+ #region Execute Command Async Tests - << Task<int> ExecuteCommandAsync(string sqlStatement) >>
1269
+
1270
+ [ TestMethod ]
1271
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
1272
+ public async Task Test_MSSQL_ExecuteCommandAsync_DDL_Queries ( )
1273
+ {
1274
+ var createTableSql = Queries . MSSQLQueries . TestDB . DDL . Create_Table ;
1275
+ var alterTableSql = Queries . MSSQLQueries . TestDB . DDL . Alter_Table ;
1276
+ var commentTableSql = Queries . MSSQLQueries . TestDB . DDL . Comment_Table ;
1277
+ var commentTableColumnSql = Queries . MSSQLQueries . TestDB . DDL . Comment_Table_Column ;
1278
+ var truncateTableSql = Queries . MSSQLQueries . TestDB . DDL . Truncate_Table ;
1279
+ var renameTableSql = Queries . MSSQLQueries . TestDB . DDL . Rename_Table ;
1280
+ var dropTableSql = Queries . MSSQLQueries . TestDB . DDL . Drop_Table ;
1281
+ var dDLExecutionCheckSql = Queries . MSSQLQueries . TestDB . DDL . DDL_Execute_check ;
1282
+ var dDLTableCommentCheckSql = Queries . MSSQLQueries . TestDB . DDL . DDL_Table_Comment_check ;
1283
+ var dDLTableColumnCommentCheckSql = Queries . MSSQLQueries . TestDB . DDL . DDL_Table_Column_Comment_check ;
1284
+
1285
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
1286
+ await dbContext . ExecuteCommandAsync ( createTableSql ) ;
1287
+ await dbContext . ExecuteCommandAsync ( alterTableSql ) ;
1288
+ await dbContext . ExecuteCommandAsync ( commentTableSql ) ;
1289
+ await dbContext . ExecuteCommandAsync ( commentTableColumnSql ) ;
1290
+ await dbContext . ExecuteCommandAsync ( truncateTableSql ) ;
1291
+
1292
+ var tableCount = await dbContext
1293
+ . FetchDataAsync ( string . Format ( dDLExecutionCheckSql , "dbo" , "Employee" ) ) ;
1294
+ Assert . AreEqual ( "1" , tableCount [ 0 ] . ReferenceData [ "Table_Count" ] ) ;
1295
+ var tableComment = await dbContext
1296
+ . FetchDataAsync ( string . Format ( dDLTableCommentCheckSql , "dbo" , "Employee" ) ) ;
1297
+ Assert . AreEqual ( "This table stores employee records" , tableComment [ 0 ] . ReferenceData [ "Table_Comment" ] ) ;
1298
+ var tableColumnComment = await dbContext
1299
+ . FetchDataAsync ( string . Format ( dDLTableColumnCommentCheckSql , "dbo" , "Employee" ) ) ;
1300
+ Assert . AreEqual ( "This column stores employee middle name" , tableColumnComment [ 0 ] . ReferenceData [ "Table_Column_Comment" ] ) ;
1301
+
1302
+ await dbContext . ExecuteCommandAsync ( renameTableSql ) ;
1303
+
1304
+ tableCount = await dbContext
1305
+ . FetchDataAsync ( string . Format ( dDLExecutionCheckSql , "dbo" , "Employee" ) ) ;
1306
+ Assert . AreEqual ( "0" , tableCount [ 0 ] . ReferenceData [ "Table_Count" ] ) ;
1307
+ tableCount = await dbContext
1308
+ . FetchDataAsync ( string . Format ( dDLExecutionCheckSql , "dbo" , "Employees" ) ) ;
1309
+ Assert . AreEqual ( "1" , tableCount [ 0 ] . ReferenceData [ "Table_Count" ] ) ;
1310
+
1311
+ await dbContext . ExecuteCommandAsync ( dropTableSql ) ;
1312
+
1313
+ tableCount = await dbContext
1314
+ . FetchDataAsync ( string . Format ( dDLExecutionCheckSql , "dbo" , "Employees" ) ) ;
1315
+ Assert . AreEqual ( "0" , tableCount [ 0 ] . ReferenceData [ "Table_Count" ] ) ;
1316
+ }
1317
+
1318
+ [ TestMethod ]
1319
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
1320
+ public async Task Test_MSSQL_ExecuteCommandAsync_DML_Queries ( )
1321
+ {
1322
+ var insertSql = Queries . MSSQLQueries . TestDB . DML . InsertSql ;
1323
+ var updateSql = Queries . MSSQLQueries . TestDB . DML . UpdateSql ;
1324
+ var deleteSql = Queries . MSSQLQueries . TestDB . DML . DeleteSql ;
1325
+ var verifyDMLExecution = Queries . MSSQLQueries . TestDB . DML . VerifyDMLExecution ;
1326
+
1327
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
1328
+
1329
+ // Insert
1330
+ var rows = await dbContext . ExecuteCommandAsync ( insertSql ) ;
1331
+ Assert . AreEqual ( 1 , rows ) ;
1332
+ var data = await dbContext . FetchDataAsync ( verifyDMLExecution ) ;
1333
+ Assert . AreEqual ( 1 , data . Count ) ;
1334
+ var agent = data . FirstOrDefault ( ) ;
1335
+ Assert . AreEqual ( "A020" , agent . ReferenceData [ "Agent_Code" ] ) ;
1336
+ Assert . AreEqual ( "John" , agent . ReferenceData [ "Agent_Name" ] ) ;
1337
+ Assert . AreEqual ( "Wick" , agent . ReferenceData [ "Working_Area" ] ) ;
1338
+ Assert . AreEqual ( "0.11" , agent . ReferenceData [ "Commission" ] ) ;
1339
+ Assert . AreEqual ( "010-44536178" , agent . ReferenceData [ "Phone_No" ] ) ;
1340
+ Assert . AreEqual ( "" , agent . ReferenceData [ "Country" ] ) ;
1341
+
1342
+ // Update
1343
+ rows = await dbContext . ExecuteCommandAsync ( updateSql ) ;
1344
+ Assert . AreEqual ( 1 , rows ) ;
1345
+ data = await dbContext . FetchDataAsync ( verifyDMLExecution ) ;
1346
+ Assert . AreEqual ( 1 , data . Count ) ;
1347
+ agent = data . FirstOrDefault ( ) ;
1348
+ Assert . AreEqual ( "A020" , agent . ReferenceData [ "Agent_Code" ] ) ;
1349
+ Assert . AreEqual ( "John" , agent . ReferenceData [ "Agent_Name" ] ) ;
1350
+ Assert . AreEqual ( "Wick" , agent . ReferenceData [ "Working_Area" ] ) ;
1351
+ Assert . AreEqual ( "0.15" , agent . ReferenceData [ "Commission" ] ) ;
1352
+ Assert . AreEqual ( "010-44536178" , agent . ReferenceData [ "Phone_No" ] ) ;
1353
+ Assert . AreEqual ( "" , agent . ReferenceData [ "Country" ] ) ;
1354
+
1355
+ // Delete
1356
+ rows = await dbContext . ExecuteCommandAsync ( deleteSql ) ;
1357
+ Assert . AreEqual ( 1 , rows ) ;
1358
+ data = await dbContext . FetchDataAsync ( verifyDMLExecution ) ;
1359
+ Assert . AreEqual ( 0 , data . Count ) ;
1360
+ }
1361
+
1362
+ [ TestMethod ]
1363
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
1364
+ public async Task Test_MSSQL_ExecuteCommandAsync_DML_Unsupported_SELECT_Queries ( )
1365
+ {
1366
+ var selectSql = Queries . MSSQLQueries . TestDB . DML . SelectSql ;
1367
+
1368
+ // Select
1369
+ try
1370
+ {
1371
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
1372
+ var rows = await dbContext . ExecuteCommandAsync ( selectSql ) ;
1373
+ Assert . Fail ( "No Exception" ) ;
1374
+ }
1375
+ catch ( QueryDBException ex )
1376
+ {
1377
+ Assert . AreEqual ( "SELECT queries are not supported here." , ex . Message ) ;
1378
+ Assert . AreEqual ( "UnsupportedCommand" , ex . ErrorType ) ;
1379
+ Assert . AreEqual ( "'ExecuteCommand' doesn't support SELECT queries." , ex . AdditionalInfo ) ;
1380
+ }
1381
+ }
1382
+
1383
+ [ TestMethod ]
1384
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
1385
+ public async Task Test_MSSQL_ExecuteCommandAsync_DCL_Queries ( )
1386
+ {
1387
+ var login = "test_user" ;
1388
+ var user = "test_user" ;
1389
+ var password = "Test@1234" ;
1390
+ var table = "agents" ;
1391
+ var commands = "SELECT, UPDATE" ;
1392
+ var checkCommand = "SELECT" ;
1393
+
1394
+ var createLogin = string . Format ( Queries . MSSQLQueries . TestDB . DCL . CreateLoginSql_Login_Password , login , password ) ;
1395
+ var createUser = string . Format ( Queries . MSSQLQueries . TestDB . DCL . CreateUserSql_User_Login , user , login ) ;
1396
+ var grantSql = string . Format ( Queries . MSSQLQueries . TestDB . DCL . GrantSql_Command_Table_User , commands , table , user ) ;
1397
+ var revokeSql = string . Format ( Queries . MSSQLQueries . TestDB . DCL . RevokeSql_Command_Table_User , commands , table , user ) ;
1398
+ var verifyPermissions = string . Format ( Queries . MSSQLQueries . TestDB . DCL . VerifyPermission_User_Table_Command , user , table , checkCommand ) ;
1399
+ var removeUser = string . Format ( Queries . MSSQLQueries . TestDB . DCL . RemoveUserSql_User , user ) ;
1400
+ var removeLogin = string . Format ( Queries . MSSQLQueries . TestDB . DCL . RemoveLoginSql_Login , login ) ;
1401
+
1402
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
1403
+
1404
+ // Create Login
1405
+ var result = await dbContext . ExecuteCommandAsync ( createLogin ) ;
1406
+ Assert . AreEqual ( - 1 , result ) ;
1407
+
1408
+ // Create User
1409
+ result = await dbContext . ExecuteCommandAsync ( createUser ) ;
1410
+ Assert . AreEqual ( - 1 , result ) ;
1411
+
1412
+ // Existing Permissions
1413
+ var data = await dbContext . FetchDataAsync ( verifyPermissions ) ;
1414
+ var dataRow = data . FirstOrDefault ( ) ;
1415
+ Assert . AreEqual ( "0" , dataRow . ReferenceData [ "HasPermission" ] ) ;
1416
+
1417
+ // Grant
1418
+ result = await dbContext . ExecuteCommandAsync ( grantSql ) ;
1419
+ Assert . AreEqual ( - 1 , result ) ;
1420
+ data = await dbContext . FetchDataAsync ( verifyPermissions ) ;
1421
+ dataRow = data . FirstOrDefault ( ) ;
1422
+ Assert . AreEqual ( "1" , dataRow . ReferenceData [ "HasPermission" ] ) ;
1423
+
1424
+ // Revoke
1425
+ result = await dbContext . ExecuteCommandAsync ( revokeSql ) ;
1426
+ Assert . AreEqual ( - 1 , result ) ;
1427
+ data = await dbContext . FetchDataAsync ( verifyPermissions ) ;
1428
+ dataRow = data . FirstOrDefault ( ) ;
1429
+ Assert . AreEqual ( "0" , dataRow . ReferenceData [ "HasPermission" ] ) ;
1430
+
1431
+ // Remove User
1432
+ result = await dbContext . ExecuteCommandAsync ( removeUser ) ;
1433
+ Assert . AreEqual ( - 1 , result ) ;
1434
+
1435
+ // Remove Login
1436
+ result = await dbContext . ExecuteCommandAsync ( removeLogin ) ;
1437
+ Assert . AreEqual ( - 1 , result ) ;
1438
+ }
1439
+
1440
+ #endregion
1441
+
1268
1442
#region Execute Transaction Tests - << bool ExecuteTransaction(List<string> sqlStatements) >>
1269
1443
1270
1444
[ TestMethod ]
0 commit comments