@@ -795,7 +795,7 @@ describe('Query', function() {
795795 e = err ;
796796 }
797797 assert . ok ( e , 'uh oh. no error was thrown' ) ;
798- assert . equal ( e . message , 'sort() only takes 1 Argument ' ) ;
798+ assert . equal ( e . message , 'sort() takes at most 2 arguments ' ) ;
799799
800800 } ) ;
801801 } ) ;
@@ -4191,4 +4191,27 @@ describe('Query', function() {
41914191 assert . strictEqual ( doc . account . owner , undefined ) ;
41924192 assert . strictEqual ( doc . account . taxIds , undefined ) ;
41934193 } ) ;
4194+
4195+ it ( 'allows overriding sort (gh-14365)' , function ( ) {
4196+ const testSchema = new mongoose . Schema ( {
4197+ name : String
4198+ } ) ;
4199+
4200+ const Test = db . model ( 'Test' , testSchema ) ;
4201+
4202+ const q = Test . find ( ) . select ( 'name' ) . sort ( { name : - 1 , _id : - 1 } ) ;
4203+ assert . deepStrictEqual ( q . getOptions ( ) . sort , { name : - 1 , _id : - 1 } ) ;
4204+
4205+ q . sort ( { name : 1 } , { override : true } ) ;
4206+ assert . deepStrictEqual ( q . getOptions ( ) . sort , { name : 1 } ) ;
4207+
4208+ q . sort ( null , { override : true } ) ;
4209+ assert . deepStrictEqual ( q . getOptions ( ) . sort , { } ) ;
4210+
4211+ q . sort ( { _id : 1 } , { override : true } ) ;
4212+ assert . deepStrictEqual ( q . getOptions ( ) . sort , { _id : 1 } ) ;
4213+
4214+ q . sort ( { } , { override : true } ) ;
4215+ assert . deepStrictEqual ( q . getOptions ( ) . sort , { } ) ;
4216+ } ) ;
41944217} ) ;
0 commit comments