Skip to content

Commit 97327b0

Browse files
test: add CSharpGenerator tests
1 parent 1bc4b1b commit 97327b0

6 files changed

Lines changed: 523 additions & 0 deletions

‎tests/Eftdb.Tests/Design/Generators/ContinuousAggregateCSharpGeneratorTests.cs‎

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,84 @@ public void CreateContinuousAggregate_GroupByColumns_EmitCollectionExpression()
133133

134134
#endregion
135135

136+
#region CreateContinuousAggregate_FullyPopulated_EmitsAllOptionalArgs
137+
138+
[Fact]
139+
public void CreateContinuousAggregate_FullyPopulated_EmitsAllOptionalArgs()
140+
{
141+
// Arrange
142+
CreateContinuousAggregateOperation op = new()
143+
{
144+
MaterializedViewName = "hourly",
145+
ParentName = "sensor_data",
146+
Schema = "metrics",
147+
ChunkInterval = "7 days",
148+
WithNoData = true,
149+
CreateGroupIndexes = true,
150+
MaterializedOnly = true,
151+
TimeBucketWidth = "1 hour",
152+
TimeBucketSourceColumn = "ts",
153+
TimeBucketGroupBy = false,
154+
AggregateFunctions = ["avg_t:Avg:temp"],
155+
GroupByColumns = ["device_id"],
156+
WhereClause = "temp > 0",
157+
ViewDefinition = "SELECT 1",
158+
};
159+
160+
// Act
161+
string result = Generate(op);
162+
163+
// Assert
164+
Assert.Contains("chunkInterval: \"7 days\"", result);
165+
Assert.Contains("withNoData: true", result);
166+
Assert.Contains("createGroupIndexes: true", result);
167+
Assert.Contains("materializedOnly: true", result);
168+
Assert.Contains("timeBucketWidth: \"1 hour\"", result);
169+
Assert.Contains("timeBucketSourceColumn: \"ts\"", result);
170+
Assert.Contains("timeBucketGroupBy: false", result);
171+
Assert.Contains("aggregateFunctions:", result);
172+
Assert.Contains("groupByColumns: [\"device_id\"]", result);
173+
Assert.Contains("whereClause: \"temp > 0\"", result);
174+
Assert.Contains("viewDefinition: \"SELECT 1\"", result);
175+
}
176+
177+
#endregion
178+
179+
#region AlterContinuousAggregate_FullyPopulated_EmitsAllNewAndOldArgs
180+
181+
[Fact]
182+
public void AlterContinuousAggregate_FullyPopulated_EmitsAllNewAndOldArgs()
183+
{
184+
// Arrange
185+
AlterContinuousAggregateOperation op = new()
186+
{
187+
MaterializedViewName = "hourly",
188+
Schema = "metrics",
189+
ChunkInterval = "7 days",
190+
CreateGroupIndexes = true,
191+
MaterializedOnly = true,
192+
OldChunkInterval = "1 day",
193+
OldCreateGroupIndexes = true,
194+
OldMaterializedOnly = true,
195+
};
196+
197+
// Act
198+
string result = Generate(op);
199+
200+
// Assert
201+
Assert.Contains("schema: \"metrics\"", result);
202+
Assert.Contains("chunkInterval: \"7 days\"", result);
203+
Assert.Contains("createGroupIndexes: true", result);
204+
Assert.Contains("materializedOnly: true", result);
205+
206+
// Assert
207+
Assert.Contains("oldChunkInterval: \"1 day\"", result);
208+
Assert.Contains("oldCreateGroupIndexes: true", result);
209+
Assert.Contains("oldMaterializedOnly: true", result);
210+
}
211+
212+
#endregion
213+
136214
#region AlterContinuousAggregate_EmitsOldArgsOnlyWhenNonDefault
137215

138216
[Fact]

‎tests/Eftdb.Tests/Design/Generators/HypertableCSharpGeneratorTests.cs‎

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,87 @@ public void AlterHypertable_EmitsOldArgsOnlyWhenNonDefault()
190190

