@@ -566,9 +566,19 class Query < ActiveRecord::Base | |||||
566 | sql = '' |
|
566 | sql = '' | |
567 | case operator |
|
567 | case operator | |
568 | when "=" |
|
568 | when "=" | |
|
569 | if value.any? | |||
569 | sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" |
|
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 | when "!" |
|
575 | when "!" | |
|
576 | if value.any? | |||
571 | sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" |
|
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 | when "!*" |
|
582 | when "!*" | |
573 | sql = "#{db_table}.#{db_field} IS NULL" |
|
583 | sql = "#{db_table}.#{db_field} IS NULL" | |
574 | sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter |
|
584 | sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter |
@@ -484,7 +484,6 class QueryTest < ActiveSupport::TestCase | |||||
484 | # Users not in a group |
|
484 | # Users not in a group | |
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}')" |
|
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 | assert_find_issues_with_query_is_successful @query |
|
486 | assert_find_issues_with_query_is_successful @query | |
487 |
|
||||
488 | end |
|
487 | end | |
489 |
|
488 | |||
490 | should "search assigned to any group member (all)" do |
|
489 | should "search assigned to any group member (all)" do | |
@@ -494,7 +493,22 class QueryTest < ActiveSupport::TestCase | |||||
494 | # Only users in a group |
|
493 | # Only users in a group | |
495 | 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}')" |
|
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 | assert_find_issues_with_query_is_successful @query |
|
495 | assert_find_issues_with_query_is_successful @query | |
|
496 | end | |||
497 |
|
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 | end |
|
512 | end | |
499 | end |
|
513 | end | |
500 |
|
514 | |||
@@ -540,6 +554,22 class QueryTest < ActiveSupport::TestCase | |||||
540 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')" |
|
554 | assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')" | |
541 | assert_find_issues_with_query_is_successful @query |
|
555 | assert_find_issues_with_query_is_successful @query | |
542 | end |
|
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 | end |
|
573 | end | |
544 | end |
|
574 | end | |
545 |
|
575 |
General Comments 0
You need to be logged in to leave comments.
Login now