@@ -396,4 +396,71 @@ describe('MockFirestoreDocument', function () {
396396 expect ( result ) . to . eventually . equal ( null ) ;
397397 } ) ;
398398 } ) ;
399+
400+ describe ( '#getCollections' , function ( ) {
401+ beforeEach ( function ( ) {
402+ db . doc ( 'doc/subcol/subcol-doc' ) . set ( { foo : 'bar' } ) ;
403+ db . doc ( 'doc/subcol2/subcol-doc' ) . set ( { foo : 'bar' } ) ;
404+ db . doc ( 'doc/subcol/subcol-doc/deep-col/deep-doc' ) . set ( { foo : 'bar' } ) ;
405+ db . doc ( 'doc/subcol/subcol-doc/deep-col2/deep-doc' ) . set ( { foo : 'bar' } ) ;
406+ db . flush ( ) ;
407+ } ) ;
408+ afterEach ( function ( ) {
409+ db . doc ( 'doc/subcol/subcol-doc' ) . delete ( ) ;
410+ db . doc ( 'doc/subcol2/subcol-doc' ) . delete ( ) ;
411+ db . doc ( 'doc/subcol/subcol-doc/deep-col/deep-doc' ) . delete ( ) ;
412+ db . doc ( 'doc/subcol/subcol-doc/deep-col2/deep-doc' ) . delete ( ) ;
413+ db . flush ( ) ;
414+ } ) ;
415+
416+ context ( 'when present' , function ( ) {
417+ it ( 'returns collections of document' , function ( done ) {
418+ db . doc ( 'doc' ) . getCollections ( ) . then ( function ( colRefs ) {
419+ expect ( colRefs ) . to . be . an ( 'array' ) ;
420+ expect ( colRefs ) . to . have . length ( 2 ) ;
421+ expect ( colRefs [ 0 ] . path ) . to . equal ( 'doc/subcol' ) ;
422+ expect ( colRefs [ 1 ] . path ) . to . equal ( 'doc/subcol2' ) ;
423+ done ( ) ;
424+ } ) ;
425+ db . flush ( ) ;
426+ } ) ;
427+
428+ it ( 'returns deeply nested collections of document' , function ( done ) {
429+ db . doc ( 'doc/subcol/subcol-doc' ) . getCollections ( ) . then ( function ( colRefs ) {
430+ expect ( colRefs ) . to . be . an ( 'array' ) ;
431+ expect ( colRefs ) . to . have . length ( 2 ) ;
432+ expect ( colRefs [ 0 ] . path ) . to . equal ( 'doc/subcol/subcol-doc/deep-col' ) ;
433+ expect ( colRefs [ 1 ] . path ) . to . equal ( 'doc/subcol/subcol-doc/deep-col2' ) ;
434+ done ( ) ;
435+ } ) ;
436+ db . flush ( ) ;
437+ } ) ;
438+ } ) ;
439+
440+ context ( 'when not present' , function ( ) {
441+ it ( 'returns empty list of collections' , function ( done ) {
442+ db . doc ( 'not-existing' ) . getCollections ( ) . then ( function ( colRefs ) {
443+ expect ( colRefs ) . to . be . an ( 'array' ) ;
444+ expect ( colRefs ) . to . have . length ( 0 ) ;
445+ done ( ) ;
446+ } ) ;
447+ db . flush ( ) ;
448+ } ) ;
449+
450+ it ( 'skips collections that has no documents' , function ( done ) {
451+ db . doc ( 'doc/subcol/subcol-doc' ) . delete ( ) ;
452+ db . doc ( 'doc/subcol2/subcol-doc' ) . delete ( ) ;
453+ db . doc ( 'doc/subcol/subcol-doc/deep-col/deep-doc' ) . delete ( ) ;
454+ db . doc ( 'doc/subcol/subcol-doc/deep-col2/deep-doc' ) . delete ( ) ;
455+ db . flush ( ) ;
456+
457+ db . doc ( 'doc' ) . getCollections ( ) . then ( function ( colRefs ) {
458+ expect ( colRefs ) . to . be . an ( 'array' ) ;
459+ expect ( colRefs ) . to . have . length ( 0 ) ;
460+ done ( ) ;
461+ } ) ;
462+ db . flush ( ) ;
463+ } ) ;
464+ } ) ;
465+ } ) ;
399466} ) ;
0 commit comments