Skip to content

Commit ceff185

Browse files
test: query builder views over tables with nested data types
1 parent 8967ea7 commit ceff185

1 file changed

Lines changed: 20 additions & 22 deletions

File tree

smoketests/tests/views.py

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -154,14 +154,6 @@ class SqlViews(Smoketest):
154154
}
155155
"""
156156

157-
def assertSql(self, sql, expected):
158-
self.maxDiff = None
159-
sql_out = self.spacetime("sql", self.database_identity, sql)
160-
sql_out = "\n".join([line.rstrip() for line in sql_out.splitlines()])
161-
expected = "\n".join([line.rstrip() for line in expected.splitlines()])
162-
163-
self.assertMultiLineEqual(sql_out, expected)
164-
165157
def insert_initial_data(self):
166158
self.spacetime(
167159
"sql",
@@ -389,13 +381,6 @@ class AutoMigrateViews(Smoketest):
389381
}
390382
"""
391383

392-
def assertSql(self, sql, expected):
393-
self.maxDiff = None
394-
sql_out = self.spacetime("sql", self.database_identity, sql)
395-
sql_out = "\n".join([line.rstrip() for line in sql_out.splitlines()])
396-
expected = "\n".join([line.rstrip() for line in expected.splitlines()])
397-
self.assertMultiLineEqual(sql_out, expected)
398-
399384
def test_views_auto_migration(self):
400385
"""Assert that views are auto-migrated correctly"""
401386

@@ -551,13 +536,6 @@ class AutoMigrateViewsTrapped(Smoketest):
551536
}
552537
"""
553538

554-
def assertSql(self, sql, expected):
555-
self.maxDiff = None
556-
sql_out = self.spacetime("sql", self.database_identity, sql)
557-
sql_out = "\n".join([line.rstrip() for line in sql_out.splitlines()])
558-
expected = "\n".join([line.rstrip() for line in expected.splitlines()])
559-
self.assertMultiLineEqual(sql_out, expected)
560-
561539
def test_recovery_from_trapped_views_auto_migration(self):
562540
"""Assert that view auto-migration recovers correctly after trapped migration"""
563541

@@ -686,6 +664,13 @@ class QueryView(Smoketest):
686664
age: u8,
687665
}
688666
667+
#[spacetimedb::table(name = nested_internal)]
668+
pub struct Nested {
669+
#[primary_key]
670+
id: u8,
671+
person: Person,
672+
}
673+
689674
#[spacetimedb::reducer(init)]
690675
fn init(ctx: &ReducerContext) {
691676
ctx.db.user().insert(User {
@@ -723,6 +708,11 @@ class QueryView(Smoketest):
723708
724709
}
725710
711+
#[view(name = nested, public)]
712+
pub fn nested(ctx:&ViewContext)-> Query<Nested>{
713+
ctx.from.nested_internal().r#where(|r| r.id.eq(0)).build()
714+
}
715+
726716
#[spacetimedb::view(name = online_users, public)]
727717
fn online_users(ctx: &ViewContext) -> Query<User> {
728718
ctx.from.user().r#where(|c| c.online.eq(true)).build()
@@ -773,6 +763,14 @@ class QueryView(Smoketest):
773763
"""
774764

775765

766+
def test_query_view_nested_types(self):
767+
"""Tests that Query views can return nested data types"""
768+
769+
self.assertSql("SELECT * FROM nested", """\
770+
id | person
771+
----+--------
772+
""")
773+
776774
def test_query_view(self):
777775
"""Tests that views returning Query types work as expected"""
778776

0 commit comments

Comments
 (0)