@@ -1287,6 +1287,66 @@ component extends="testbox.system.BaseSpec" {
12871287 expect ( runQueryLog ).toHaveLength ( 1 , " runQuery should have been called once" );
12881288 expect ( runQueryLog [ 1 ].sql ).toBe ( " SELECT "" id"" FROM "" users"" " );
12891289 } );
1290+
1291+ it ( " returns native struct returntypes without applying the builder return format" , function () {
1292+ var builder = getBuilder ();
1293+ var expectedResults = { " jane" : { " id" : 1 , " name" : " jane" }, " john" : { " id" : 2 , " name" : " john" } };
1294+ builder
1295+ .$( " runQuery" )
1296+ .$args (
1297+ sql = " SELECT "" id"" , "" name"" FROM "" users"" " ,
1298+ options = { " returntype" : " struct" , " columnkey" : " name" , " result" : " local.result" }
1299+ )
1300+ .$results ( expectedResults );
1301+ builder
1302+ .$( " runQuery" )
1303+ .$args (
1304+ sql = " SELECT "" id"" , "" name"" FROM "" users"" " ,
1305+ options = { " returntype" : " struct" , " columnkey" : " name" }
1306+ )
1307+ .$results ( expectedResults );
1308+
1309+ var results = builder
1310+ .select ( [ " id" , " name" ] )
1311+ .from ( " users" )
1312+ .get ( options = { " returntype" : " struct" , " columnkey" : " name" } );
1313+
1314+ expect ( results ).toBe ( expectedResults );
1315+ var runQueryLog = builder .$callLog ().runQuery ;
1316+ expect ( runQueryLog ).toBeArray ();
1317+ expect ( runQueryLog ).toHaveLength ( 1 , " runQuery should have been called once" );
1318+ expect ( runQueryLog [ 1 ].sql ).toBe ( " SELECT "" id"" , "" name"" FROM "" users"" " );
1319+ expect ( runQueryLog [ 1 ].options ).toBe ( { " returntype" : " struct" , " columnkey" : " name" } );
1320+ } );
1321+
1322+ it ( " does not invoke custom return formats for native returntypes" , function () {
1323+ var builder = getBuilder ();
1324+ builder .setReturnFormat ( function ( q ) {
1325+ fail ( " The builder return format should not run for native returntypes." );
1326+ } );
1327+ var expectedResults = { " jane" : { " id" : 1 , " name" : " jane" } };
1328+ builder
1329+ .$( " runQuery" )
1330+ .$args (
1331+ sql = " SELECT "" id"" , "" name"" FROM "" users"" " ,
1332+ options = { " returntype" : " struct" , " columnkey" : " name" , " result" : " local.result" }
1333+ )
1334+ .$results ( expectedResults );
1335+ builder
1336+ .$( " runQuery" )
1337+ .$args (
1338+ sql = " SELECT "" id"" , "" name"" FROM "" users"" " ,
1339+ options = { " returntype" : " struct" , " columnkey" : " name" }
1340+ )
1341+ .$results ( expectedResults );
1342+
1343+ var results = builder
1344+ .select ( [ " id" , " name" ] )
1345+ .from ( " users" )
1346+ .get ( options = { " returntype" : " struct" , " columnkey" : " name" } );
1347+
1348+ expect ( results ).toBe ( expectedResults );
1349+ } );
12901350 } );
12911351
12921352 describe ( " compiling the same builder multiple times" , function () {
0 commit comments