@@ -255,4 +255,114 @@ describe('TreeService', () => {
255255 expect ( treeService . nodeCollapsed$ . next ) . toHaveBeenCalled ( ) ;
256256 expect ( treeService . nodeExpanded$ . next ) . not . toHaveBeenCalled ( ) ;
257257 } ) ;
258+
259+ it ( 'fires "loadNextLevel" event when expanding node with hasChildren property set to true' , ( ) => {
260+ const masterTree = new Tree ( {
261+ value : 'Master' ,
262+ emitLoadNextLevel : true
263+ } ) ;
264+
265+ masterTree . switchFoldingType ( ) ;
266+
267+ spyOn ( treeService . loadNextLevel$ , 'next' ) ;
268+
269+ treeService . fireNodeSwitchFoldingType ( masterTree ) ;
270+
271+ expect ( treeService . loadNextLevel$ . next ) . toHaveBeenCalled ( ) ;
272+ } ) ;
273+
274+ it ( 'fires "loadNextLevel" only once' , ( ) => {
275+ const masterTree = new Tree ( {
276+ value : 'Master' ,
277+ emitLoadNextLevel : true
278+ } ) ;
279+
280+ masterTree . switchFoldingType ( ) ;
281+ masterTree . switchFoldingType ( ) ;
282+ masterTree . switchFoldingType ( ) ;
283+
284+ spyOn ( treeService . loadNextLevel$ , 'next' ) ;
285+
286+ treeService . fireNodeSwitchFoldingType ( masterTree ) ;
287+
288+ expect ( treeService . loadNextLevel$ . next ) . toHaveBeenCalledTimes ( 1 ) ;
289+ } ) ;
290+
291+ it ( 'fires "loadNextLevel" if children are provided as empty array' , ( ) => {
292+ const masterTree = new Tree ( {
293+ value : 'Master' ,
294+ emitLoadNextLevel : true ,
295+ children : [ ]
296+ } ) ;
297+
298+ masterTree . switchFoldingType ( ) ;
299+
300+ spyOn ( treeService . loadNextLevel$ , 'next' ) ;
301+
302+ treeService . fireNodeSwitchFoldingType ( masterTree ) ;
303+
304+ expect ( treeService . loadNextLevel$ . next ) . toHaveBeenCalled ( ) ;
305+ } ) ;
306+
307+ it ( 'not fires "loadNextLevel" if "loadChildren" function is provided' , ( ) => {
308+ const masterTree = new Tree ( {
309+ value : 'Master' ,
310+ emitLoadNextLevel : true ,
311+ loadChildren : ( callback ) => {
312+ setTimeout ( ( ) => {
313+ callback ( [
314+ { value : '1' } ,
315+ { value : '2' } ,
316+ { value : '3' }
317+ ] ) ;
318+
319+ } ) ;
320+ }
321+ } ) ;
322+
323+ masterTree . switchFoldingType ( ) ;
324+
325+
326+ spyOn ( treeService . loadNextLevel$ , 'next' ) ;
327+
328+ treeService . fireNodeSwitchFoldingType ( masterTree ) ;
329+
330+ expect ( treeService . loadNextLevel$ . next ) . not . toHaveBeenCalled ( ) ;
331+ } ) ;
332+
333+ it ( 'not fires "loadNextLevel" if children are provided' , ( ) => {
334+ const masterTree = new Tree ( {
335+ value : 'Master' ,
336+ emitLoadNextLevel : true ,
337+ children : [
338+ { value : '1' } ,
339+ { value : '2' } ,
340+ { value : '3' }
341+ ]
342+ } ) ;
343+
344+ masterTree . switchFoldingType ( ) ;
345+
346+ spyOn ( treeService . loadNextLevel$ , 'next' ) ;
347+
348+ treeService . fireNodeSwitchFoldingType ( masterTree ) ;
349+
350+ expect ( treeService . loadNextLevel$ . next ) . not . toHaveBeenCalled ( ) ;
351+ } ) ;
352+
353+ it ( 'not fires "loadNextLevel" event if "hasChildren" is false or does not exists' , ( ) => {
354+ const masterTree = new Tree ( {
355+ value : 'Master' ,
356+ } ) ;
357+
358+ masterTree . switchFoldingType ( ) ;
359+
360+ spyOn ( treeService . loadNextLevel$ , 'next' ) ;
361+
362+ treeService . fireNodeSwitchFoldingType ( masterTree ) ;
363+
364+ expect ( treeService . loadNextLevel$ . next ) . not . toHaveBeenCalled ( ) ;
365+ } ) ;
366+
367+
258368} ) ;
0 commit comments