diff options
Diffstat (limited to 'Bugzilla/Test/MockDB.pm')
-rw-r--r-- | Bugzilla/Test/MockDB.pm | 179 |
1 files changed, 93 insertions, 86 deletions
diff --git a/Bugzilla/Test/MockDB.pm b/Bugzilla/Test/MockDB.pm index fb7873ccf..db55b5d1e 100644 --- a/Bugzilla/Test/MockDB.pm +++ b/Bugzilla/Test/MockDB.pm @@ -11,110 +11,117 @@ use warnings; use Try::Tiny; use Capture::Tiny qw(capture_merged); -use Bugzilla::Test::MockLocalconfig ( - db_driver => 'sqlite', - db_name => ':memory:', -); +use Bugzilla::Test::MockLocalconfig (db_driver => 'sqlite', + db_name => ':memory:',); use Bugzilla; -BEGIN { Bugzilla->extensions }; -use Bugzilla::Test::MockParams ( - emailsuffix => '', - emailregexp => '.+', -); +BEGIN { Bugzilla->extensions } +use Bugzilla::Test::MockParams (emailsuffix => '', emailregexp => '.+',); sub import { - require Bugzilla::Install; - require Bugzilla::Install::DB; - require Bugzilla::Field;; + require Bugzilla::Install; + require Bugzilla::Install::DB; + require Bugzilla::Field; - state $first_time = 0; + state $first_time = 0; - return undef if $first_time++; + return undef if $first_time++; - return capture_merged { - Bugzilla->dbh->bz_setup_database(); + return capture_merged { + Bugzilla->dbh->bz_setup_database(); - # Populate the tables that hold the values for the <select> fields. - Bugzilla->dbh->bz_populate_enum_tables(); + # Populate the tables that hold the values for the <select> fields. + Bugzilla->dbh->bz_populate_enum_tables(); - Bugzilla::Install::DB::update_fielddefs_definition(); - Bugzilla::Field::populate_field_definitions(); - Bugzilla::Install::init_workflow(); - Bugzilla::Install::DB->update_table_definitions({}); - Bugzilla::Install::update_system_groups(); + Bugzilla::Install::DB::update_fielddefs_definition(); + Bugzilla::Field::populate_field_definitions(); + Bugzilla::Install::init_workflow(); + Bugzilla::Install::DB->update_table_definitions({}); + Bugzilla::Install::update_system_groups(); - Bugzilla->set_user(Bugzilla::User->super_user); + Bugzilla->set_user(Bugzilla::User->super_user); - Bugzilla::Install::update_settings(); + 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 => [''] - } - ); + 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; + 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, + $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)); + 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'); + 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)); - } + 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) + ); + } + } + }; } 1; |