chaosbot/ChaosBot.UnitTests/DataBaseTests.cs

84 lines
2.2 KiB
C#

using System;
using System.Data;
using System.Linq;
using System.Threading;
using ChaosBot.Attribute;
using ChaosBot.Database;
using ChaosBot.Database.Entity;
using NUnit.Framework;
namespace ChaosBot.UnitTests
{
public class DataBaseTests
{
[SetUp]
public void SetUp()
{
Program.LoadConfiguration("./appsettings.json");
Program.LoadLogger();
AssemblyController.RegisterDBEntityType(typeof(TestEntity));
}
[TearDown]
public void TearDown()
{
Controller.RawQuery("DROP TABLE TestTable;", readOutput: false);
}
[Test]
public void Insert_CanInsertDataToDBAndDeleteFromDB_True()
{
var testEntity = new TestEntity(1);
Assert.AreEqual(0, TestEntity.Query().Count());
TestEntity.Query().Insert(testEntity);
Assert.AreEqual(1, TestEntity.Query().Count());
TestEntity.Query().Delete();
Assert.AreEqual(0, TestEntity.Query().Count());
}
[Test]
public void InsertUpdateDelete_CheckCanInsertUpdateAndDeleteFromDB_True()
{
Assert.AreEqual("", GetDBContent());
TestEntity.Query().Insert(new TestEntity(5));
Assert.AreEqual("5", GetDBContent());
TestEntity.Query().Where("id", 5).Set("id", 6).Update();
Assert.AreEqual("6", GetDBContent());
TestEntity.Query().Where("id", 6).Delete();
Assert.AreEqual("", GetDBContent());
}
public string GetDBContent()
{
return string.Join(" ", TestEntity.Query().Distinct().Get().Select(o => o.id).ToArray());
}
}
[DBEntity("TestTable")]
public class TestEntity : BaseEntity
{
public long id { get; private set; }
public TestEntity() {}
public TestEntity(int id)
{
this.id = id;
}
public static QueryBuilder<TestEntity> Query()
{
return BaseEntity.Query<TestEntity>();
}
public override void SetFromRow(DataRow row)
{
id = (long)row["id"];
}
}
}