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); + } +} +