Skip to content

Commit a7196e5

Browse files
Merge pull request cmdscale#22 from cmdscale/test/core_package_tests
test: add comprehensive unit and integration test suite
2 parents 238114a + 67692a1 commit a7196e5

File tree

56 files changed

+21741
-701
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+21741
-701
lines changed

.gitignore

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,4 +435,12 @@ CmdScale.EntityFrameworkCore.TimescaleDB.Example.DataAccess.DbFirst/
435435

436436
# AI
437437
CLAUDE.md
438-
.claude
438+
.claude
439+
440+
# Code coverage report
441+
coverage
442+
nul
443+
444+
# Stryker.NET mutation testing output
445+
**/StrykerOutput/
446+
stryker-config.json.user

CmdScale.EntityFrameworkCore.TimescaleDB.Design/Scaffolding/ContinuousAggregateAnnotationApplier.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
88
/// Applies continuous aggregate annotations to scaffolded database views.
99
/// Note: Continuous aggregates in TimescaleDB are materialized views, so they appear as tables/views in scaffolding.
1010
/// </summary>
11-
internal sealed class ContinuousAggregateAnnotationApplier : IAnnotationApplier
11+
public sealed class ContinuousAggregateAnnotationApplier : IAnnotationApplier
1212
{
1313
public void ApplyAnnotations(DatabaseTable table, object featureInfo)
1414
{

CmdScale.EntityFrameworkCore.TimescaleDB.Design/Scaffolding/ContinuousAggregateScaffoldingExtractor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
66
/// <summary>
77
/// Extracts continuous aggregate metadata from a TimescaleDB database for scaffolding.
88
/// </summary>
9-
internal sealed class ContinuousAggregateScaffoldingExtractor : ITimescaleFeatureExtractor
9+
public sealed class ContinuousAggregateScaffoldingExtractor : ITimescaleFeatureExtractor
1010
{
11-
internal sealed record ContinuousAggregateInfo(
11+
public sealed record ContinuousAggregateInfo(
1212
string MaterializedViewName,
1313
string Schema,
1414
string ViewDefinition,

CmdScale.EntityFrameworkCore.TimescaleDB.Design/Scaffolding/HypertableAnnotationApplier.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
88
/// <summary>
99
/// Applies hypertable annotations to scaffolded database tables.
1010
/// </summary>
11-
internal sealed class HypertableAnnotationApplier : IAnnotationApplier
11+
public sealed class HypertableAnnotationApplier : IAnnotationApplier
1212
{
1313
public void ApplyAnnotations(DatabaseTable table, object featureInfo)
1414
{

CmdScale.EntityFrameworkCore.TimescaleDB.Design/Scaffolding/HypertableScaffoldingExtractor.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
77
/// <summary>
88
/// Extracts hypertable metadata from a TimescaleDB database for scaffolding.
99
/// </summary>
10-
internal sealed class HypertableScaffoldingExtractor : ITimescaleFeatureExtractor
10+
public sealed class HypertableScaffoldingExtractor : ITimescaleFeatureExtractor
1111
{
12-
internal sealed record HypertableInfo(
12+
public sealed record HypertableInfo(
1313
string TimeColumnName,
1414
string ChunkTimeInterval,
1515
bool CompressionEnabled,
@@ -74,7 +74,8 @@ private static void GetHypertableSettings(
7474
column_name,
7575
dimension_number,
7676
num_partitions,
77-
EXTRACT(EPOCH FROM time_interval) * 1000 AS time_interval_microseconds
77+
EXTRACT(EPOCH FROM time_interval) * 1000 AS time_interval_microseconds,
78+
integer_interval
7879
FROM timescaledb_information.dimensions
7980
ORDER BY hypertable_schema, hypertable_name, dimension_number;";
8081

@@ -111,15 +112,21 @@ FROM timescaledb_information.dimensions
111112

112113
if (!reader.IsDBNull(4) && reader.GetInt32(4) > 0)
113114
{
114-
// Space dimension
115+
// Hash dimension (space partitioning)
115116
dimension = Dimension.CreateHash(columnName, reader.GetInt32(4));
116117
}
117118
else if (!reader.IsDBNull(5))
118119
{
119-
// Time dimension
120+
// Time-based range dimension
120121
long interval = (long)reader.GetDouble(5);
121122
dimension = Dimension.CreateRange(columnName, interval.ToString());
122123
}
124+
else if (!reader.IsDBNull(6))
125+
{
126+
// Integer-based range dimension
127+
long integerInterval = reader.GetInt64(6);
128+
dimension = Dimension.CreateRange(columnName, integerInterval.ToString());
129+
}
123130
else continue;
124131

125132
info.AdditionalDimensions.Add(dimension);

CmdScale.EntityFrameworkCore.TimescaleDB.Design/Scaffolding/IAnnotationApplier.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
55
/// <summary>
66
/// Interface for applying TimescaleDB feature annotations to scaffolded database tables.
77
/// </summary>
8-
internal interface IAnnotationApplier
8+
public interface IAnnotationApplier
99
{
1010
/// <summary>
1111
/// Applies annotations to the database table based on the feature metadata.

CmdScale.EntityFrameworkCore.TimescaleDB.Design/Scaffolding/ITimescaleFeatureExtractor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
55
/// <summary>
66
/// Interface for extracting TimescaleDB feature metadata from a database connection.
77
/// </summary>
8-
internal interface ITimescaleFeatureExtractor
8+
public interface ITimescaleFeatureExtractor
99
{
1010
/// <summary>
1111
/// Extracts feature metadata from the database and returns a dictionary keyed by (schema, tableName).

CmdScale.EntityFrameworkCore.TimescaleDB.Design/Scaffolding/ReorderPolicyAnnotationApplier.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
77
/// <summary>
88
/// Applies reorder policy annotations to scaffolded database tables.
99
/// </summary>
10-
internal sealed class ReorderPolicyAnnotationApplier : IAnnotationApplier
10+
public sealed class ReorderPolicyAnnotationApplier : IAnnotationApplier
1111
{
1212
public void ApplyAnnotations(DatabaseTable table, object featureInfo)
1313
{

CmdScale.EntityFrameworkCore.TimescaleDB.Design/Scaffolding/ReorderPolicyScaffoldingExtractor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ namespace CmdScale.EntityFrameworkCore.TimescaleDB.Design.Scaffolding
66
/// <summary>
77
/// Extracts reorder policy metadata from a TimescaleDB database for scaffolding.
88
/// </summary>
9-
internal sealed class ReorderPolicyScaffoldingExtractor : ITimescaleFeatureExtractor
9+
public sealed class ReorderPolicyScaffoldingExtractor : ITimescaleFeatureExtractor
1010
{
11-
internal sealed record ReorderPolicyInfo(
11+
public sealed record ReorderPolicyInfo(
1212
string IndexName,
1313
DateTime? InitialStart,
1414
string? ScheduleInterval,

CmdScale.EntityFrameworkCore.TimescaleDB.Tests/CmdScale.EntityFrameworkCore.TimescaleDB.Tests.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1616
</PackageReference>
1717
<PackageReference Include="EFCore.NamingConventions" Version="9.0.0" />
18-
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0">
18+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.8">
1919
<PrivateAssets>all</PrivateAssets>
2020
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2121
</PackageReference>
@@ -31,6 +31,7 @@
3131

3232
<ItemGroup>
3333
<ProjectReference Include="..\CmdScale.EntityFrameworkCore.TimescaleDB\CmdScale.EntityFrameworkCore.TimescaleDB.csproj" />
34+
<ProjectReference Include="..\CmdScale.EntityFrameworkCore.TimescaleDB.Design\CmdScale.EntityFrameworkCore.TimescaleDB.Design.csproj" />
3435
</ItemGroup>
3536

3637
<ItemGroup>

0 commit comments

Comments
 (0)