XCode/XUnitTest.XCode/Common/SqlBuilderTests.cs

88 lines
3.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using NewLife.Data;
using XCode;
using XCode.Membership;
using Xunit;
namespace XUnitTest.XCode;
public class SqlBuilderTests
{
[Fact]
public void BuildOrder()
{
var factory = User.Meta.Factory;
// 使用Sort此时Desc有效
var page = new PageParameter { Sort = "Name", Desc = false };
var orderby = SqlBuilder.BuildOrder(page, factory);
Assert.Equal("Name", orderby);
page = new PageParameter { Sort = "Name", Desc = true };
orderby = SqlBuilder.BuildOrder(page, factory);
Assert.Equal("Name Desc", orderby);
page = new PageParameter { Sort = "Name,Code", Desc = false };
orderby = SqlBuilder.BuildOrder(page, factory);
Assert.Equal("Name,Code", orderby);
page = new PageParameter { Sort = "Name,Code", Desc = true };
orderby = SqlBuilder.BuildOrder(page, factory);
Assert.Equal("Name Desc,Code Desc", orderby);
page = new PageParameter { Sort = "Name desc\n,\nCode", Desc = false };
orderby = SqlBuilder.BuildOrder(page, factory);
Assert.Equal("Name Desc,Code", orderby);
page = new PageParameter { Sort = "Name desc\n,\nCode", Desc = true };
orderby = SqlBuilder.BuildOrder(page, factory);
Assert.Equal("Name Desc,Code Desc", orderby);
page = new PageParameter { Sort = "name asc\n,\ncode", Desc = true };
orderby = SqlBuilder.BuildOrder(page, factory);
Assert.Equal("Name,Code Desc", orderby);
page = new PageParameter { Sort = "name2 asc\n,\ncode", Desc = true };
var ex = Assert.Throws<XCodeException>(() => SqlBuilder.BuildOrder(page, factory));
Assert.Equal("实体类[User]不包含排序字段[name2]", ex.Message);
}
[Fact]
public void BuildOrder2()
{
var factory = User.Meta.Factory;
// 使用OrderBy此时Desc无效
var page = new PageParameter { OrderBy = "Name", Desc = false };
var orderby = SqlBuilder.BuildOrder(page, factory);
Assert.Equal("Name", orderby);
//page = new PageParameter { OrderBy = "Name", Desc = true };
//orderby = SqlBuilder.BuildOrder(page, factory);
//Assert.Equal("Name Desc", orderby);
page = new PageParameter { OrderBy = "Name,Code", Desc = false };
orderby = SqlBuilder.BuildOrder(page, factory);
Assert.Equal("Name,Code", orderby);
page = new PageParameter { OrderBy = "Name,Code", Desc = true };
orderby = SqlBuilder.BuildOrder(page, factory);
Assert.Equal("Name,Code", orderby);
//page = new PageParameter { OrderBy = "Name desc\n,\nCode", Desc = false };
//orderby = SqlBuilder.BuildOrder(page, factory);
//Assert.Equal("Name Desc,Code", orderby);
//page = new PageParameter { OrderBy = "Name desc\n,\nCode", Desc = true };
//orderby = SqlBuilder.BuildOrder(page, factory);
//Assert.Equal("Name Desc,Code", orderby);
//page = new PageParameter { OrderBy = "name asc\n,\ncode", Desc = true };
//orderby = SqlBuilder.BuildOrder(page, factory);
//Assert.Equal("Name,Code", orderby);
//page = new PageParameter { OrderBy = "name2 asc\n,\ncode", Desc = true };
//var ex = Assert.Throws<XCodeException>(() => SqlBuilder.BuildOrder(page, factory));
//Assert.Equal("实体类[User]不包含排序字段[name2]", ex.Message);
}
}