diff options
Diffstat (limited to 'rt/t/web/query_builder.t')
-rw-r--r-- | rt/t/web/query_builder.t | 249 |
1 files changed, 0 insertions, 249 deletions
diff --git a/rt/t/web/query_builder.t b/rt/t/web/query_builder.t deleted file mode 100644 index 02ed1297f..000000000 --- a/rt/t/web/query_builder.t +++ /dev/null @@ -1,249 +0,0 @@ -#!/usr/bin/perl - -use strict; -use HTTP::Request::Common; -use HTTP::Cookies; -use LWP; -use Encode; -use RT::Test tests => 42; - -my $cookie_jar = HTTP::Cookies->new; -my ($baseurl, $agent) = RT::Test->started_ok; - - -# give the agent a place to stash the cookies - -$agent->cookie_jar($cookie_jar); - -# create a regression queue if it doesn't exist -my $queue = RT::Test->load_or_create_queue( Name => 'Regression' ); -ok $queue && $queue->id, 'loaded or created queue'; - -my $url = $agent->rt_base_url; -ok $agent->login, "logged in"; - -# {{{ Query Builder tests - -my $response = $agent->get($url."Search/Build.html"); -ok $response->is_success, "Fetched ". $url ."Search/Build.html"; - -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; - $q =~ s/\s+$//g; - $q =~ s/\s+/ /g; - return $q; -} - -sub selectedClauses { - my @clauses = grep { defined } map { $_->value } $agent->current_form->find_input("clauses"); - return [ @clauses ]; -} - - -diag "add the first condition" if $ENV{'TEST_VERBOSE'}; -{ - ok $agent->form_name('BuildQuery'), "found the form once"; - $agent->field("ActorField", "Owner"); - $agent->field("ActorOp", "="); - $agent->field("ValueOfActor", "Nobody"); - $agent->submit; - is getQueryFromForm, "Owner = 'Nobody'", 'correct query'; -} - -diag "set the next condition" if $ENV{'TEST_VERBOSE'}; -{ - ok($agent->form_name('BuildQuery'), "found the form again"); - $agent->field("QueueOp", "!="); - $agent->field("ValueOfQueue", "Regression"); - $agent->submit; - is getQueryFromForm, "Owner = 'Nobody' AND Queue != 'Regression'", - 'correct query'; -} - -diag "We're going to delete the owner" if $ENV{'TEST_VERBOSE'}; -{ - $agent->select("clauses", ["0"] ); - $agent->click("DeleteClause"); - ok $agent->form_name('BuildQuery'), "found the form"; - is getQueryFromForm, "Queue != 'Regression'", 'correct query'; -} - -diag "add a cond with OR and se number by the way" if $ENV{'TEST_VERBOSE'}; -{ - $agent->field("AndOr", "OR"); - $agent->select("idOp", ">"); - $agent->field("ValueOfid" => "1234"); - $agent->click("AddClause"); - ok $agent->form_name('BuildQuery'), "found the form again"; - is getQueryFromForm, "Queue != 'Regression' OR id > 1234", - "added something as OR, and number not quoted"; - is_deeply selectedClauses, ["1"], 'the id that we just entered is still selected'; - -} - -diag "Move the second one up a level" if $ENV{'TEST_VERBOSE'}; -{ - $agent->click("Up"); - ok $agent->form_name('BuildQuery'), "found the form again"; - is getQueryFromForm, "id > 1234 OR Queue != 'Regression'", "moved up one"; - is_deeply selectedClauses, ["0"], 'the one we moved up is selected'; -} - -diag "Move the second one right" if $ENV{'TEST_VERBOSE'}; -{ - $agent->click("Right"); - ok $agent->form_name('BuildQuery'), "found the form again"; - is getQueryFromForm, "Queue != 'Regression' OR ( id > 1234 )", - "moved over to the right (and down)"; - is_deeply selectedClauses, ["2"], 'the one we moved right is selected'; -} - -diag "Move the block up" if $ENV{'TEST_VERBOSE'}; -{ - $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"; - is_deeply selectedClauses, ["0"], 'the one we moved up is selected'; -} - - -diag "Can not move up the top most clause" if $ENV{'TEST_VERBOSE'}; -{ - $agent->select("clauses", ["0"]); - $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"); - is_deeply selectedClauses, ["0"], 'the one we tried to move is selected'; -} - -diag "Can not move left the left most clause" if $ENV{'TEST_VERBOSE'}; -{ - $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"); - is_deeply selectedClauses, ["0"], 'the one we tried to move is selected'; -} - -diag "Add a condition into a nested block" if $ENV{'TEST_VERBOSE'}; -{ - $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 only selected'; - is getQueryFromForm, - "( id > 1234 AND Status = 'stalled' ) OR Queue != 'Regression'", - "added new one"; -} - -diag "click advanced, enter 'C1 OR ( C2 AND C3 )', apply, aggregators should stay the same." - if $ENV{'TEST_VERBOSE'}; -{ - 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 -# -# move left -# - error if nothing selected -# - same item should be selected after move -# - can't move left if you're at the top level -# -# move right -# - error if nothing selected -# - same item should be selected after move -# - can always move right (no max depth...should there be?) -# -# move up -# - error if nothing selected -# - same item should be selected after move -# - can't move up if you're first in the list -# -# move down -# - error if nothing selected -# - same item should be selected after move -# - can't move down if you're last in the list -# -# toggle -# - error if nothing selected -# - change all aggregators in the grouping -# - don't change any others -# -# delete -# - error if nothing selected -# - delete currently selected item -# - delete all children of a grouping -# - if delete leaves a node with no children, delete that, too -# - what should be selected? -# -# Clear -# - clears entire query -# - clears it from the session, too - -# }}} - -# 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.{\x{442}}'", "\x{441}"); - $agent->submit(); - is( getQueryFromForm, - "'CF.{\x{442}}' LIKE '\x{441}'", - "no changes, no duplicate condition with badly encoded text" - ); - -} - -diag "input a condition, select (several conditions), click delete" - if $ENV{'TEST_VERBOSE'}; -{ - 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' )"); - $agent->submit; - is( getQueryFromForm, - "( Status = 'new' OR Status = 'open' )", - "query is the same" - ); - $agent->select("clauses", [qw(0 1 2)]); - $agent->field( ValueOfid => 10 ); - $agent->click("DeleteClause"); - - is( getQueryFromForm, - "id < 10", - "replaced query successfuly" - ); -} - -1; |