diff options
-rw-r--r-- | Bugzilla/Test/MockDB.pm | 73 | ||||
-rw-r--r-- | extensions/ComponentWatching/Extension.pm | 2 | ||||
-rw-r--r-- | extensions/MyDashboard/Extension.pm | 2 | ||||
-rw-r--r-- | t/mock-db.t | 10 |
4 files changed, 84 insertions, 3 deletions
diff --git a/Bugzilla/Test/MockDB.pm b/Bugzilla/Test/MockDB.pm index d158a73de..fb7873ccf 100644 --- a/Bugzilla/Test/MockDB.pm +++ b/Bugzilla/Test/MockDB.pm @@ -17,7 +17,10 @@ use Bugzilla::Test::MockLocalconfig ( ); use Bugzilla; BEGIN { Bugzilla->extensions }; -use Bugzilla::Test::MockParams; +use Bugzilla::Test::MockParams ( + emailsuffix => '', + emailregexp => '.+', +); sub import { require Bugzilla::Install; @@ -43,6 +46,74 @@ sub import { Bugzilla->set_user(Bugzilla::User->super_user); Bugzilla::Install::update_settings(); + + my $dbh = Bugzilla->dbh; + if ( !$dbh->selectrow_array("SELECT 1 FROM priority WHERE value = 'P1'") ) { + $dbh->do("DELETE FROM priority"); + my $count = 100; + foreach my $priority (map { "P$_" } 1..5) { + $dbh->do( "INSERT INTO priority (value, sortkey) VALUES (?, ?)", undef, ( $priority, $count + 100 ) ); + } + } + my @flagtypes = ( + { + name => 'review', + desc => 'The patch has passed review by a module owner or peer.', + is_requestable => 1, + is_requesteeble => 1, + is_multiplicable => 1, + grant_group => '', + target_type => 'a', + cc_list => '', + inclusions => [''] + }, + { + name => 'feedback', + desc => 'A particular person\'s input is requested for a patch, ' . + 'but that input does not amount to an official review.', + is_requestable => 1, + is_requesteeble => 1, + is_multiplicable => 1, + grant_group => '', + target_type => 'a', + cc_list => '', + inclusions => [''] + } + ); + + foreach my $flag (@flagtypes) { + next if Bugzilla::FlagType->new({ name => $flag->{name} }); + my $grant_group_id = $flag->{grant_group} + ? Bugzilla::Group->new({ name => $flag->{grant_group} })->id + : undef; + my $request_group_id = $flag->{request_group} + ? Bugzilla::Group->new({ name => $flag->{request_group} })->id + : undef; + + $dbh->do('INSERT INTO flagtypes (name, description, cc_list, target_type, is_requestable, + is_requesteeble, is_multiplicable, grant_group_id, request_group_id) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', + undef, ($flag->{name}, $flag->{desc}, $flag->{cc_list}, $flag->{target_type}, + $flag->{is_requestable}, $flag->{is_requesteeble}, $flag->{is_multiplicable}, + $grant_group_id, $request_group_id)); + + my $type_id = $dbh->bz_last_key('flagtypes', 'id'); + + foreach my $inclusion (@{$flag->{inclusions}}) { + my ($product, $component) = split(':', $inclusion); + my ($prod_id, $comp_id); + if ($product) { + my $prod_obj = Bugzilla::Product->new({ name => $product }); + $prod_id = $prod_obj->id; + if ($component) { + $comp_id = Bugzilla::Component->new({ name => $component, product => $prod_obj})->id; + } + } + $dbh->do('INSERT INTO flaginclusions (type_id, product_id, component_id) + VALUES (?, ?, ?)', + undef, ($type_id, $prod_id, $comp_id)); + } + } }; } diff --git a/extensions/ComponentWatching/Extension.pm b/extensions/ComponentWatching/Extension.pm index 674e0da7b..25155f90b 100644 --- a/extensions/ComponentWatching/Extension.pm +++ b/extensions/ComponentWatching/Extension.pm @@ -411,7 +411,7 @@ sub bugmail_recipients { INNER JOIN components ON components.product_id = component_watch.product_id WHERE component_prefix IS NOT NULL AND (component_watch.product_id = ? OR component_watch.product_id = ?) - AND components.name LIKE CONCAT(component_prefix, '%') + AND components.name LIKE @{[$dbh->sql_string_concat('component_prefix', q{'%'})]} AND (components.id = ? OR components.id = ?) "); $sth->execute( diff --git a/extensions/MyDashboard/Extension.pm b/extensions/MyDashboard/Extension.pm index 5278cfaa4..fc3a689bf 100644 --- a/extensions/MyDashboard/Extension.pm +++ b/extensions/MyDashboard/Extension.pm @@ -106,7 +106,7 @@ sub _component_watcher_ids { WHERE product_id = ? AND (component_id = ? OR component_id IS NULL - OR ? LIKE CONCAT(component_prefix, '%'))"; + OR ? LIKE @{[$dbh->sql_string_concat('component_prefix', q{'%'})]})"; $self->{watcher_ids} ||= $dbh->selectcol_arrayref($query, undef, $self->product_id, $self->id, $self->name); diff --git a/t/mock-db.t b/t/mock-db.t index 6cf84f316..54ceef100 100644 --- a/t/mock-db.t +++ b/t/mock-db.t @@ -32,4 +32,14 @@ catch { fail('create a user'); }; +try { + my $rob = create_user('rob@pants.gov', '*'); + Bugzilla::User->check({id => $rob->id}); + pass('rob@pants.gov checks out'); +} +catch { + diag $_; + fail('rob@pants.gov fails'); +}; + done_testing; |