191191
#endregion
192192

193+
#region CreateHypertable_FullyPopulated_EmitsMigrateDataAndAllCompressionLists
194+
195+
[Fact]
196+
public void CreateHypertable_FullyPopulated_EmitsMigrateDataAndAllCompressionLists()
197+
{
198+
// Arrange
199+
CreateHypertableOperation op = new()
200+
{
201+
TableName = "sensor_data",
202+
TimeColumnName = "ts",
203+
Schema = "metrics",
204+
ChunkTimeInterval = "1 day",
205+
EnableCompression = true,
206+
MigrateData = true,
207+
ChunkSkipColumns = ["a", "b"],
208+
AdditionalDimensions = [Dimension.CreateHash("device_id", 4)],
209+
CompressionSegmentBy = ["device_id"],
210+
CompressionOrderBy = ["ts DESC"],
211+
};
212+
213+
// Act
214+
string result = Generate(op);
215+
216+
// Assert
217+
Assert.Contains("migrateData: true", result);
218+
Assert.Contains("enableCompression: true", result);
219+
Assert.Contains("chunkSkipColumns: [\"a\", \"b\"]", result);
220+
Assert.Contains("compressionSegmentBy: [\"device_id\"]", result);
221+
Assert.Contains("compressionOrderBy: [\"ts DESC\"]", result);
222+
Assert.Contains("additionalDimensions:", result);
223+
}
224+
225+
#endregion
226+
227+
#region AlterHypertable_FullyPopulated_EmitsAllNewAndOldLists
228+
229+
[Fact]
230+
public void AlterHypertable_FullyPopulated_EmitsAllNewAndOldLists()
231+
{
232+
// Arrange
233+
AlterHypertableOperation op = new()
234+
{
235+
TableName = "sensor_data",
236+
Schema = "metrics",
237+
ChunkTimeInterval = "2 days",
238+
EnableCompression = true,
239+
ChunkSkipColumns = ["a", "b"],
240+
AdditionalDimensions = [Dimension.CreateHash("device_id", 4)],
241+
CompressionSegmentBy = ["device_id"],
242+
CompressionOrderBy = ["ts DESC"],
243+
OldChunkTimeInterval = "1 day",
244+
OldEnableCompression = true,
245+
OldChunkSkipColumns = ["a"],
246+
OldAdditionalDimensions = [Dimension.CreateRange("region", "10")],
247+
OldCompressionSegmentBy = ["region"],
248+
OldCompressionOrderBy = ["ts"],
249+
};
250+
251+
// Act
252+
string result = Generate(op);
253+
254+
// Assert
255+
Assert.Contains("schema: \"metrics\"", result);
256+
Assert.Contains("chunkTimeInterval: \"2 days\"", result);
257+
Assert.Contains("enableCompression: true", result);
258+
Assert.Contains("chunkSkipColumns: [\"a\", \"b\"]", result);
259+
Assert.Contains("compressionSegmentBy: [\"device_id\"]", result);
260+
Assert.Contains("compressionOrderBy: [\"ts DESC\"]", result);
261+
Assert.Contains("additionalDimensions:", result);
262+
263+
// Assert
264+
Assert.Contains("oldChunkTimeInterval: \"1 day\"", result);
265+
Assert.Contains("oldEnableCompression: true", result);
266+
Assert.Contains("oldChunkSkipColumns: [\"a\"]", result);
267+
Assert.Contains("oldCompressionSegmentBy: [\"region\"]", result);
268+
Assert.Contains("oldCompressionOrderBy: [\"ts\"]", result);
269+
Assert.Contains("oldAdditionalDimensions:", result);
270+
}
271+
272+
#endregion
273+
193274
#region AlterHypertable_OmitsOldArgsWhenDefault
194275

195276
[Fact]

‎tests/Eftdb.Tests/Design/Generators/ReorderPolicyCSharpGeneratorTests.cs‎

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,87 @@ public void AlterReorderPolicy_EmitsOldArgsOnlyWhenNonDefault()
8989

9090
#endregion
9191

