mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
Add Quest UnitTest
This commit is contained in:
parent
32795da9f4
commit
3eb03ef00a
@ -0,0 +1,213 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FreeSql.Tests.QuestDb.QuestDbTestModel;
|
||||
using FreeSql.Tests.QuestDb.Utils;
|
||||
using Xunit;
|
||||
using static FreeSql.Tests.QuestDb.QuestDbTest;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb.Crud
|
||||
{
|
||||
[TestCaseOrderer("FreeSql.Tests.QuestDb.Utils.TestOrders", "FreeSql.Tests")]
|
||||
public class QuestDbTestInsertAndUpdate
|
||||
{
|
||||
[Fact,Order(1)]
|
||||
public async Task TestInsertAsync()
|
||||
{
|
||||
var result = await fsql.Insert(new QuestDb_Model_Test01()
|
||||
{
|
||||
Primarys = Guid.NewGuid().ToString(),
|
||||
CreateTime = DateTime.Now,
|
||||
Activos = 100.21,
|
||||
Id = "IdAsync",
|
||||
IsCompra = true,
|
||||
NameInsert = "NameInsert",
|
||||
NameUpdate = "NameUpdate"
|
||||
}).ExecuteAffrowsAsync();
|
||||
Assert.True(result > 0);
|
||||
}
|
||||
|
||||
[Fact, Order(2)]
|
||||
public async Task TestInsertBatchAsync()
|
||||
{
|
||||
var list = new List<QuestDb_Model_Test01>()
|
||||
{
|
||||
new QuestDb_Model_Test01()
|
||||
{
|
||||
Primarys = Guid.NewGuid().ToString(),
|
||||
CreateTime = DateTime.Now,
|
||||
Activos = 100.21,
|
||||
Id = "1",
|
||||
IsCompra = true,
|
||||
NameInsert = "NameInsertAsync",
|
||||
NameUpdate = "NameUpdate"
|
||||
},
|
||||
new QuestDb_Model_Test01()
|
||||
{
|
||||
Primarys = Guid.NewGuid().ToString(),
|
||||
CreateTime = DateTime.Now,
|
||||
Activos = 100.21,
|
||||
Id = "2",
|
||||
IsCompra = true,
|
||||
NameInsert = "NameInsertAsync",
|
||||
NameUpdate = "NameUpdate"
|
||||
},
|
||||
new QuestDb_Model_Test01()
|
||||
{
|
||||
Primarys = Guid.NewGuid().ToString(),
|
||||
CreateTime = DateTime.Now,
|
||||
Activos = 100.21,
|
||||
Id = "3",
|
||||
IsCompra = true,
|
||||
NameInsert = "NameInsertAsync",
|
||||
NameUpdate = "NameUpdate"
|
||||
},
|
||||
};
|
||||
var result = await fsql.Insert(list).ExecuteAffrowsAsync();
|
||||
Assert.True(result > 0);
|
||||
}
|
||||
|
||||
[Fact, Order(3)]
|
||||
public async Task TestInsertInsertColumnsAsync()
|
||||
{
|
||||
var list = new List<QuestDb_Model_Test01>()
|
||||
{
|
||||
new QuestDb_Model_Test01()
|
||||
{
|
||||
Primarys = Guid.NewGuid().ToString(),
|
||||
CreateTime = DateTime.Now,
|
||||
Activos = 100.21,
|
||||
Id = "1",
|
||||
IsCompra = true,
|
||||
NameInsert = "NameInsert",
|
||||
NameUpdate = "NameUpdate"
|
||||
},
|
||||
new QuestDb_Model_Test01()
|
||||
{
|
||||
Primarys = Guid.NewGuid().ToString(),
|
||||
CreateTime = DateTime.Now,
|
||||
Activos = 100.21,
|
||||
Id = "2",
|
||||
IsCompra = true,
|
||||
NameInsert = "NameInsert",
|
||||
NameUpdate = "NameUpdate"
|
||||
},
|
||||
new QuestDb_Model_Test01()
|
||||
{
|
||||
Primarys = Guid.NewGuid().ToString(),
|
||||
CreateTime = DateTime.Now,
|
||||
Activos = 100.21,
|
||||
Id = "3",
|
||||
IsCompra = true,
|
||||
NameInsert = "NameInsert",
|
||||
NameUpdate = "NameUpdate"
|
||||
},
|
||||
};
|
||||
var result = await fsql.Insert(list).IgnoreColumns(q => q.NameInsert).ExecuteAffrowsAsync();
|
||||
Assert.True(result > 0);
|
||||
}
|
||||
|
||||
[Fact, Order(4)]
|
||||
public void TestNormalUpdate()
|
||||
{
|
||||
var updateTime = DateTime.Now;
|
||||
var updateObj = fsql.Update<QuestDb_Model_Test01>()
|
||||
.Set(q => q.NameUpdate, "UpdateNow")
|
||||
// .Set(q => q.CreateTime, DateTime.Now) 分表的时间不可以随便改
|
||||
.Where(q => q.Id == "1");
|
||||
var updateSql = updateObj.ToSql();
|
||||
Debug.WriteLine(updateSql);
|
||||
var sql =
|
||||
$@"UPDATE ""QuestDb_Model_Test01"" SET ""NameUpdate"" = 'UpdateNow'
|
||||
WHERE (""Id"" = '1')";
|
||||
Debug.WriteLine(sql);
|
||||
Assert.Equal(updateSql, sql);
|
||||
var result = updateObj.ExecuteAffrows();
|
||||
Assert.True(result > 0);
|
||||
}
|
||||
|
||||
[Fact, Order(5)]
|
||||
public void TestUpdateByModel()
|
||||
{
|
||||
var primary = Guid.NewGuid().ToString();
|
||||
//先插入
|
||||
fsql.Insert(new QuestDb_Model_Test01()
|
||||
{
|
||||
Primarys = primary,
|
||||
CreateTime = DateTime.Now,
|
||||
Activos = 100.21,
|
||||
Id = primary,
|
||||
IsCompra = true,
|
||||
NameInsert = "NameInsert",
|
||||
NameUpdate = "NameUpdate"
|
||||
}).ExecuteAffrows();
|
||||
var updateModel = new QuestDb_Model_Test01
|
||||
{
|
||||
Primarys = primary,
|
||||
Id = primary,
|
||||
Activos = 12.65,
|
||||
};
|
||||
var updateObj = fsql.Update<QuestDb_Model_Test01>().SetSourceIgnore(updateModel, o => o == null);
|
||||
var sql = updateObj.ToSql();
|
||||
Debug.WriteLine(sql);
|
||||
var result = updateObj.ExecuteAffrows();
|
||||
var resultAsync = fsql.Update<QuestDb_Model_Test01>().SetSourceIgnore(updateModel, o => o == null)
|
||||
.ExecuteAffrows();
|
||||
Assert.True(result > 0);
|
||||
Assert.True(resultAsync > 0);
|
||||
Assert.Equal(
|
||||
@$"UPDATE ""QuestDb_Model_Test01"" SET ""Primarys"" = '{primary}', ""NameInsert"" = 'NameDefault', ""Activos"" = 12.65
|
||||
WHERE (""Id"" = '{primary}')", sql);
|
||||
}
|
||||
|
||||
[Fact, Order(6)]
|
||||
public async Task TestUpdateIgnoreColumnsAsync()
|
||||
{
|
||||
var primary = Guid.NewGuid().ToString();
|
||||
var updateTime = DateTime.Now;
|
||||
//先插入
|
||||
fsql.Insert(new QuestDb_Model_Test01()
|
||||
{
|
||||
Primarys = primary,
|
||||
CreateTime = DateTime.Now,
|
||||
Activos = 100.21,
|
||||
Id = primary,
|
||||
IsCompra = true,
|
||||
NameInsert = "NameInsert",
|
||||
NameUpdate = "NameUpdate"
|
||||
}).ExecuteAffrows();
|
||||
var updateModel = new QuestDb_Model_Test01
|
||||
{
|
||||
Id = primary,
|
||||
Activos = 12.65,
|
||||
IsCompra = true,
|
||||
CreateTime = DateTime.Now
|
||||
};
|
||||
var updateObj = fsql.Update<QuestDb_Model_Test01>().SetSource(updateModel)
|
||||
.IgnoreColumns(q => new { q.Id, q.CreateTime });
|
||||
var sql = updateObj.ToSql();
|
||||
Debug.WriteLine(sql);
|
||||
var result = updateObj.ExecuteAffrows();
|
||||
var resultAsync = await fsql.Update<QuestDb_Model_Test01>().SetSource(updateModel)
|
||||
.IgnoreColumns(q => new { q.Id, q.CreateTime }).ExecuteAffrowsAsync();
|
||||
Assert.True(result > 0);
|
||||
Assert.True(resultAsync > 0);
|
||||
Assert.Equal(
|
||||
$@"UPDATE ""QuestDb_Model_Test01"" SET ""Primarys"" = NULL, ""NameUpdate"" = NULL, ""NameInsert"" = 'NameDefault', ""Activos"" = 12.65, ""UpdateTime"" = NULL, ""IsCompra"" = True
|
||||
WHERE (""Id"" = '{primary}')", sql);
|
||||
}
|
||||
|
||||
[Fact, Order(7)]
|
||||
public async Task TestUpdateToUpdateAsync()
|
||||
{
|
||||
//官网demo有问题,暂时放弃此功能
|
||||
var result = await fsql.Select<QuestDb_Model_Test01>().Where(q => q.Id == "IdAsync" && q.NameInsert == null)
|
||||
.ToUpdate()
|
||||
.Set(q => q.UpdateTime, DateTime.Now)
|
||||
.ExecuteAffrowsAsync();
|
||||
}
|
||||
}
|
||||
}
|
184
FreeSql.Tests/FreeSql.Tests/QuestDb/Crud/QuestDbTestSelect.cs
Normal file
184
FreeSql.Tests/FreeSql.Tests/QuestDb/Crud/QuestDbTestSelect.cs
Normal file
@ -0,0 +1,184 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FreeSql.DataAnnotations;
|
||||
using FreeSql.Tests.QuestDb.QuestDbTestModel;
|
||||
using NetTopologySuite.Operation.Valid;
|
||||
using Xunit;
|
||||
using static FreeSql.Tests.QuestDb.QuestDbTest;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb.Crud
|
||||
{
|
||||
public class QuestDbTestSelect
|
||||
{
|
||||
[Fact]
|
||||
public void TestNormal()
|
||||
{
|
||||
var sql = fsql.Select<QuestDb_Model_Test01>().ToSql();
|
||||
Debug.WriteLine(sql);
|
||||
Assert.Equal(
|
||||
@"SELECT a.""Primarys"", a.""Id"", a.""NameUpdate"", a.""NameInsert"", a.""Activos"", a.""CreateTime"", a.""UpdateTime"", a.""IsCompra""
|
||||
FROM ""QuestDb_Model_Test01"" a", sql);
|
||||
|
||||
var sqlWhere = fsql.Select<QuestDb_Model_Test01>().Where(q =>
|
||||
q.UpdateTime.Value.BetweenEnd(DateTime.Parse("2023-02-17 09:35:00"),
|
||||
DateTime.Parse("2023-02-17 10:20:00"))).ToSql();
|
||||
Debug.WriteLine(sqlWhere);
|
||||
Assert.Equal(
|
||||
@"SELECT a.""Primarys"", a.""Id"", a.""NameUpdate"", a.""NameInsert"", a.""Activos"", a.""CreateTime"", a.""UpdateTime"", a.""IsCompra""
|
||||
FROM ""QuestDb_Model_Test01"" a
|
||||
WHERE (a.""UpdateTime"" >= '2023-02-17 09:35:00.000000' and a.""UpdateTime"" < '2023-02-17 10:20:00.000000')",
|
||||
sqlWhere);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(1)]
|
||||
[InlineData(2)]
|
||||
[InlineData(3)]
|
||||
public void TestPageAndCount(int page)
|
||||
{
|
||||
var pageSize = 5;
|
||||
var select = fsql.Select<QuestDb_Model_Test01>().Count(out var total).Page(page, pageSize);
|
||||
var sql = select.ToSql();
|
||||
Debug.WriteLine(sql);
|
||||
switch (page)
|
||||
{
|
||||
case 1:
|
||||
Assert.Equal(
|
||||
@"SELECT a.""Primarys"", a.""Id"", a.""NameUpdate"", a.""NameInsert"", a.""Activos"", a.""CreateTime"", a.""UpdateTime"", a.""IsCompra""
|
||||
FROM ""QuestDb_Model_Test01"" a
|
||||
limit 5", sql);
|
||||
break;
|
||||
case 2:
|
||||
Assert.Equal(
|
||||
@"SELECT a.""Primarys"", a.""Id"", a.""NameUpdate"", a.""NameInsert"", a.""Activos"", a.""CreateTime"", a.""UpdateTime"", a.""IsCompra""
|
||||
FROM ""QuestDb_Model_Test01"" a
|
||||
limit 5,10", sql);
|
||||
break;
|
||||
case 3:
|
||||
Assert.Equal(
|
||||
@"SELECT a.""Primarys"", a.""Id"", a.""NameUpdate"", a.""NameInsert"", a.""Activos"", a.""CreateTime"", a.""UpdateTime"", a.""IsCompra""
|
||||
FROM ""QuestDb_Model_Test01"" a
|
||||
limit 10,15", sql);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestNavigation()
|
||||
{
|
||||
var select = fsql.Select<Topic>()
|
||||
.LeftJoin(a => a.Category.Id == a.CategoryId)
|
||||
.LeftJoin(a => a.Category.Parent.Id == a.Category.ParentId)
|
||||
.Where(a => a.Category.Parent.Id > 0);
|
||||
var sql = select.ToSql();
|
||||
select.ToList();
|
||||
Debug.WriteLine(sql);
|
||||
Assert.Equal(
|
||||
@"SELECT a.""Id"", a.""Title"", a.""Clicks"", a.""CreateTime"", a.""CategoryId"", a__Category.""Id"" as6, a__Category.""Name"", a__Category.""ParentId""
|
||||
FROM ""Topic"" a
|
||||
LEFT JOIN ""Category"" a__Category ON a__Category.""Id"" = a.""CategoryId""
|
||||
LEFT JOIN ""CategoryType"" a__Category__Parent ON a__Category__Parent.""Id"" = a__Category.""ParentId""
|
||||
WHERE (a__Category__Parent.""Id"" > 0)", sql);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestComplexJoin()
|
||||
{
|
||||
var select = fsql.Select<Topic, Category, CategoryType>()
|
||||
.LeftJoin(w => w.t1.CategoryId == w.t2.Id)
|
||||
.LeftJoin(w => w.t2.ParentId == w.t3.Id)
|
||||
.Where(w => w.t3.Id > 0);
|
||||
var sql = select.ToSql(w => new { w.t1, w.t2, w.t3 });
|
||||
Debug.WriteLine(sql);
|
||||
select.ToList(w => new { w.t1, w.t2, w.t3 });
|
||||
Assert.Equal(
|
||||
@"SELECT a.""Id"" as1, a.""Title"" as2, a.""Clicks"" as3, a.""CreateTime"" as4, a.""CategoryId"" as5, b.""Id"" as6, b.""Name"" as7, b.""ParentId"" as8, c.""Id"" as9, c.""Name"" as10
|
||||
FROM ""Topic"" a
|
||||
LEFT JOIN ""Category"" b ON a.""CategoryId"" = b.""Id""
|
||||
LEFT JOIN ""CategoryType"" c ON b.""ParentId"" = c.""Id""
|
||||
WHERE (c.""Id"" > 0)", sql);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestUnionAll()
|
||||
{
|
||||
var select = fsql.Select<QuestDb_Model_Test01>().Where(a => a.IsCompra == true)
|
||||
.UnionAll(
|
||||
fsql.Select<QuestDb_Model_Test01>().Where(a => a.IsCompra == true),
|
||||
fsql.Select<QuestDb_Model_Test01>().Where(a => a.IsCompra == true)
|
||||
)
|
||||
.Where(a => a.IsCompra == true);
|
||||
var sql = select.ToSql();
|
||||
Debug.WriteLine(sql);
|
||||
select.ToList();
|
||||
Assert.Equal(
|
||||
@"SELECT a.""Primarys"", a.""Id"", a.""NameUpdate"", a.""NameInsert"", a.""Activos"", a.""CreateTime"", a.""UpdateTime"", a.""IsCompra""
|
||||
FROM ( SELECT a.""Primarys"", a.""Id"", a.""NameUpdate"", a.""NameInsert"", a.""Activos"", a.""CreateTime"", a.""UpdateTime"", a.""IsCompra""
|
||||
FROM ""QuestDb_Model_Test01"" a
|
||||
WHERE (a.""IsCompra"" = True)
|
||||
UNION ALL
|
||||
SELECT a.""Primarys"", a.""Id"", a.""NameUpdate"", a.""NameInsert"", a.""Activos"", a.""CreateTime"", a.""UpdateTime"", a.""IsCompra""
|
||||
FROM ""QuestDb_Model_Test01"" a
|
||||
WHERE (a.""IsCompra"" = True)
|
||||
UNION ALL
|
||||
SELECT a.""Primarys"", a.""Id"", a.""NameUpdate"", a.""NameInsert"", a.""Activos"", a.""CreateTime"", a.""UpdateTime"", a.""IsCompra""
|
||||
FROM ""QuestDb_Model_Test01"" a
|
||||
WHERE (a.""IsCompra"" = True) ) a
|
||||
WHERE (a.""IsCompra"" = True)", sql);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestSampleBy()
|
||||
{
|
||||
var selectSql = fsql.Select<QuestDb_Model_Test01>()
|
||||
.SampleBy(1, SampleUnits.d)
|
||||
.WithTempQuery(q => new { q.Id, q.Activos, count = SqlExt.Count(q.Id).ToValue() })
|
||||
.Where(q => q.Id != "1")
|
||||
.ToSql();
|
||||
Debug.WriteLine(selectSql);
|
||||
var sql = @"SELECT *
|
||||
FROM (
|
||||
SELECT a.""Id"", a.""Activos"", count(a.""Id"") ""count""
|
||||
FROM ""QuestDb_Model_Test01"" a
|
||||
SAMPLE BY 1d
|
||||
) a
|
||||
WHERE (a.""Id"" <> '1')";
|
||||
Assert.Equal(selectSql, sql);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestLatestOn()
|
||||
{
|
||||
var selectSql = fsql.Select<QuestDb_Model_Test01>()
|
||||
.LatestOn(q => q.CreateTime, q => new { q.Id, q.NameUpdate })
|
||||
.ToSql();
|
||||
Debug.WriteLine(selectSql);
|
||||
var sql =
|
||||
@"SELECT a.""Primarys"", a.""Id"", a.""NameUpdate"", a.""NameInsert"", a.""Activos"", a.""CreateTime"", a.""UpdateTime"", a.""IsCompra""
|
||||
FROM ""QuestDb_Model_Test01"" a
|
||||
LATEST ON CreateTime PARTITION BY Id,NameUpdate ";
|
||||
Assert.Equal(selectSql, sql);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestGroup()
|
||||
{
|
||||
//QUEDTDB的GroupBy PostgrSql有所不同
|
||||
var selectSql = fsql.Select<QuestDb_Model_Test01>()
|
||||
.WithTempQuery(q => new { q.Id, q.Activos, count = SqlExt.Count(q.Id).ToValue() })
|
||||
.Where(q => q.Id != "1" && q.count > 1)
|
||||
.ToSql();
|
||||
Debug.WriteLine(selectSql);
|
||||
var sql = @"SELECT *
|
||||
FROM (
|
||||
SELECT a.""Id"", a.""Activos"", count(a.""Id"") ""count""
|
||||
FROM ""QuestDb_Model_Test01"" a ) a
|
||||
WHERE (a.""Id"" <> '1' AND a.""count"" > 1)";
|
||||
Assert.Equal(selectSql, sql);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FreeSql.Tests.QuestDb.QuestDbTestModel;
|
||||
using FreeSql.Tests.QuestDb.Utils;
|
||||
using Xunit;
|
||||
using static FreeSql.Tests.QuestDb.QuestDbTest;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb.Crud
|
||||
{
|
||||
[TestCaseOrderer("FreeSql.Tests.QuestDb.Utils.TestOrders", "FreeSql.Tests")]
|
||||
public class QuestDbTestUpdate
|
||||
{
|
||||
//多线程以及questdb问题转移至 insert中测试
|
||||
}
|
||||
}
|
43
FreeSql.Tests/FreeSql.Tests/QuestDb/QuestDbCodeFirstTest.cs
Normal file
43
FreeSql.Tests/FreeSql.Tests/QuestDb/QuestDbCodeFirstTest.cs
Normal file
@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FreeSql.DataAnnotations;
|
||||
using FreeSql.Provider.QuestDb.Subtable;
|
||||
using FreeSql.Tests.QuestDb.QuestDbTestModel;
|
||||
using Xunit;
|
||||
using static FreeSql.Tests.QuestDb.QuestDbTest;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb
|
||||
{
|
||||
public class QuestDbCodeFirstTest
|
||||
{
|
||||
[Fact]
|
||||
public void Test_SyncStructure()
|
||||
{
|
||||
fsql.CodeFirst.SyncStructure<QuestDb_Model_Test01>();
|
||||
fsql.CodeFirst.SyncStructure(typeof(Topic));
|
||||
fsql.CodeFirst.SyncStructure(typeof(Category));
|
||||
fsql.CodeFirst.SyncStructure(typeof(CategoryType));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Test_SyncStructure_Type()
|
||||
{
|
||||
fsql.CodeFirst.SyncStructure<QuestDb_Model_Type01>();
|
||||
var result = fsql.Insert(new QuestDb_Model_Type01()
|
||||
{
|
||||
TestBool = false,
|
||||
TestDecimal = (decimal?)153.02,
|
||||
TestDouble = 152.61,
|
||||
TestInt = 1,
|
||||
TestLong = 1569212,
|
||||
TestShort = 2,
|
||||
TestString = "string",
|
||||
TestTime = DateTime.Now
|
||||
}).ExecuteAffrows();
|
||||
Assert.Equal(1, result);
|
||||
}
|
||||
}
|
||||
}
|
31
FreeSql.Tests/FreeSql.Tests/QuestDb/QuestDbDbFirstTest.cs
Normal file
31
FreeSql.Tests/FreeSql.Tests/QuestDb/QuestDbDbFirstTest.cs
Normal file
@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FreeSql.Tests.QuestDb.QuestDbTestModel;
|
||||
using Xunit;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb
|
||||
{
|
||||
public class QuestDbDbFirstTest
|
||||
{
|
||||
[Fact]
|
||||
public void Test_ExistsTable()
|
||||
{
|
||||
var existsTable = QuestDbTest.fsql.DbFirst.ExistsTable(nameof(QuestDb_Model_Test01));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Test_GetTablesByDatabase()
|
||||
{
|
||||
var tablesByDatabase = QuestDbTest.fsql.DbFirst.GetTablesByDatabase("");
|
||||
tablesByDatabase.ForEach(d =>
|
||||
{
|
||||
Debug.WriteLine(d.Name);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
19
FreeSql.Tests/FreeSql.Tests/QuestDb/QuestDbTest.cs
Normal file
19
FreeSql.Tests/FreeSql.Tests/QuestDb/QuestDbTest.cs
Normal file
@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb
|
||||
{
|
||||
public class QuestDbTest
|
||||
{
|
||||
public static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
|
||||
.UseConnectionString(FreeSql.DataType.QuestDb,
|
||||
@"host=192.168.0.36;port=8812;username=admin;password=quest;database=qdb;ServerCompatibilityMode=NoTypeLoading;")
|
||||
.UseMonitorCommand(cmd => Debug.WriteLine($"Sql:{cmd.CommandText}")) //监听SQL语句
|
||||
.UseNoneCommandParameter(true)
|
||||
.Build();
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FreeSql.DataAnnotations;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb.QuestDbTestModel
|
||||
{
|
||||
public class Topic
|
||||
{
|
||||
[Column(IsIdentity = true)] public int Id { get; set; }
|
||||
public string Title { get; set; }
|
||||
public int Clicks { get; set; }
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
public int CategoryId { get; set; }
|
||||
public Category Category { get; set; }
|
||||
}
|
||||
|
||||
public class Category
|
||||
{
|
||||
[Column(IsIdentity = true)] public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
|
||||
public int ParentId { get; set; }
|
||||
public CategoryType Parent { get; set; }
|
||||
public List<Topic> Topics { get; set; }
|
||||
}
|
||||
|
||||
public class CategoryType
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
using FreeSql.Provider.QuestDb.Subtable;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FreeSql.DataAnnotations;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb.QuestDbTestModel
|
||||
{
|
||||
[Index("Id_Index", nameof(Id), false)]
|
||||
class QuestDb_Model_Test01
|
||||
{
|
||||
public string Primarys { get; set; }
|
||||
|
||||
[Column(DbType = "symbol",IsPrimary = true)] public string Id { get; set; }
|
||||
|
||||
[Column(OldName = "Name")] public string NameUpdate { get; set; }
|
||||
|
||||
public string NameInsert { get; set; } = "NameDefault";
|
||||
|
||||
public double? Activos { get; set; }
|
||||
|
||||
[AutoSubtable(SubtableType.Day)] public DateTime? CreateTime { get; set; }
|
||||
|
||||
public DateTime? UpdateTime { get; set; }
|
||||
|
||||
public bool? IsCompra { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
using FreeSql.Provider.QuestDb.Subtable;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FreeSql.DataAnnotations;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb.QuestDbTestModel
|
||||
{
|
||||
class QuestDb_Model_Type01
|
||||
{
|
||||
public string TestString { get; set; }
|
||||
|
||||
public decimal? TestDecimal { get; set; }
|
||||
|
||||
public short TestShort { get; set; }
|
||||
|
||||
public int TestInt { get; set; }
|
||||
|
||||
public long TestLong { get; set; }
|
||||
|
||||
public double TestDouble { get; set; }
|
||||
|
||||
[AutoSubtable(SubtableType.Day)]
|
||||
public DateTime? TestTime { get; set; }
|
||||
|
||||
public bool? TestBool { get; set; }
|
||||
}
|
||||
}
|
27
FreeSql.Tests/FreeSql.Tests/QuestDb/Utils/OrderAttribute.cs
Normal file
27
FreeSql.Tests/FreeSql.Tests/QuestDb/Utils/OrderAttribute.cs
Normal file
@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb.Utils
|
||||
{
|
||||
/// <summary>
|
||||
/// 测试方法的执行顺序
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class OrderAttribute : Attribute
|
||||
{
|
||||
/// <summary>
|
||||
/// 顺序
|
||||
/// </summary>
|
||||
public int Sort
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
public OrderAttribute(int sort)
|
||||
{
|
||||
this.Sort = sort;
|
||||
}
|
||||
}
|
||||
}
|
46
FreeSql.Tests/FreeSql.Tests/QuestDb/Utils/TestOrders.cs
Normal file
46
FreeSql.Tests/FreeSql.Tests/QuestDb/Utils/TestOrders.cs
Normal file
@ -0,0 +1,46 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Xunit.Abstractions;
|
||||
using Xunit.Sdk;
|
||||
|
||||
namespace FreeSql.Tests.QuestDb.Utils
|
||||
{
|
||||
/// <summary>
|
||||
/// 单元测试的排序策略
|
||||
/// </summary>
|
||||
public class TestOrders : ITestCaseOrderer
|
||||
{
|
||||
/// <summary>
|
||||
/// 执行顺序
|
||||
/// </summary>
|
||||
/// <typeparam name="TTestCase"></typeparam>
|
||||
/// <param name="testCases"></param>
|
||||
/// <returns></returns>
|
||||
public IEnumerable<TTestCase> OrderTestCases<TTestCase>(IEnumerable<TTestCase> testCases) where TTestCase : ITestCase
|
||||
{
|
||||
string typeName = typeof(OrderAttribute).AssemblyQualifiedName;
|
||||
var result = testCases.ToList();
|
||||
result.Sort((x, y) =>
|
||||
{
|
||||
var xOrder = x.TestMethod.Method.GetCustomAttributes(typeName)?.FirstOrDefault();
|
||||
if (xOrder == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
var yOrder = y.TestMethod.Method.GetCustomAttributes(typeName)?.FirstOrDefault();
|
||||
if (yOrder == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
var sortX = xOrder.GetNamedArgument<int>("Sort");
|
||||
var sortY = yOrder.GetNamedArgument<int>("Sort");
|
||||
//按照Order标签上的Sort属性,从小到大的顺序执行
|
||||
return sortX - sortY;
|
||||
});
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user