Bug 14195: TestBuilder - A random string should not be longer than the DB field
authorJonathan Druart <jonathan.druart@koha-community.org>
Wed, 13 May 2015 14:39:59 +0000 (16:39 +0200)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Wed, 20 May 2015 14:05:27 +0000 (11:05 -0300)
t::lib::TestBuilder::_gen_text does not use correctly the regex and the
max parameter to generate the random string (String::Random).

This can cause future tests to fail.

http://bugs.koha-community.org/show_bug.cgi?id=14195
Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Script tested, problem occurs, patch fixes it.
Bad number on commit subject
No errors

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
t/db_dependent/TestBuilder.t
t/lib/TestBuilder.pm

index 6110bea..6635a0b 100644 (file)
@@ -236,6 +236,7 @@ is( $bookseller_result->in_storage, 1, 'build with only_fk = 1 creates the forei
 $bookseller = $builder->build({
     source  => 'Aqbookseller',
 });
+ok( length( $bookseller->{phone} ) <= 30, 'The length for a generated string should not be longer than the size of the DB field' );
 delete $bookseller->{_fk};
 $bookseller_from_db = $rs_aqbookseller->find($bookseller);
 is( $bookseller_from_db->in_storage, 1, 'build without the parameter only_sk stores the entry correctly' );
index 2497ffd..72364e3 100644 (file)
@@ -288,8 +288,18 @@ sub _gen_date {
 
 sub _gen_text {
     my ($self, $params) = @_;
-    my $random = String::Random->new( max => $params->{info}->{size} );
-    return $random->randregex('[A-Za-z]+[A-Za-z0-9_]*');
+    # From perldoc String::Random
+    # max: specify the maximum number of characters to return for * and other
+    # regular expression patters that don't return a fixed number of characters
+    my $regex = '[A-Za-z][A-Za-z0-9_]*';
+    my $size = $params->{info}{size};
+    if ( defined $size and $size > 1 ) {
+        $size--;
+    } elsif ( defined $size and $size == 1 ) {
+        $regex = '[A-Za-z]';
+    }
+    my $random = String::Random->new( max => $size );
+    return $random->randregex($regex);
 }
 
 sub _gen_set_enum {