diff options
| author | ivan <ivan> | 2008-03-02 04:11:51 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2008-03-02 04:11:51 +0000 | 
| commit | c648976f0b7975f2328ebd7ba8c711fad0ca4195 (patch) | |
| tree | f3d176ec300a46c253ba25a988b897bce02fe174 /rt/lib/t/regression/21query-builder.t | |
| parent | 5e05724a635a22776f1b973f5d7e77989da4e048 (diff) | |
| parent | 8103c1fc1b2c27a6855feadf26f91b980a54bc52 (diff) | |
This commit was generated by cvs2svn to compensate for changes in r6255,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'rt/lib/t/regression/21query-builder.t')
| -rw-r--r-- | rt/lib/t/regression/21query-builder.t | 77 | 
1 files changed, 60 insertions, 17 deletions
| diff --git a/rt/lib/t/regression/21query-builder.t b/rt/lib/t/regression/21query-builder.t index be04599bc..a0cecb2f3 100644 --- a/rt/lib/t/regression/21query-builder.t +++ b/rt/lib/t/regression/21query-builder.t @@ -1,7 +1,9 @@  #!/usr/bin/perl  use strict; -use Test::More tests => 31; +use warnings; + +use Test::More tests => 39;  use Test::WWW::Mechanize;  use HTTP::Request::Common;  use HTTP::Cookies; @@ -16,7 +18,20 @@ my $agent = Test::WWW::Mechanize->new();  $agent->cookie_jar($cookie_jar);  use RT; -RT::LoadConfig; +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 - #". $queue->id ); +    } else { +        $queue->Create( Name => 'Regression' ); +        ok($queue->id, "created queue 'Regression'"); +    } +}  # get the top page  my $url = $RT::WebURL; @@ -65,6 +80,7 @@ $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; @@ -126,38 +142,37 @@ $agent->select("clauses", ["1"]);  $agent->click("Up");  ok($agent->form_name('BuildQuery'), "found the form again"); -TODO: { -  local $TODO = "query builder incorrectly changes OR to AND"; -  is(getQueryFromForm, "( id > 1234 ) OR Queue != 'Regression'", "moved up"); -} +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'); -TODO: { -  local $TODO = "query builder incorrectly changes OR to AND"; -  is(getQueryFromForm, "( id > 1234 AND Status = 'stalled' ) OR Queue != 'Regression'", "added new one"); +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" +    );  } - -  # - new items go one level down  # - add items at currently selected level  # - if nothing is selected, add at end, one level down @@ -200,5 +215,33 @@ TODO: {  # }}} +# 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" +    ); + +	$cf->delete(); +}  1; | 
