@@ -566,9 +566,19 class Query < ActiveRecord::Base | |||
|
566 | 566 | sql = '' |
|
567 | 567 | case operator |
|
568 | 568 | when "=" |
|
569 | sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" | |
|
569 | if value.any? | |
|
570 | sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" | |
|
571 | else | |
|
572 | # IN an empty set | |
|
573 | sql = "1=0" | |
|
574 | end | |
|
570 | 575 | when "!" |
|
571 | sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" | |
|
576 | if value.any? | |
|
577 | sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" | |
|
578 | else | |
|
579 | # NOT IN an empty set | |
|
580 | sql = "1=1" | |
|
581 | end | |
|
572 | 582 | when "!*" |
|
573 | 583 | sql = "#{db_table}.#{db_field} IS NULL" |
|
574 | 584 | sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter |
@@ -484,7 +484,6 class QueryTest < ActiveSupport::TestCase | |||
|
484 | 484 | # Users not in a group |
|
485 | 485 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')" |
|
486 | 486 | assert_find_issues_with_query_is_successful @query |
|
487 | ||
|
488 | 487 | end |
|
489 | 488 | |
|
490 | 489 | should "search assigned to any group member (all)" do |
@@ -494,7 +493,22 class QueryTest < ActiveSupport::TestCase | |||
|
494 | 493 | # Only users in a group |
|
495 | 494 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')" |
|
496 | 495 | assert_find_issues_with_query_is_successful @query |
|
497 | ||
|
496 | end | |
|
497 | ||
|
498 | should "return an empty set with = empty group" do | |
|
499 | @empty_group = Group.generate! | |
|
500 | @query = Query.new(:name => '_') | |
|
501 | @query.add_filter('member_of_group', '=', [@empty_group.id.to_s]) | |
|
502 | ||
|
503 | assert_equal [], find_issues_with_query(@query) | |
|
504 | end | |
|
505 | ||
|
506 | should "return issues with ! empty group" do | |
|
507 | @empty_group = Group.generate! | |
|
508 | @query = Query.new(:name => '_') | |
|
509 | @query.add_filter('member_of_group', '!', [@empty_group.id.to_s]) | |
|
510 | ||
|
511 | assert_find_issues_with_query_is_successful @query | |
|
498 | 512 | end |
|
499 | 513 | end |
|
500 | 514 | |
@@ -540,6 +554,22 class QueryTest < ActiveSupport::TestCase | |||
|
540 | 554 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')" |
|
541 | 555 | assert_find_issues_with_query_is_successful @query |
|
542 | 556 | end |
|
557 | ||
|
558 | should "return an empty set with empty role" do | |
|
559 | @empty_role = Role.generate! | |
|
560 | @query = Query.new(:name => '_') | |
|
561 | @query.add_filter('assigned_to_role', '=', [@empty_role.id.to_s]) | |
|
562 | ||
|
563 | assert_equal [], find_issues_with_query(@query) | |
|
564 | end | |
|
565 | ||
|
566 | should "return issues with ! empty role" do | |
|
567 | @empty_role = Role.generate! | |
|
568 | @query = Query.new(:name => '_') | |
|
569 | @query.add_filter('member_of_group', '!', [@empty_role.id.to_s]) | |
|
570 | ||
|
571 | assert_find_issues_with_query_is_successful @query | |
|
572 | end | |
|
543 | 573 | end |
|
544 | 574 | end |
|
545 | 575 |
General Comments 0
You need to be logged in to leave comments.
Login now