@@ -1393,6 +1393,36 @@ component extends="testbox.system.BaseSpec" {
13931393 expect ( results ).toBe ( " account-1" );
13941394 } );
13951395
1396+ it ( " carries return formatter settings to new queries and clones" , function () {
1397+ var registry = new qb .models .Query .ReturnFormatterRegistry ();
1398+ registry .registerReturnFormatter ( " firstId" , function ( options ) {
1399+ return function ( q ) {
1400+ return q .id [ 1 ];
1401+ };
1402+ } );
1403+ var builder = getMockBox ()
1404+ .createMock ( " qb.models.Query.QueryBuilder" )
1405+ .init (
1406+ grammar = getMockBox ().createMock ( " qb.models.Grammars.BaseGrammar" ).init (),
1407+ returnFormatterRegistry = registry ,
1408+ validateQueryExecuteReturnType = true ,
1409+ collectQueryLog = false
1410+ );
1411+
1412+ var newBuilder = builder .newQuery ();
1413+ var clonedBuilder = builder .clone ();
1414+
1415+ expect ( newBuilder .getReturnFormatterRegistry () ).toBe ( registry );
1416+ expect ( newBuilder .getValidateQueryExecuteReturnType () ).toBeTrue ();
1417+ expect ( newBuilder .getCollectQueryLog () ).toBeFalse ();
1418+ newBuilder .setReturnFormat ( " firstId" );
1419+
1420+ expect ( clonedBuilder .getReturnFormatterRegistry () ).toBe ( registry );
1421+ expect ( clonedBuilder .getValidateQueryExecuteReturnType () ).toBeTrue ();
1422+ expect ( clonedBuilder .getCollectQueryLog () ).toBeFalse ();
1423+ clonedBuilder .setReturnFormat ( " firstId" );
1424+ } );
1425+
13961426 it ( " creates a default return formatter registry when none is passed" , function () {
13971427 var builder = getBuilder ();
13981428 builder .setReturnFormat ( " none" );
@@ -1460,6 +1490,26 @@ component extends="testbox.system.BaseSpec" {
14601490 expect ( builder .getGrammar ().$callLog ().runQuery [ 1 ].options ).toBe ( {} );
14611491 } );
14621492
1493+ it ( " can strip native queryExecute returntype options from default options without mutating them" , function () {
1494+ var builder = getBuilder ();
1495+ builder .mergeDefaultOptions ( { " returntype" : " array" , " columnkey" : " id" , " columnKey" : " id" } );
1496+ builder .setReturnFormat ( " query" );
1497+ var expectedQuery = queryNew ( " id" , " integer" , [ { " id" : 1 } ] );
1498+ builder
1499+ .getGrammar ()
1500+ .$( " runQuery" )
1501+ .$results ( expectedQuery );
1502+
1503+ var results = builder
1504+ .select ( " id" )
1505+ .from ( " users" )
1506+ .get ();
1507+
1508+ expect ( results ).toBe ( expectedQuery );
1509+ expect ( builder .getGrammar ().$callLog ().runQuery [ 1 ].options ).toBe ( {} );
1510+ expect ( builder .getDefaultOptions () ).toBe ( { " returntype" : " array" , " columnkey" : " id" , " columnKey" : " id" } );
1511+ } );
1512+
14631513 it ( " can validate native queryExecute returntype options" , function () {
14641514 var builder = getMockBox ()
14651515 .createMock ( " qb.models.Query.QueryBuilder" )
0 commit comments