@@ -150,13 +150,15 @@ describe('pagination', () => {
150
150
wrapper . setProps ( {
151
151
totalRows : 4
152
152
} )
153
+ await waitNT ( wrapper . vm )
153
154
154
155
expect ( wrapper . is ( 'ul' ) ) . toBe ( true )
155
156
expect ( wrapper . findAll ( 'li' ) . length ) . toBe ( 8 )
156
157
157
158
wrapper . setProps ( {
158
159
perPage : 2
159
160
} )
161
+ await waitNT ( wrapper . vm )
160
162
161
163
expect ( wrapper . is ( 'ul' ) ) . toBe ( true )
162
164
expect ( wrapper . findAll ( 'li' ) . length ) . toBe ( 6 )
@@ -679,8 +681,8 @@ describe('pagination', () => {
679
681
wrapper . destroy ( )
680
682
} )
681
683
682
- it ( 'changing the pagesize resets to page 1' , async ( ) => {
683
- // https://github.com/bootstrap-vue/bootstrap-vue/issues/2987
684
+ it ( 'changing the number of pages to less than current page number resets to page 1' , async ( ) => {
685
+ // https://github.com/bootstrap-vue/bootstrap-vue/issues/3716
684
686
const wrapper = mount ( BPagination , {
685
687
propsData : {
686
688
totalRows : 10 ,
@@ -694,16 +696,79 @@ describe('pagination', () => {
694
696
expect ( wrapper . vm . currentPage ) . toBe ( 10 )
695
697
expect ( wrapper . emitted ( 'input' ) ) . not . toBeDefined ( )
696
698
699
+ // Change total rows to larger value. Should not change page number
700
+ wrapper . setProps ( {
701
+ totalRows : 20
702
+ } )
703
+ await waitNT ( wrapper . vm )
704
+ expect ( wrapper . vm . currentPage ) . toBe ( 10 )
705
+ expect ( wrapper . emitted ( 'input' ) ) . not . toBeDefined ( )
706
+
707
+ // Change to page 20
708
+ wrapper . setProps ( {
709
+ value : 20
710
+ } )
711
+ await waitNT ( wrapper . vm )
712
+ expect ( wrapper . vm . currentPage ) . toBe ( 20 )
713
+ expect ( wrapper . emitted ( 'input' ) ) . toBeDefined ( )
714
+ expect ( wrapper . emitted ( 'input' ) . length ) . toBe ( 1 )
715
+ expect ( wrapper . emitted ( 'input' ) [ 0 ] [ 0 ] ) . toBe ( 20 )
716
+
717
+ // Decrease number of pages should reset to page 1
718
+ wrapper . setProps ( {
719
+ totalRows : 10
720
+ } )
721
+ await waitNT ( wrapper . vm )
722
+ expect ( wrapper . vm . currentPage ) . toBe ( 1 )
723
+ expect ( wrapper . emitted ( 'input' ) . length ) . toBe ( 2 )
724
+ expect ( wrapper . emitted ( 'input' ) [ 1 ] [ 0 ] ) . toBe ( 1 )
725
+
726
+ // Change to page 3
727
+ wrapper . setProps ( {
728
+ value : 3
729
+ } )
730
+ await waitNT ( wrapper . vm )
731
+ expect ( wrapper . vm . currentPage ) . toBe ( 3 )
732
+ expect ( wrapper . emitted ( 'input' ) . length ) . toBe ( 3 )
733
+ expect ( wrapper . emitted ( 'input' ) [ 2 ] [ 0 ] ) . toBe ( 3 )
734
+
735
+ // Decrease number of pages to 5 should not reset to page 1
736
+ wrapper . setProps ( {
737
+ totalRows : 5
738
+ } )
739
+ await waitNT ( wrapper . vm )
740
+ expect ( wrapper . vm . currentPage ) . toBe ( 3 )
741
+ expect ( wrapper . emitted ( 'input' ) . length ) . toBe ( 3 )
742
+
743
+ wrapper . destroy ( )
744
+ } )
745
+
746
+ it ( 'changing per-page resets to page 1' , async ( ) => {
747
+ // https://github.com/bootstrap-vue/bootstrap-vue/issues/2987
748
+ const wrapper = mount ( BPagination , {
749
+ propsData : {
750
+ totalRows : 10 ,
751
+ perPage : 1 ,
752
+ value : 4 ,
753
+ limit : 20
754
+ }
755
+ } )
756
+ expect ( wrapper . isVueInstance ( ) ) . toBe ( true )
757
+
758
+ expect ( wrapper . vm . currentPage ) . toBe ( 4 )
759
+ expect ( wrapper . emitted ( 'input' ) ) . not . toBeDefined ( )
760
+
761
+ // Change perPage
697
762
wrapper . setProps ( {
698
- perPage : 3
763
+ perPage : 2
699
764
} )
700
765
await waitNT ( wrapper . vm )
701
766
expect ( wrapper . vm . currentPage ) . toBe ( 1 )
702
767
expect ( wrapper . emitted ( 'input' ) ) . toBeDefined ( )
703
768
expect ( wrapper . emitted ( 'input' ) . length ) . toBe ( 1 )
704
769
expect ( wrapper . emitted ( 'input' ) [ 0 ] [ 0 ] ) . toBe ( 1 )
705
770
706
- // Change to page 3
771
+ // Change page to 3
707
772
wrapper . setProps ( {
708
773
value : 3
709
774
} )
@@ -712,7 +777,8 @@ describe('pagination', () => {
712
777
expect ( wrapper . emitted ( 'input' ) . length ) . toBe ( 2 )
713
778
expect ( wrapper . emitted ( 'input' ) [ 1 ] [ 0 ] ) . toBe ( 3 )
714
779
715
- // Increasing number of pages should reset to page 1
780
+ // Change perPage. Should reset to page 1, even though
781
+ // current page is within range of numberOfPages
716
782
wrapper . setProps ( {
717
783
perPage : 1
718
784
} )
0 commit comments