92+
#region AddReorderPolicy_FullyPopulated_EmitsAllOptionalArgs
93+
94+
[Fact]
95+
public void AddReorderPolicy_FullyPopulated_EmitsAllOptionalArgs()
96+
{
97+
// Arrange
98+
AddReorderPolicyOperation op = new()
99+
{
100+
TableName = "sensor_data",
101+
IndexName = "ix_ts",
102+
Schema = "metrics",
103+
InitialStart = new DateTime(2025, 1, 1, 0, 0, 0, DateTimeKind.Utc),
104+
ScheduleInterval = "1 day",
105+
MaxRuntime = "5 minutes",
106+
MaxRetries = 3,
107+
RetryPeriod = "10 minutes",
108+
};
109+
110+
// Act
111+
string result = Generate(op);
112+
113+
// Assert
114+
Assert.Contains("tableName: \"sensor_data\"", result);
115+
Assert.Contains("indexName: \"ix_ts\"", result);
116+
Assert.Contains("schema: \"metrics\"", result);
117+
Assert.Contains("initialStart:", result);
118+
Assert.Contains("scheduleInterval: \"1 day\"", result);
119+
Assert.Contains("maxRuntime: \"5 minutes\"", result);
120+
Assert.Contains("maxRetries: 3", result);
121+
Assert.Contains("retryPeriod: \"10 minutes\"", result);
122+
}
123+
124+
#endregion
125+
126+
#region AlterReorderPolicy_FullyPopulated_EmitsAllNewAndOldArgs
127+
128+
[Fact]
129+
public void AlterReorderPolicy_FullyPopulated_EmitsAllNewAndOldArgs()
130+
{
131+
// Arrange
132+
AlterReorderPolicyOperation op = new()
133+
{
134+
TableName = "sensor_data",
135+
IndexName = "new_ix",
136+
Schema = "metrics",
137+
InitialStart = new DateTime(2025, 6, 1, 0, 0, 0, DateTimeKind.Utc),
138+
ScheduleInterval = "2 days",
139+
MaxRuntime = "10 minutes",
140+
MaxRetries = 5,
141+
RetryPeriod = "15 minutes",
142+
OldIndexName = "old_ix",
143+
OldInitialStart = new DateTime(2025, 1, 1, 0, 0, 0, DateTimeKind.Utc),
144+
OldScheduleInterval = "1 day",
145+
OldMaxRuntime = "5 minutes",
146+
OldMaxRetries = 3,
147+
OldRetryPeriod = "10 minutes",
148+
};
149+
150+
// Act
151+
string result = Generate(op);
152+
153+
// Assert
154+
Assert.Contains("indexName: \"new_ix\"", result);
155+
Assert.Contains("schema: \"metrics\"", result);
156+
Assert.Contains("initialStart:", result);
157+
Assert.Contains("scheduleInterval: \"2 days\"", result);
158+
Assert.Contains("maxRuntime: \"10 minutes\"", result);
159+
Assert.Contains("maxRetries: 5", result);
160+
Assert.Contains("retryPeriod: \"15 minutes\"", result);
161+
162+
// Assert.
163+
Assert.Contains("oldIndexName: \"old_ix\"", result);
164+
Assert.Contains("oldInitialStart:", result);
165+
Assert.Contains("oldScheduleInterval: \"1 day\"", result);
166+
Assert.Contains("oldMaxRuntime: \"5 minutes\"", result);
167+
Assert.Contains("oldMaxRetries: 3", result);
168+
Assert.Contains("oldRetryPeriod: \"10 minutes\"", result);
169+
}
170+
171+
#endregion
172+
92173
#region DropReorderPolicy_OmitsEmptySchema
93174

94175
[Fact]

‎tests/Eftdb.Tests/Design/Generators/RetentionPolicyCSharpGeneratorTests.cs‎

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,92 @@ public void AlterRetentionPolicy_EmitsOldArgsOnlyWhenNonDefault()
9999
}
100100

