@@ -942,5 +942,97 @@ describe('SubmissionList', () => {
942942 component . find ( '.pagination select' ) . element . value . should . be . eql ( '2' ) ;
943943 } ) ;
944944 } ) ;
945+
946+ it ( 'adds page-size query parameter when page size is changed' , ( ) => {
947+ createSubmissions ( 251 ) ;
948+ return load ( '/projects/1/forms/f/submissions' )
949+ . complete ( )
950+ . request ( component => {
951+ const sizeDropdown = component . find ( '.pagination select:has(option[value="500"])' ) ;
952+ return sizeDropdown . setValue ( 500 ) ;
953+ } )
954+ . respondWithData ( ( ) => testData . submissionOData ( 500 ) )
955+ . afterResponse ( component => {
956+ component . vm . $route . query [ 'page-size' ] . should . equal ( '500' ) ;
957+ } ) ;
958+ } ) ;
959+
960+ it ( 'adds page-number query parameter when next page is clicked' , ( ) => {
961+ createSubmissions ( 251 ) ;
962+ return load ( '/projects/1/forms/f/submissions' )
963+ . complete ( )
964+ . request ( component =>
965+ component . find ( 'button[aria-label="Next page"]' ) . trigger ( 'click' ) )
966+ . respondWithData ( ( ) => testData . submissionOData ( 250 , 250 ) )
967+ . afterResponse ( component => {
968+ component . vm . $route . query [ 'page-number' ] . should . equal ( '2' ) ;
969+ } ) ;
970+ } ) ;
971+
972+ it ( 'displays the correct page when page-number is provided in URL' , ( ) => {
973+ createSubmissions ( 501 ) ;
974+ return load ( '/projects/1/forms/f/submissions?page-number=2' , { root : false } )
975+ . afterResponse ( component => {
976+ component . find ( '.pagination select' ) . element . value . should . be . eql ( '1' ) ;
977+ } ) ;
978+ } ) ;
979+
980+ it ( 'displays correct number of rows when page-size is provided in URL' , ( ) => {
981+ createSubmissions ( 600 ) ;
982+ return load ( '/projects/1/forms/f/submissions?page-size=500' , { root : false } )
983+ . afterResponse ( component => {
984+ component . find ( '.pagination select:has(option[value="500"])' ) . element . value . should . be . eql ( '500' ) ;
985+ } ) ;
986+ } ) ;
987+
988+ it ( 'selects first page when page-number is less than 1 in URL' , ( ) => {
989+ createSubmissions ( 251 ) ;
990+ return load ( '/projects/1/forms/f/submissions?page-number=0' , { root : false } )
991+ . afterResponse ( component => {
992+ component . find ( '.pagination select' ) . element . value . should . be . eql ( '0' ) ;
993+ } ) ;
994+ } ) ;
995+
996+ it ( 'selects last page when page-number is greater than last page in URL' , ( ) => {
997+ createSubmissions ( 501 ) ;
998+ return load ( '/projects/1/forms/f/submissions?page-number=999' , { root : false } )
999+ . afterResponse ( component => {
1000+ component . find ( '.pagination select' ) . element . value . should . be . eql ( '2' ) ;
1001+ } ) ;
1002+ } ) ;
1003+
1004+ it ( 'floors page-size to nearest valid value when invalid page-size is provided in URL' , ( ) => {
1005+ createSubmissions ( 251 ) ;
1006+ return load ( '/projects/1/forms/f/submissions?page-size=350' , { root : false } )
1007+ . afterResponse ( component => {
1008+ component . find ( '.pagination select:has(option[value="500"])' ) . element . value . should . be . eql ( '250' ) ;
1009+ } ) ;
1010+ } ) ;
1011+
1012+ it ( 'removes page-number from query parameter when switching to map view' , ( ) => {
1013+ const { geopoint } = testData . fields ;
1014+ const fields = [ geopoint ( '/location' ) ] ;
1015+ testData . extendedForms . createPast ( 1 , { fields } ) ;
1016+ testData . extendedSubmissions . createPast ( 251 ) ;
1017+
1018+ return load ( '/projects/1/forms/f/submissions' , { container : { router : testRouter ( ) } } )
1019+ . complete ( )
1020+ . request ( component =>
1021+ component . find ( 'button[aria-label="Next page"]' ) . trigger ( 'click' ) )
1022+ . respondWithData ( ( ) => testData . submissionOData ( 250 , 250 ) )
1023+ . afterResponse ( component => {
1024+ // Verify we're on page 2
1025+ component . vm . $route . query [ 'page-number' ] . should . equal ( '2' ) ;
1026+ } )
1027+ . request ( component => {
1028+ const radioField = component . getComponent ( '.radio-field' ) ;
1029+ const mapOption = radioField . findAll ( 'input[type="radio"]' ) [ 1 ] ;
1030+ return mapOption . trigger ( 'change' ) ;
1031+ } )
1032+ . respondWithData ( testData . submissionGeojson )
1033+ . afterResponse ( component => {
1034+ component . vm . $route . query . should . not . have . property ( 'page-number' ) ;
1035+ } ) ;
1036+ } ) ;
9451037 } ) ;
9461038} ) ;
0 commit comments