• blackst0ne's avatar
    [Rails5] Fix `per_page` in lib/gitlab/multi_collection_paginator.rb · 0e9297b3
    blackst0ne authored
    In Rails 5 the `per_page` argument came from `params` is String but an
    Integer is expected.
    
    This commit explicitly converts `per_page` to an Integer.
    It fixes the errors like:
    
    ```
      1) Groups::ChildrenController GET #index for subgroups filtering children succeeds if multiple pages contain matching subgroups
         Failure/Error:
           hash[page] = second_collection.page(second_collection_page)
                          .per(per_page - paginated_first_collection(page).size)
                          .padding(offset)
    
         NoMethodError:
           undefined method `-' for "3":String
           Did you mean?  -@
         # ./lib/gitlab/multi_collection_paginator.rb:42:in `block in paginated_second_collection'
         # ./lib/gitlab/multi_collection_paginator.rb:46:in `paginated_second_collection'
         # ./lib/gitlab/multi_collection_paginator.rb:14:in `paginate'
         # ./app/finders/group_descendants_finder.rb:52:in `children'
         # ./app/finders/group_descendants_finder.rb:34:in `execute'
         # ./app/controllers/groups/children_controller.rb:36:in `setup_children'
         # ./app/controllers/groups/children_controller.rb:18:in `index'
         # ./lib/gitlab/i18n.rb:50:in `with_locale'
         # ./lib/gitlab/i18n.rb:56:in `with_user_locale'
         # ./app/controllers/application_controller.rb:351:in `set_locale'
         # ./spec/controllers/groups/children_controller_spec.rb:182:in `block (5 levels) in <top (required)>'
         # ./spec/spec_helper.rb:198:in `block (2 levels) in <top (required)>'
    ```
    0e9297b3
multi_collection_paginator.rb 2.04 KB