From cd8f7a617d85374edbd7097a5c48d3f44509d02a Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Wed, 6 Dec 2017 13:03:15 -0300
Subject: [PATCH] Bug 19759: Make TestBuilder generates only 2 decimals for
 float

For instance items.replacementprice is decimal(8,2) but more than 2 decimals are generated.

It leads to issues when we compare expected objects:

    #          got: '135623.866142537'
    #     expected: '135623.87'

Test plan:
  prove t/db_dependent/TestBuilder.t
must return green
---
 t/db_dependent/TestBuilder.t | 5 ++++-
 t/lib/TestBuilder.pm         | 2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/t/db_dependent/TestBuilder.t b/t/db_dependent/TestBuilder.t
index 1a2c2fda3c..5ee0a6a40b 100644
--- a/t/db_dependent/TestBuilder.t
+++ b/t/db_dependent/TestBuilder.t
@@ -85,7 +85,7 @@ subtest 'Build all sources' => sub {
 
 
 subtest 'Test length of some generated fields' => sub {
-    plan tests => 2;
+    plan tests => 3;
 
     # Test the length of a returned character field
     my $bookseller = $builder->build({ source  => 'Aqbookseller' });
@@ -94,6 +94,9 @@ subtest 'Test length of some generated fields' => sub {
         'The length for a generated string (phone) should not be zero' );
     is( length( $bookseller->{phone} ) <= $max, 1,
         'Check maximum length for a generated string (phone)' );
+
+    my $item = $builder->build({ source => 'Item' });
+    is( $item->{replacementprice}, sprintf("%.2f", $item->{replacementprice}), "The number of decimals for floats should not be more than 2" );
 };
 
 
diff --git a/t/lib/TestBuilder.pm b/t/lib/TestBuilder.pm
index 4ec6dba574..d42cb03346 100644
--- a/t/lib/TestBuilder.pm
+++ b/t/lib/TestBuilder.pm
@@ -417,7 +417,7 @@ sub _gen_real {
     if( defined( $params->{info}->{size} ) ) {
         $max = 10 ** ($params->{info}->{size}->[0] - $params->{info}->{size}->[1]);
     }
-    return rand($max) + 1;
+    return sprintf("%.2f", rand($max)+1);
 }
 
 sub _gen_date {
-- 
2.11.0