1. 19 Apr, 2018 1 commit
    • blackst0ne's avatar
      [Rails5] Fix `User#manageable_groups` · 90716733
      blackst0ne authored
      In `arel 7.0` (`7.1.4` version is used for rails5) there were introduced
      some changes that break our code in the `User#manageable_groups` method.
      
      The problem is that `arel_table[:id].in(Arel::Nodes::SqlLiteral)` generates
      wrong `IN ()` construction. The selection for `IN` is missing:
      
      => "\"namespaces\".\"id\" IN (0)"
      
      That caused such spec errors for the `rails5` branch:
      
      ```
      4) User groups with child groups #manageable_groups does not include duplicates if a membership was added for the subgroup
          Failure/Error: expect(user.manageable_groups).to contain_exactly(group, subgroup)
      
            expected collection contained:  [#<Group id:232 @group29>, #<Group id:234 @group29/group30>]
            actual collection contained:    []
            the missing elements were:      [#<Group id:232 @group29>, #<Group id:234 @group29/group30>]
          # ./spec/models/user_spec.rb:699:in `block (5 levels) in <top (required)>'
          # ./spec/spec_helper.rb:188:in `block (2 levels) in <top (required)>'
          # /var/lib/gems/2.3.0/gems/rspec-retry-0.4.6/lib/rspec/retry.rb:112:in `block in run'
          # /var/lib/gems/2.3.0/gems/rspec-retry-0.4.6/lib/rspec/retry.rb:101:in `loop'
          # /var/lib/gems/2.3.0/gems/rspec-retry-0.4.6/lib/rspec/retry.rb:101:in `run'
          # /var/lib/gems/2.3.0/gems/rspec-retry-0.4.6/lib/rspec_ext/rspec_ext.rb:12:in `run_with_retry'
          # /var/lib/gems/2.3.0/gems/rspec-retry-0.4.6/lib/rspec/retry.rb:30:in `block (2 levels) in setup'
      ```
      
      This commit changes `User#manageable_groups` in the way to drop the usage of
      `Arel::Nodes::SqlLiteral` and adds usage of raw SQL query.
      This change should be updated when we're migrated to Rails 5.2 because arel
      was fixed in `9.0.0` (which is used in Rails 5.2).
      90716733
  2. 11 Apr, 2018 39 commits