diff --git a/app/models/query.rb b/app/models/query.rb index 949054533..1f033048a 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -378,15 +378,15 @@ class Query < ActiveRecord::Base # Returns true if the query is a grouped query def grouped? - !group_by.blank? + !group_by_column.nil? end def group_by_column - groupable_columns.detect {|c| c.name.to_s == group_by} + groupable_columns.detect {|c| c.groupable && c.name.to_s == group_by} end def group_by_statement - group_by_column.groupable + group_by_column.try(:groupable) end def project_statement diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index 173367a4b..4d85a2b2b 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -235,6 +235,22 @@ class QueryTest < ActiveSupport::TestCase q = Query.new assert q.groupable_columns.detect {|c| c.is_a? QueryCustomFieldColumn} end + + def test_grouped_with_valid_column + q = Query.new(:group_by => 'status') + assert q.grouped? + assert_not_nil q.group_by_column + assert_equal :status, q.group_by_column.name + assert_not_nil q.group_by_statement + assert_equal 'status', q.group_by_statement + end + + def test_grouped_with_invalid_column + q = Query.new(:group_by => 'foo') + assert !q.grouped? + assert_nil q.group_by_column + assert_nil q.group_by_statement + end def test_default_sort q = Query.new