mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32: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