mkanat%bugzilla.org d0bc259040 Preliminary support for Bugzilla 3.6.x
git-svn-id: svn://10.0.0.236/trunk@260648 18797224-902f-48f8-a5cc-f745e15eee43
2010-07-06 15:09:21 +00:00

145 lines
4.5 KiB
Perl

#!/usr/bin/perl -w
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Testopia System.
#
# The Initial Developer of the Original Code is Greg Hendricks.
# Portions created by Greg Hendricks are Copyright (C) 2006
# Novell. All Rights Reserved.
#
# Contributor(s): Greg Hendricks <ghendricks@novell.com>
# Al Rodriguez <arodriquez@novell.com>
package OBJ_Environment;
use lib '../..';
use strict;
use base qw(Exporter Test::Unit::TestCase);
use Bugzilla;
use Bugzilla::Constants;
use Testopia::Environment;
use Bugzilla::Extension::Testopia::Environment::Element;
use Test;
use Bugzilla::Extension::Testopia::Test::Constants;
use Test::More tests => 100;
use Test::Exception;
use Test::Deep;
Bugzilla->error_mode(ERROR_MODE_DIE);
use constant DB_TABLE => 'test_environments';
use constant ID_FIELD => 'environment_id';
our $obj;
#Simply tests if the initialization of an object is
#just like what we have in the database
sub test_init{
$obj = Test::test_init(DB_TABLE, ID_FIELD, 'Testopia::Environment');
}
sub test_set_isactive{
$obj->set_isactive(0);
ok($obj->{'isactive'} eq 0, 'Environment Is Not Active');
$obj->set_isactive(1);
ok($obj->{'isactive'} eq 1, 'Environment Is Active');
}
sub test_set_name{
dies_ok(sub{$obj->set_name('')}, 'Must Declare Unempty String for New Name');
dies_ok(sub{$obj->set_name}, 'New Name Must Not Be undef');
dies_ok(sub{$obj->set_name('PRIVATE INACTIVE ENVIRONMENT')},'New Name Must Unique Within Product');
$obj->set_name('Unique Name');
ok($obj->name eq 'Unique Name', 'New Name Set');
}
sub test_create{
my $dbh = Bugzilla->dbh;
my $created_obj;
dies_ok(sub{Testopia::Environment->create}, 'Missing Required Fields');
dies_ok(sub{Testopia::Environment->create({product_id => 999})}, 'Missing Required Field "name"');
dies_ok(sub{Testopia::Environment->create({name => 'NAME'})}, 'Missing Required "product_id"');
# _check_product validator
# error if user can't edit
my $creds = Bugzilla::Extension::Testopia::Test::Constants->LOGIN_CREDENTIALS;
foreach (Testopia::Test::Constants->LOGIN_TYPES){
my $login = $creds->{$_};
Test::set_user($login->{'id'}, $login->{'login_name'}, $login->{'password'});
# If the user does not have rights to create a Category, this should die
unless(Bugzilla->user->in_group('Testers') ){
dies_ok( sub {Testopia::Environment->create({name => 'NAME', product_id => 999})}, "User " . Bugzilla->user->{'login_name'} ." does not have rights to create a Category");
}
else{
$created_obj = Bugzilla::Extension::Testopia::Environment->create({name => 'NAME', product_id => 999});
my $obj_hash = ({product_id => '999', name => 'NAME', isactive =>1, environment_id => $created_obj->id});
cmp_deeply($obj_hash, noclass($created_obj), "Created Object Match");
# We must delete this here because we add it more than once and the
# DB does not like that
$dbh->do("DELETE FROM test_environments WHERE product_id = '999'");
}
}
}
sub test_get_environment_elements{
my @obj_hash = [ bless( {
'element_id' => '1',
'isprivate' => '0',
'name' => 'All',
'env_category_id' => '1',
'properties' => [],
'parent_id' => '0'
}, 'Testopia::Environment::Element' )];
cmp_deeply($obj->get_environment_elements, @obj_hash, "Get Environment Elements");
}
sub test_element_count{
ok($obj->element_count eq 1, 'Element Count');
}
sub test_elements_to_json{
my $element = $obj->{'elements'}[0];
my $leaf;
if($element->check_for_children || $element->check_for_properties){
$leaf = 'true';
}
else{
$leaf = 'false';
}
my $json ='[{"cls":"element",'
.'"text":"' . $element->{'name'} . '",'
.'"id":' . $element->{'element_id'} . ','
.'"type":"element",'
.'"leaf":' . $leaf . '}]';
cmp_deeply($obj->elements_to_json, $json, 'JSON Match');
}
sub new {
my $self = shift()->SUPER::new(@_);
return $self;
}
sub set_up {
my $self = shift;
}
sub tear_down {
my $self = shift;
}
1;