@@ -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)]
690675fn 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)]
727717fn 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