aboutsummaryrefslogtreecommitdiff
path: root/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests
diff options
context:
space:
mode:
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests')
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/ColumnTypeInfoTest.cs13
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/SqlCompareHelper.cs10
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TableInfoTest.cs33
-rw-r--r--docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TestEntity.cs15
4 files changed, 67 insertions, 4 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/ColumnTypeInfoTest.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/ColumnTypeInfoTest.cs
index 56ae06f..b9ec03e 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/ColumnTypeInfoTest.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/ColumnTypeInfoTest.cs
@@ -23,4 +23,17 @@ public class ColumnTypeInfoTest
Assert.Equal(value, typeInfo.ConvertFromDatabase(value));
Assert.Equal(value, typeInfo.ConvertToDatabase(value));
}
+
+ [Fact]
+ public void DateTimeColumnTypeTest()
+ {
+ var dateTimeColumnTypeInfo = _provider.Get(typeof(DateTime));
+ Assert.Equal(typeof(DateTime), dateTimeColumnTypeInfo.ClrType);
+ Assert.Equal(typeof(string), dateTimeColumnTypeInfo.DatabaseClrType);
+
+ var dateTime = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+ var dateTimeString = "2000-01-01T00:00:00Z";
+ Assert.Equal(dateTimeString, dateTimeColumnTypeInfo.ConvertToDatabase(dateTime));
+ Assert.Equal(dateTime, dateTimeColumnTypeInfo.ConvertFromDatabase(dateTimeString));
+ }
}
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/SqlCompareHelper.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/SqlCompareHelper.cs
index c019e19..72b6218 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/SqlCompareHelper.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/SqlCompareHelper.cs
@@ -4,6 +4,8 @@ namespace CrupestApi.Commons.Crud.Tests;
public class SqlCompareHelper
{
+ private static List<char> SymbolTokens = new List<char>() { '(', ')', ';' };
+
public static List<string> SqlExtractWords(string? sql, bool toLower = true)
{
var result = new List<string>();
@@ -27,14 +29,14 @@ public class SqlCompareHelper
wordBuilder = null;
}
}
- else if (sql[current] == ';')
+ else if (SymbolTokens.Contains(sql[current]))
{
if (wordBuilder is not null)
{
result.Add(wordBuilder.ToString());
wordBuilder = null;
}
- result.Add(";");
+ result.Add(sql[current].ToString());
}
else
{
@@ -75,9 +77,9 @@ public class SqlCompareHelper
[Fact]
public void TestSqlExtractWords()
{
- var sql = "SELECT * FROM TableName WHERE id = @abcd;";
+ var sql = "SELECT * FROM TableName WHERE (id = @abcd);";
var words = SqlExtractWords(sql);
- Assert.Equal(new List<string> { "select", "*", "from", "tablename", "where", "id", "=", "@abcd", ";" }, words);
+ Assert.Equal(new List<string> { "select", "*", "from", "tablename", "where", "(", "id", "=", "@abcd", ")", ";" }, words);
}
}
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TableInfoTest.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TableInfoTest.cs
index d82c70f..c6791c6 100644
--- a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TableInfoTest.cs
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TableInfoTest.cs
@@ -1 +1,34 @@
+using Xunit.Abstractions;
+
namespace CrupestApi.Commons.Crud.Tests;
+
+public class TableInfoTest
+{
+ private static TableInfoFactory TableInfoFactory = new TableInfoFactory(new ColumnTypeProvider());
+
+ private TableInfo _tableInfo;
+
+ public TableInfoTest()
+ {
+ _tableInfo = TableInfoFactory.Get(typeof(TestEntity));
+ }
+
+ [Fact]
+ public void TestColumnCount()
+ {
+ Assert.Equal(4, _tableInfo.ColumnInfos.Count);
+ Assert.Equal(3, _tableInfo.ColumnProperties.Count);
+ Assert.Equal(1, _tableInfo.NonColumnProperties.Count);
+ }
+
+ [Fact]
+ public void GenerateSelectSqlTest()
+ {
+ var (sql, parameters) = _tableInfo.GenerateSelectSql(WhereClause.Create().Eq("Name", "Hello"));
+ var parameterName = parameters.ParameterNames.First();
+
+ // TODO: Is there a way to auto detect parameters?
+ SqlCompareHelper.SqlEqual($"SELECT * FROM TestEntity WHERE (Name = @{parameterName})", sql);
+ Assert.Equal("Hello", parameters.Get<string>(parameterName));
+ }
+}
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TestEntity.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TestEntity.cs
new file mode 100644
index 0000000..ca84d5a
--- /dev/null
+++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons.Tests/Crud/TestEntity.cs
@@ -0,0 +1,15 @@
+namespace CrupestApi.Commons.Crud.Tests;
+
+public class TestEntity
+{
+ [Column(NotNull = true)]
+ public string Name { get; set; } = default!;
+
+ [Column(NotNull = true)]
+ public int Age { get; set; }
+
+ [Column]
+ public float? Height { get; set; }
+
+ public string NonColumn { get; set; } = "Not A Column";
+}