diff options
Diffstat (limited to 'rt/lib/t/regression/21query-builder.t')
| -rw-r--r-- | rt/lib/t/regression/21query-builder.t | 74 | 
1 files changed, 17 insertions, 57 deletions
| diff --git a/rt/lib/t/regression/21query-builder.t b/rt/lib/t/regression/21query-builder.t index 7f9990a30..be04599bc 100644 --- a/rt/lib/t/regression/21query-builder.t +++ b/rt/lib/t/regression/21query-builder.t @@ -1,7 +1,7 @@  #!/usr/bin/perl  use strict; -use Test::More tests => 39; +use Test::More tests => 31;  use Test::WWW::Mechanize;  use HTTP::Request::Common;  use HTTP::Cookies; @@ -16,20 +16,7 @@ my $agent = Test::WWW::Mechanize->new();  $agent->cookie_jar($cookie_jar);  use RT; -RT::LoadConfig(); -RT::Init(); - -# create a regression queue if it doesn't exist -{ -    my $queue = RT::Queue->new( $RT::SystemUser ); -    $queue->Load( 'Regression' ); -    if ( $queue->id ) { -        ok(1, "queue 'Regression' exists"); -    } else { -        $queue->Create( Name => 'Regression' ); -        ok($queue->id, "created queue 'Regression'"); -    } -} +RT::LoadConfig;  # get the top page  my $url = $RT::WebURL; @@ -78,7 +65,6 @@ $agent->submit();  ok($agent->form_name('BuildQuery'), "found the form a third time");  sub getQueryFromForm { -    $agent->form_name('BuildQuery');      # This pulls out the "hidden input" query from the page      my $q = $agent->current_form->find_input("Query")->value;      $q =~ s/^\s+//g; @@ -140,37 +126,38 @@ $agent->select("clauses", ["1"]);  $agent->click("Up");  ok($agent->form_name('BuildQuery'), "found the form again"); -is(getQueryFromForm, "( id > 1234 ) OR Queue != 'Regression'", "moved up"); +TODO: { +  local $TODO = "query builder incorrectly changes OR to AND"; +  is(getQueryFromForm, "( id > 1234 ) OR Queue != 'Regression'", "moved up"); +}  $agent->select("clauses", ["0"]); # this is a null clause +  $agent->click("Up"); +  ok($agent->form_name('BuildQuery'), "found the form again"); +  $agent->content_like(qr/error: can\S+t move up/, "i shouldn't have been able to hit up");  $agent->click("Left"); +  ok($agent->form_name('BuildQuery'), "found the form again"); +  $agent->content_like(qr/error: can\S+t move left/, "i shouldn't have been able to hit left");  $agent->select("clauses", ["1"]);  $agent->select("ValueOfStatus" => "stalled"); +  $agent->submit;  ok($agent->form_name('BuildQuery'), "found the form again");  is_deeply(selectedClauses, ["2"], 'the one we added is selected'); -is( getQueryFromForm, "( id > 1234 AND Status = 'stalled' ) OR Queue != 'Regression'", "added new one" ); - -# click advanced, enter "C1 OR ( C2 AND C3 )", apply, aggregators should stay the same. -{ -    my $response = $agent->get($url."Search/Edit.html"); -    ok( $response->is_success, "Fetched /Search/Edit.html" ); -    ok($agent->form_number(3), "found the form"); -    $agent->field("Query", "Status = 'new' OR ( Status = 'open' AND Subject LIKE 'office' )"); -    $agent->submit; -    is( getQueryFromForm, -        "Status = 'new' OR ( Status = 'open' AND Subject LIKE 'office' )", -        "no aggregators change" -    ); +TODO: { +  local $TODO = "query builder incorrectly changes OR to AND"; +  is(getQueryFromForm, "( id > 1234 AND Status = 'stalled' ) OR Queue != 'Regression'", "added new one");  } + +  # - new items go one level down  # - add items at currently selected level  # - if nothing is selected, add at end, one level down @@ -213,32 +200,5 @@ is( getQueryFromForm, "( id > 1234 AND Status = 'stalled' ) OR Queue != 'Regress  # }}} -# create a custom field with nonascii name and try to add a condition -{ -    my $cf = RT::CustomField->new( $RT::SystemUser ); -    $cf->LoadByName( Name => "\x{442}", Queue => 0 ); -    if ( $cf->id ) { -        is($cf->Type, 'Freeform', 'loaded and type is correct'); -    } else { -        my ($return, $msg) = $cf->Create( -            Name => "\x{442}", -            Queue => 0, -            Type => 'Freeform', -        ); -        ok($return, 'created CF') or diag "error: $msg"; -    } - -    my $response = $agent->get($url."Search/Build.html?NewQuery=1"); -    ok( $response->is_success, "Fetched " . $url."Search/Build.html" ); - -    ok($agent->form_name('BuildQuery'), "found the form once"); -    $agent->field("ValueOf'CF.{\321\202}'", "\321\201"); -    $agent->submit(); -    is( getQueryFromForm, -        "'CF.{\321\202}' LIKE '\321\201'", -        "no changes, no duplicate condition with badly encoded text" -    ); - -}  1; | 