101101
#endregion
102+
103+
#region AddRetentionPolicy_FullyPopulated_EmitsAllOptionalArgs
104+
105+
[Fact]
106+
public void AddRetentionPolicy_FullyPopulated_EmitsAllOptionalArgs()
107+
{
108+
// Arrange
109+
AddRetentionPolicyOperation op = new()
110+
{
111+
TableName = "sensor_data",
112+
Schema = "metrics",
113+
DropAfter = "30 days",
114+
DropCreatedBefore = "60 days",
115+
InitialStart = new DateTime(2025, 1, 1, 0, 0, 0, DateTimeKind.Utc),
116+
ScheduleInterval = "1 day",
117+
MaxRuntime = "5 minutes",
118+
MaxRetries = 3,
119+
RetryPeriod = "10 minutes",
120+
};
121+
122+
// Act
123+
string result = Generate(op);
124+
125+
// Assert
126+
Assert.Contains("tableName: \"sensor_data\"", result);
127+
Assert.Contains("schema: \"metrics\"", result);
128+
Assert.Contains("dropAfter: \"30 days\"", result);
129+
Assert.Contains("dropCreatedBefore: \"60 days\"", result);
130+
Assert.Contains("initialStart:", result);
131+
Assert.Contains("scheduleInterval: \"1 day\"", result);
132+
Assert.Contains("maxRuntime: \"5 minutes\"", result);
133+
Assert.Contains("maxRetries: 3", result);
134+
Assert.Contains("retryPeriod: \"10 minutes\"", result);
135+
}
136+
137+
#endregion
138+
139+
#region AlterRetentionPolicy_FullyPopulated_EmitsAllNewAndOldArgs
140+
141+
[Fact]
142+
public void AlterRetentionPolicy_FullyPopulated_EmitsAllNewAndOldArgs()
143+
{
144+
// Arrange
145+
AlterRetentionPolicyOperation op = new()
146+
{
147+
TableName = "sensor_data",
148+
Schema = "metrics",
149+
DropAfter = "60 days",
150+
DropCreatedBefore = "90 days",
151+
InitialStart = new DateTime(2025, 6, 1, 0, 0, 0, DateTimeKind.Utc),
152+
ScheduleInterval = "2 days",
153+
MaxRuntime = "10 minutes",
154+
MaxRetries = 5,
155+
RetryPeriod = "15 minutes",
156+
OldDropAfter = "30 days",
157+
OldDropCreatedBefore = "45 days",
158+
OldInitialStart = new DateTime(2025, 1, 1, 0, 0, 0, DateTimeKind.Utc),
159+
OldScheduleInterval = "1 day",
160+
OldMaxRuntime = "5 minutes",
161+
OldMaxRetries = 3,
162+
OldRetryPeriod = "10 minutes",
163+
};
164+
165+
// Act
166+
string result = Generate(op);
167+
168+
// Assert
169+
Assert.Contains("schema: \"metrics\"", result);
170+
Assert.Contains("dropAfter: \"60 days\"", result);
171+
Assert.Contains("dropCreatedBefore: \"90 days\"", result);
172+
Assert.Contains("initialStart:", result);
173+
Assert.Contains("scheduleInterval: \"2 days\"", result);
174+
Assert.Contains("maxRuntime: \"10 minutes\"", result);
175+
Assert.Contains("maxRetries: 5", result);
176+
Assert.Contains("retryPeriod: \"15 minutes\"", result);
177+
178+
// Assert
179+
Assert.Contains("oldDropAfter: \"30 days\"", result);
180+
Assert.Contains("oldDropCreatedBefore: \"45 days\"", result);
181+
Assert.Contains("oldInitialStart:", result);
182+
Assert.Contains("oldScheduleInterval: \"1 day\"", result);
183+
Assert.Contains("oldMaxRuntime: \"5 minutes\"", result);
184+
Assert.Contains("oldMaxRetries: 3", result);
185+
Assert.Contains("oldRetryPeriod: \"10 minutes\"", result);
186+
}
187+
188+
#endregion
102189
}
103190
}

0 commit comments

Comments
 (0)