Skip to content

Commit b9cfda6

Browse files
committed
[ksqlDB.RestApi.Client] - join tests
1 parent a742f03 commit b9cfda6

File tree

1 file changed

+59
-7
lines changed

1 file changed

+59
-7
lines changed

Tests/ksqlDB.RestApi.Client.Tests/KSql/Query/Visitors/JoinVisitorTests.cs

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -283,14 +283,19 @@ class LambdaMap
283283
{
284284
public int Id { get; set; }
285285
public IDictionary<string, City> Dictionary { get; set; }
286+
public Nested Nested { get; set; }
286287
}
287288
private class City
288289
{
289290
public int[] Values { get; set; }
290291
}
291292

293+
private class Nested
294+
{
295+
public string Prop { get; set; }
296+
}
297+
292298
[TestMethod]
293-
[Ignore("TODO")]
294299
public void JoinWithInvocationFunction_BuildKSql_Prints()
295300
{
296301
var query = from o in KSqlDBContext.CreateQueryStream<Order>()
@@ -299,27 +304,74 @@ join s1 in Source.Of<Shipment>() on o.OrderId equals s1.Id
299304
select new
300305
{
301306
A = K.Functions.Transform(lm.Dictionary, (k, v) => K.Functions.Concat(k, "_new"), (k, v) => K.Functions.Transform(v.Values, x => x * x)),
302-
//orderId = o.OrderId,
303-
//shipmentId = s1.Id
307+
orderId = o.OrderId,
308+
shipmentId = s1.Id
304309
};
305310

306311
//Act
307312
var ksql = query.ToQueryString();
308313

309314
//Assert
310315
string lambdaAlias = "lm";
316+
string shipmentsAlias = "s1";
311317

312-
//var expectedQuery = @$"SELECT TRANSFORM({lambdaAlias}.{nameof(LambdaMap.Dictionary)}, (k, v) => CONCAT(k, '_new'), (k, v) => TRANSFORM(v->Values, (x) => x * x)) A, O.OrderId AS orderId, S1.Id AS shipmentId FROM Orders O
313-
var expectedQuery = @$"SELECT TRANSFORM({lambdaAlias}.{nameof(LambdaMap.Dictionary)}, (k, v) => CONCAT(k, '_new'), (k, v) => TRANSFORM(v->Values, (x) => x * x)) A FROM Orders O
318+
var expectedQuery = @$"SELECT TRANSFORM({lambdaAlias}.{nameof(LambdaMap.Dictionary)}, (k, v) => CONCAT(k, '_new'), (k, v) => TRANSFORM(v->Values, (x) => x * x)) A, O.OrderId AS orderId, {shipmentsAlias}.Id AS shipmentId FROM Orders O
319+
INNER JOIN Shipments {shipmentsAlias}
320+
ON O.OrderId = {shipmentsAlias}.Id
314321
INNER JOIN LambdaMaps {lambdaAlias}
315322
ON O.OrderId = {lambdaAlias}.Id
316-
INNER JOIN Payments P1
317-
ON O.OrderId = P1.Id
318323
EMIT CHANGES;";
319324

320325
ksql.Should().BeEquivalentTo(expectedQuery);
321326
}
322327

328+
[TestMethod]
329+
[Ignore("TODO:")]
330+
public void JoinWithSeveralOnConditions_BuildKSql_Prints()
331+
{
332+
var query = from o in KSqlDBContext.CreateQueryStream<Order>()
333+
join lm in Source.Of<LambdaMap>() on new { OrderId = o.OrderId, NestedProp = "Nested" } equals new { OrderId = lm.Id, NestedProp = lm.Nested.Prop }
334+
select new
335+
{
336+
lm.Nested.Prop,
337+
orderId = o.OrderId,
338+
};
339+
340+
//Act
341+
var ksql = query.ToQueryString();
342+
343+
//Assert
344+
//TODO:
345+
}
346+
347+
[TestMethod]
348+
[Ignore("TODO:")]
349+
public void JoinWithNestedType_BuildKSql_Prints()
350+
{
351+
var query = from o in KSqlDBContext.CreateQueryStream<Order>()
352+
join lm in Source.Of<LambdaMap>() on o.OrderId equals lm.Id
353+
where lm.Nested.Prop == "Nested"
354+
select new
355+
{
356+
lm.Nested.Prop,
357+
orderId = o.OrderId,
358+
};
359+
360+
//Act
361+
var ksql = query.ToQueryString();
362+
363+
//Assert
364+
string lambdaAlias = "lm";
365+
366+
var expectedQuery = @$"SELECT {lambdaAlias}.Nested->Prop Prop, O.OrderId AS orderId FROM Orders O
367+
INNER JOIN LambdaMaps {lambdaAlias}
368+
ON O.OrderId = {lambdaAlias}.Id
369+
WHERE {lambdaAlias}.Nested->Prop = 'Nested'
370+
EMIT CHANGES;";
371+
//
372+
ksql.Should().BeEquivalentTo(expectedQuery);
373+
}
374+
323375
[TestMethod]
324376
public void MultipleInnerJoinsQuerySyntax_WithTake_BuildKSql_Prints()
325377
{

0 commit comments

Comments
 (0)