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; |