@@ -979,5 +979,97 @@ describe('SubmissionList', () => {
979979 ] ) ;
980980 } ) ;
981981 } ) ;
982+
983+ it ( 'adds page-size query parameter when page size is changed' , ( ) => {
984+ createSubmissions ( 251 ) ;
985+ return load ( '/projects/1/forms/f/submissions' )
986+ . complete ( )
987+ . request ( component => {
988+ const sizeDropdown = component . find ( '.pagination select:has(option[value="500"])' ) ;
989+ return sizeDropdown . setValue ( 500 ) ;
990+ } )
991+ . respondWithData ( ( ) => testData . submissionOData ( 500 ) )
992+ . afterResponse ( component => {
993+ component . vm . $route . query [ 'page-size' ] . should . equal ( '500' ) ;
994+ } ) ;
995+ } ) ;
996+
997+ it ( 'adds page-number query parameter when next page is clicked' , ( ) => {
998+ createSubmissions ( 251 ) ;
999+ return load ( '/projects/1/forms/f/submissions' )
1000+ . complete ( )
1001+ . request ( component =>
1002+ component . find ( 'button[aria-label="Next page"]' ) . trigger ( 'click' ) )
1003+ . respondWithData ( ( ) => testData . submissionOData ( 250 , 250 ) )
1004+ . afterResponse ( component => {
1005+ component . vm . $route . query [ 'page-number' ] . should . equal ( '2' ) ;
1006+ } ) ;
1007+ } ) ;
1008+
1009+ it ( 'displays the correct page when page-number is provided in URL' , ( ) => {
1010+ createSubmissions ( 501 ) ;
1011+ return load ( '/projects/1/forms/f/submissions?page-number=2' , { root : false } )
1012+ . afterResponse ( component => {
1013+ component . find ( '.pagination .form-group' ) . text ( ) . should . be . equal ( 'Rows 251–500 of 501' ) ;
1014+ } ) ;
1015+ } ) ;
1016+
1017+ it ( 'displays correct number of rows when page-size is provided in URL' , ( ) => {
1018+ createSubmissions ( 600 ) ;
1019+ return load ( '/projects/1/forms/f/submissions?page-size=500' , { root : false } )
1020+ . afterResponse ( component => {
1021+ component . find ( '.pagination select' ) . element . value . should . be . eql ( '500' ) ;
1022+ } ) ;
1023+ } ) ;
1024+
1025+ it ( 'selects first page when page-number is less than 1 in URL' , ( ) => {
1026+ createSubmissions ( 251 ) ;
1027+ return load ( '/projects/1/forms/f/submissions?page-number=0' , { root : false } )
1028+ . afterResponse ( component => {
1029+ component . find ( '.pagination .form-group' ) . text ( ) . should . be . eql ( 'Rows 1–250 of 251' ) ;
1030+ } ) ;
1031+ } ) ;
1032+
1033+ it ( 'selects last page when page-number is greater than last page in URL' , ( ) => {
1034+ createSubmissions ( 501 ) ;
1035+ return load ( '/projects/1/forms/f/submissions?page-number=999' , { root : false } )
1036+ . afterResponse ( component => {
1037+ component . find ( '.pagination .form-group' ) . text ( ) . should . be . eql ( 'Row 501 of 501' ) ;
1038+ } ) ;
1039+ } ) ;
1040+
1041+ it ( 'floors page-size to nearest valid value when invalid page-size is provided in URL' , ( ) => {
1042+ createSubmissions ( 251 ) ;
1043+ return load ( '/projects/1/forms/f/submissions?page-size=350' , { root : false } )
1044+ . afterResponse ( component => {
1045+ component . find ( '.pagination select' ) . element . value . should . be . eql ( '250' ) ;
1046+ } ) ;
1047+ } ) ;
1048+
1049+ it ( 'removes page-number from query parameter when switching to map view' , ( ) => {
1050+ const { geopoint } = testData . fields ;
1051+ const fields = [ geopoint ( '/location' ) ] ;
1052+ testData . extendedForms . createPast ( 1 , { fields } ) ;
1053+ testData . extendedSubmissions . createPast ( 251 ) ;
1054+
1055+ return load ( '/projects/1/forms/f/submissions' , { container : { router : testRouter ( ) } } )
1056+ . complete ( )
1057+ . request ( component =>
1058+ component . find ( 'button[aria-label="Next page"]' ) . trigger ( 'click' ) )
1059+ . respondWithData ( ( ) => testData . submissionOData ( 250 , 250 ) )
1060+ . afterResponse ( component => {
1061+ // Verify we're on page 2
1062+ component . vm . $route . query [ 'page-number' ] . should . equal ( '2' ) ;
1063+ } )
1064+ . request ( component => {
1065+ const radioField = component . getComponent ( '.radio-field' ) ;
1066+ const mapOption = radioField . findAll ( 'input[type="radio"]' ) [ 1 ] ;
1067+ return mapOption . trigger ( 'change' ) ;
1068+ } )
1069+ . respondWithData ( testData . submissionGeojson )
1070+ . afterResponse ( component => {
1071+ component . vm . $route . query . should . not . have . property ( 'page-number' ) ;
1072+ } ) ;
1073+ } ) ;
9821074 } ) ;
9831075} ) ;
0 commit comments