@@ -267,6 +267,13 @@ impl Group {
267
267
return Err ( "The group was not found." . to_string ( ) ) ;
268
268
}
269
269
270
+ pub fn add_node < T > ( & mut self , n : T )
271
+ where
272
+ T : Into < Node > ,
273
+ {
274
+ self . children . push ( n. into ( ) )
275
+ }
276
+
270
277
pub ( crate ) fn insert_entry (
271
278
& mut self ,
272
279
entry : Entry ,
@@ -550,7 +557,7 @@ mod group_tests {
550
557
let mut entry = Entry :: new ( ) ;
551
558
let entry_uuid = entry. uuid . clone ( ) ;
552
559
entry. set_field_and_commit ( "Title" , "entry1" ) ;
553
- destination_group. children . push ( Node :: Entry ( entry) ) ;
560
+ destination_group. add_node ( entry) ;
554
561
555
562
let mut source_group = destination_group. clone ( ) ;
556
563
@@ -579,7 +586,7 @@ mod group_tests {
579
586
let mut entry = Entry :: new ( ) ;
580
587
let entry_uuid = entry. uuid . clone ( ) ;
581
588
entry. set_field_and_commit ( "Title" , "entry1" ) ;
582
- source_group. children . push ( Node :: Entry ( entry) ) ;
589
+ source_group. add_node ( entry) ;
583
590
584
591
destination_group. merge ( & source_group) ;
585
592
assert_eq ! ( destination_group. children. len( ) , 1 ) ;
@@ -599,16 +606,15 @@ mod group_tests {
599
606
fn test_merge_add_new_non_root_entry ( ) {
600
607
let mut destination_group = Group :: new ( "group1" ) ;
601
608
let mut destination_sub_group = Group :: new ( "subgroup1" ) ;
602
- destination_group
603
- . children
604
- . push ( Node :: Group ( destination_sub_group) ) ;
609
+ destination_group. add_node ( destination_sub_group) ;
610
+
605
611
let mut source_group = destination_group. clone ( ) ;
606
612
let mut source_sub_group = & mut source_group. groups_mut ( ) [ 0 ] ;
607
613
608
614
let mut entry = Entry :: new ( ) ;
609
615
let entry_uuid = entry. uuid . clone ( ) ;
610
616
entry. set_field_and_commit ( "Title" , "entry1" ) ;
611
- source_sub_group. children . push ( Node :: Entry ( entry) ) ;
617
+ source_sub_group. add_node ( entry) ;
612
618
613
619
destination_group. merge ( & source_group) ;
614
620
let destination_entries = destination_group. get_all_entries ( & vec ! [ ] ) ;
@@ -628,8 +634,8 @@ mod group_tests {
628
634
let mut entry = Entry :: new ( ) ;
629
635
let entry_uuid = entry. uuid . clone ( ) ;
630
636
entry. set_field_and_commit ( "Title" , "entry1" ) ;
631
- source_sub_group. children . push ( Node :: Entry ( entry) ) ;
632
- source_group. children . push ( Node :: Group ( source_sub_group) ) ;
637
+ source_sub_group. add_node ( entry) ;
638
+ source_group. add_node ( source_sub_group) ;
633
639
634
640
destination_group. merge ( & source_group) ;
635
641
let destination_entries = destination_group. get_all_entries ( & vec ! [ ] ) ;
@@ -646,15 +652,9 @@ mod group_tests {
646
652
let mut destination_group = Group :: new ( "group1" ) ;
647
653
let mut destination_sub_group1 = Group :: new ( "subgroup1" ) ;
648
654
let mut destination_sub_group2 = Group :: new ( "subgroup2" ) ;
649
- destination_sub_group1
650
- . children
651
- . push ( Node :: Entry ( entry. clone ( ) ) ) ;
652
- destination_group
653
- . children
654
- . push ( Node :: Group ( destination_sub_group1. clone ( ) ) ) ;
655
- destination_group
656
- . children
657
- . push ( Node :: Group ( destination_sub_group2. clone ( ) ) ) ;
655
+ destination_sub_group1. add_node ( entry. clone ( ) ) ;
656
+ destination_group. add_node ( destination_sub_group1. clone ( ) ) ;
657
+ destination_group. add_node ( destination_sub_group2. clone ( ) ) ;
658
658
659
659
let mut source_group = destination_group. clone ( ) ;
660
660
assert ! ( source_group. get_all_entries( & vec![ ] ) . len( ) == 1 ) ;
@@ -713,12 +713,8 @@ mod group_tests {
713
713
entry. set_field_and_commit ( "Title" , "entry1" ) ;
714
714
let mut destination_group = Group :: new ( "group1" ) ;
715
715
let mut destination_sub_group = Group :: new ( "subgroup1" ) ;
716
- destination_sub_group
717
- . children
718
- . push ( Node :: Entry ( entry. clone ( ) ) ) ;
719
- destination_group
720
- . children
721
- . push ( Node :: Group ( destination_sub_group) ) ;
716
+ destination_sub_group. add_node ( entry. clone ( ) ) ;
717
+ destination_group. add_node ( destination_sub_group) ;
722
718
723
719
let mut source_group = destination_group. clone ( ) ;
724
720
let mut source_sub_group = Group :: new ( "subgroup2" ) ;
@@ -727,9 +723,9 @@ mod group_tests {
727
723
// FIXME we should not have to update the history here. We should
728
724
// have a better compare function in the merge function instead.
729
725
entry. update_history ( ) ;
730
- source_sub_group. children . push ( Node :: Entry ( entry. clone ( ) ) ) ;
726
+ source_sub_group. add_node ( entry. clone ( ) ) ;
731
727
source_group. children = vec ! [ ] ;
732
- source_group. children . push ( Node :: Group ( source_sub_group) ) ;
728
+ source_group. add_node ( source_sub_group) ;
733
729
734
730
destination_group. merge ( & source_group) ;
735
731
let destination_entries = destination_group. get_all_entries ( & vec ! [ ] ) ;
@@ -748,7 +744,7 @@ mod group_tests {
748
744
let entry_uuid = entry. uuid . clone ( ) ;
749
745
entry. set_field_and_commit ( "Title" , "entry1" ) ;
750
746
751
- destination_group. children . push ( Node :: Entry ( entry) ) ;
747
+ destination_group. add_node ( entry) ;
752
748
753
749
let mut source_group = destination_group. clone ( ) ;
754
750
@@ -768,7 +764,7 @@ mod group_tests {
768
764
let mut entry = Entry :: new ( ) ;
769
765
let entry_uuid = entry. uuid . clone ( ) ;
770
766
entry. set_field_and_commit ( "Title" , "entry1" ) ;
771
- destination_group. children . push ( Node :: Entry ( entry) ) ;
767
+ destination_group. add_node ( entry) ;
772
768
773
769
let mut source_group = destination_group. clone ( ) ;
774
770
@@ -788,7 +784,7 @@ mod group_tests {
788
784
let mut entry = Entry :: new ( ) ;
789
785
let entry_uuid = entry. uuid . clone ( ) ;
790
786
entry. set_field_and_commit ( "Title" , "entry1" ) ;
791
- destination_group. children . push ( Node :: Entry ( entry) ) ;
787
+ destination_group. add_node ( entry) ;
792
788
793
789
let mut source_group = destination_group. clone ( ) ;
794
790
0 commit comments