@@ -2339,6 +2339,81 @@ describe('schema', function() {
23392339 } ) ;
23402340 } ) ;
23412341
2342+ describe ( 'omit() (gh-12931)' , function ( ) {
2343+ it ( 'works with nested paths' , function ( ) {
2344+ const schema = Schema ( {
2345+ name : {
2346+ first : {
2347+ type : String ,
2348+ required : true
2349+ } ,
2350+ last : {
2351+ type : String ,
2352+ required : true
2353+ }
2354+ } ,
2355+ age : {
2356+ type : Number ,
2357+ index : true
2358+ }
2359+ } ) ;
2360+ assert . ok ( schema . path ( 'name.first' ) ) ;
2361+ assert . ok ( schema . path ( 'name.last' ) ) ;
2362+
2363+ let newSchema = schema . omit ( [ 'name.first' ] ) ;
2364+ assert . ok ( ! newSchema . path ( 'name.first' ) ) ;
2365+ assert . ok ( newSchema . path ( 'age' ) ) ;
2366+ assert . ok ( newSchema . path ( 'age' ) . index ) ;
2367+
2368+ newSchema = schema . omit ( [ 'age' ] ) ;
2369+ assert . ok ( newSchema . path ( 'name.first' ) ) ;
2370+ assert . ok ( newSchema . path ( 'name.first' ) . required ) ;
2371+ assert . ok ( newSchema . path ( 'name.last' ) ) ;
2372+ assert . ok ( newSchema . path ( 'name.last' ) . required ) ;
2373+ assert . ok ( ! newSchema . path ( 'age' ) ) ;
2374+
2375+ newSchema = schema . omit ( [ 'name.last' , 'age' ] ) ;
2376+ assert . ok ( newSchema . path ( 'name.first' ) ) ;
2377+ assert . ok ( newSchema . path ( 'name.first' ) . required ) ;
2378+ assert . ok ( ! newSchema . path ( 'name.last' ) ) ;
2379+ assert . ok ( ! newSchema . path ( 'age' ) ) ;
2380+ } ) ;
2381+
2382+ it ( 'with single nested paths' , function ( ) {
2383+ const schema = Schema ( {
2384+ name : Schema ( {
2385+ first : {
2386+ type : String ,
2387+ required : true
2388+ } ,
2389+ last : {
2390+ type : String ,
2391+ required : true
2392+ }
2393+ } ) ,
2394+ age : {
2395+ type : Number ,
2396+ index : true
2397+ }
2398+ } ) ;
2399+ assert . ok ( schema . path ( 'name.first' ) ) ;
2400+ assert . ok ( schema . path ( 'name.last' ) ) ;
2401+
2402+ let newSchema = schema . omit ( [ 'age' ] ) ;
2403+ assert . ok ( newSchema . path ( 'name.first' ) ) ;
2404+ assert . ok ( newSchema . path ( 'name.first' ) . required ) ;
2405+ assert . ok ( newSchema . path ( 'name.last' ) ) ;
2406+ assert . ok ( newSchema . path ( 'name.last' ) . required ) ;
2407+ assert . ok ( ! newSchema . path ( 'age' ) ) ;
2408+
2409+ newSchema = schema . omit ( [ 'name.last' , 'age' ] ) ;
2410+ assert . ok ( newSchema . path ( 'name.first' ) ) ;
2411+ assert . ok ( newSchema . path ( 'name.first' ) . required ) ;
2412+ assert . ok ( ! newSchema . path ( 'name.last' ) ) ;
2413+ assert . ok ( ! newSchema . path ( 'age' ) ) ;
2414+ } ) ;
2415+ } ) ;
2416+
23422417 describe ( 'path-level custom cast (gh-8300)' , function ( ) {
23432418 it ( 'with numbers' , function ( ) {
23442419 const schema = Schema ( {
0 commit comments