diff --git a/TShockAPI/Extensions/DbExt.cs b/TShockAPI/Extensions/DbExt.cs
index 6d52aec2..5785becb 100644
--- a/TShockAPI/Extensions/DbExt.cs
+++ b/TShockAPI/Extensions/DbExt.cs
@@ -45,7 +45,7 @@ namespace TShockAPI.DB
{
com.CommandText = query;
for (int i = 0; i < args.Length; i++)
- com.AddParameter("@" + i, args[i]);
+ com.AddParameter("@" + i, args[i] ?? DBNull.Value);
return com.ExecuteNonQuery();
}
}
diff --git a/TShockLauncher.Tests/GroupTests.cs b/TShockLauncher.Tests/GroupTests.cs
new file mode 100644
index 00000000..9d6b65ad
--- /dev/null
+++ b/TShockLauncher.Tests/GroupTests.cs
@@ -0,0 +1,50 @@
+using NUnit.Framework;
+using Terraria;
+using Terraria.Localization;
+using TShockAPI;
+using TShockAPI.DB;
+
+namespace TShockLauncher.Tests;
+
+public class GroupTests
+{
+ [SetUp]
+ public static void SetupTShock()
+ {
+ LanguageManager.Instance.SetLanguage(GameCulture.DefaultCulture);
+ Lang.InitializeLegacyLocalization();
+
+ //Setup();
+ var ts = new TShock(null); // prepares configs etc
+ ts.Initialize();
+ }
+
+ ///
+ /// This tests to ensure the group commands work.
+ ///
+ /// Due to the switch to Microsoft.Data.Sqlite, nulls have to be replaced with DBNull for the query to complete
+ [TestCase]
+ public void TestPermissions()
+ {
+ var groups = TShock.Groups = new GroupManager(TShock.DB);
+
+ if (!groups.GroupExists("test"))
+ groups.AddGroup("test", null, "test", Group.defaultChatColor);
+
+ groups.AddPermissions("test", new() { "abc" });
+
+ var hasperm = groups.GetGroupByName("test").Permissions.Contains("abc");
+ Assert.IsTrue(hasperm);
+
+ groups.DeletePermissions("test", new() { "abc" });
+
+ hasperm = groups.GetGroupByName("test").Permissions.Contains("abc");
+ Assert.IsFalse(hasperm);
+
+ groups.DeleteGroup("test");
+
+ var g = groups.GetGroupByName("test");
+ Assert.IsNull(g);
+ }
+}
+