Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • 12-9-stable
  • 12-7-stable
  • 12-6-stable
  • 12-8-stable
  • github/fork/Kloppi313/patch-1
  • 12-5-stable
  • 12-4-stable
  • github/fork/ramalokesh8477/master
  • 12-1-stable
  • 12-2-stable
  • 12-0-stable
  • 12-3-stable
  • 42-42-stable
  • github/fork/hussamgit398/patch-2
  • 12-3-auto-deploy-20190911
  • 12-3-auto-deploy-20190916
  • 12-3-auto-deploy-20190908
  • 12-3-auto-deploy-20190901
  • 12-3-auto-deploy-20190901-32664
  • v12.10.0.pre
  • v12.9.0
  • v12.9.0-rc42
  • v12.8.7
  • v12.8.6
  • v12.8.5
  • v12.8.4
  • v12.8.3
  • v12.6.8
  • v12.7.7
  • v12.8.2
  • v12.8.1
  • v12.9.0.pre
  • v12.8.0
  • v12.8.0-rc42
  • v12.5.10
  • v12.7.6
  • v12.6.7
  • v12.7.5
  • v12.5.9
40 results

user.rb

  • blackst0ne's avatar
    90716733
    [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
    History
    [Rails5] Fix `User#manageable_groups`
    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).