View | Details | Raw Unified | Return to bug 24757
Collapse All | Expand All

(-)a/t/db_dependent/Koha/Patrons.t (-54 / +72 lines)
Lines 708-744 subtest 'get_age' => sub { Link Here
708
    my $patron = $builder->build( { source => 'Borrower' } );
708
    my $patron = $builder->build( { source => 'Borrower' } );
709
    $patron = Koha::Patrons->find( $patron->{borrowernumber} );
709
    $patron = Koha::Patrons->find( $patron->{borrowernumber} );
710
710
711
    my $dt = dt_from_string('2020-02-28');
711
    my @dates = (
712
        {
713
            today           => '2020-02-28',
714
            add_m12_m6_m1   => { date => '2007-08-27', expected_age => 12 },
715
            add_m18_0_p1    => { date => '2002-02-28', expected_age => 17 },
716
            add_m18_0_0     => { date => '2002-02-28', expected_age => 18 },
717
            add_m18_m12_m31 => { date => '2001-01-28', expected_age => 19 },
718
            add_m18_m12_m30 => { date => '2001-01-29', expected_age => 19 } ,
719
            add_0_m1_m1     => { date => '2020-01-27', expected_age => 0  },
720
        },
721
    );
712
722
713
    Time::Fake->offset( $dt->epoch );
714
    $patron->dateofbirth( undef );
723
    $patron->dateofbirth( undef );
715
    is( $patron->get_age, undef, 'get_age should return undef if no dateofbirth is defined' );
724
    is( $patron->get_age, undef, 'get_age should return undef if no dateofbirth is defined' );
716
725
717
    my $add_m12_m6_m1 = '2007-08-27';
726
    for my $date ( @dates ) {
718
    $patron->dateofbirth( dt_from_string($add_m12_m6_m1, 'iso') );
719
    is( $patron->get_age, 12, 'Patron should be 12' );
720
727
721
    my $add_m18_0_p1 = '2002-02-28';
728
        my $dt = dt_from_string($date->{today});
722
    $patron->dateofbirth( dt_from_string($add_m18_0_p1, 'iso'));
723
    is( $patron->get_age, 17, 'Patron should be 17, happy birthday tomorrow!' );
724
729
725
    my $add_m18_0_0 = '2002-02-28';
730
        Time::Fake->offset( $dt->epoch );
726
    $patron->dateofbirth( dt_from_string($add_m18_0_0, 'iso'));
727
    is( $patron->get_age, 18, 'Patron should be 18' );
728
729
    my $add_m18_m12_m31 = '2001-01-28';
730
    $patron->dateofbirth( dt_from_string($add_m18_m12_m31, 'iso'));
731
    is( $patron->get_age, 19, 'Patron should be 19' );
732
731
733
    my $add_m18_m12_m30 = '2001-01-29';
732
        for my $k ( keys %$date ) {
734
    $patron->dateofbirth( dt_from_string($add_m18_m12_m30, 'iso' ));
733
            next if $k eq 'today';
735
    is( $patron->get_age, 19, 'Patron should be 19 again' );
734
735
            my $dob = $date->{$k};
736
            $patron->dateofbirth( dt_from_string( $dob->{date}, 'iso' ) );
737
            is(
738
                $patron->get_age,
739
                $dob->{expected_age},
740
                sprintf(
741
                    "Today=%s, dob=%s, should be %d",
742
                    $date->{today}, $dob->{date}, $dob->{expected_age}
743
                )
744
            );
745
        }
736
746
737
    my $add_0_m1_m1 = '2020-01-27';
747
        Time::Fake->reset;
738
    $patron->dateofbirth( dt_from_string($add_0_m1_m1, 'iso' ));
739
    is( $patron->get_age, 0, 'Patron is a newborn child' );
740
748
741
    Time::Fake->reset;
749
    }
742
750
743
    $patron->delete;
751
    $patron->delete;
744
};
752
};
Lines 772-814 subtest 'is_valid_age' => sub { Link Here
772
    $patron->dateofbirth( undef );
780
    $patron->dateofbirth( undef );
773
    is( $patron->is_valid_age, 1, 'Patron with no dateofbirth is always valid for any category');
781
    is( $patron->is_valid_age, 1, 'Patron with no dateofbirth is always valid for any category');
774
782
775
    my $add_m12_m6_m1 = '2007-08-27';
783
    my @dates = (
776
    $patron->dateofbirth( dt_from_string($add_m12_m6_m1, 'iso') );
784
        {
777
    is( $patron->is_valid_age, 0, 'Patron is 12, so the age is above allowed range 5-10 years');
785
            today => '2020-02-28',
778
786
            add_m12_m6_m1 =>
779
    my $add_m3_m6_m1 = '2016-08-27';
787
              { date => '2007-08-27', expected_age => 12, valid => 0 },
780
    $patron->dateofbirth( dt_from_string($add_m3_m6_m1, 'iso'));
788
            add_m3_m6_m1 =>
781
    is( $patron->is_valid_age, 0, 'Patron is 3, so the age is below allowed range 5-10 years');
789
              { date => '2016-08-27', expected_age => 3, valid => 0 },
782
790
            add_m7_m6_m1 =>
783
    my $add_m7_m6_m1 = '2015-02-28';
791
              { date => '2015-02-28', expected_age => 7, valid => 1 },
784
    $patron->dateofbirth( dt_from_string($add_m7_m6_m1, 'iso'));
792
            add_m5_0_0 =>
785
    is( $patron->is_valid_age, 1, 'Patron is 7, so the age perfectly suits allowed range 5-10 years');
793
              { date => '2015-02-28', expected_age => 5, valid => 1 },
786
794
            add_m5_0_p1 =>
787
    my $add_m5_0_1 = '2015-02-28';
795
              { date => '2015-02-28', expected_age => 5, valid => 0 },
788
    $patron->dateofbirth( dt_from_string($add_m5_0_1, 'iso' ));
796
            add_m5_0_m1 =>
789
    is( $patron->is_valid_age, 1, 'Patron celebrates the 5th birthday today, so the age is allowed for this category');
797
              { date => '2015-02-27', expected_age => 5, valid => 1 },
798
            add_m11_0_0 =>
799
              { date => '2009-02-28', expected_age => 11, valid => 0 },
800
            add_m11_0_p1 =>
801
              { date => '2009-02-28', expected_age => 11, valid => 1 },
802
            add_m11_0_m1 =>
803
              { date => '2009-02-27', expected_age => 11, valid => 0 },
804
        },
805
    );
790
806
791
    my $add_m5_0_p1 = '2015-02-28';
807
    for my $date ( @dates ) {
792
    $patron->dateofbirth( dt_from_string($add_m5_0_p1, 'iso'));
793
    is( $patron->is_valid_age, 0, 'Patron will celebrate the 5th birthday tomorrow, so the age is NOT allowed for this category');
794
808
795
    my $add_m5_0_m1 = '2015-02-27';
809
        my $dt = dt_from_string($date->{today});
796
    $patron->dateofbirth( dt_from_string($add_m5_0_m1, 'iso'));
797
    is( $patron->is_valid_age, 1, 'Patron celebrated the 5th birthday yesterday, so the age is allowed for this category');
798
810
799
    my $add_m11_0_p0 = '2009-02-28';
811
        Time::Fake->offset( $dt->epoch );
800
    $patron->dateofbirth( dt_from_string($add_m11_0_p0, 'iso'));
801
    is( $patron->is_valid_age, 0, 'Patron celebrate the 11th birthday today, so the age is NOT allowed for this category');
802
812
803
    my $add_m11_0_p1 = '2009-02-28';
813
        for my $k ( keys %$date ) {
804
    $patron->dateofbirth( dt_from_string($add_m11_0_p1, 'iso'));
814
            next if $k eq 'today';
805
    is( $patron->is_valid_age, 1, 'Patron will celebrate the 11th birthday tomorrow, so the age is allowed for this category');
815
816
            my $dob = $date->{$k};
817
            $patron->dateofbirth( dt_from_string( $dob->{date}, 'iso' ) );
818
            is(
819
                $patron->is_valid_age,
820
                $dob->{valid},
821
                sprintf(
822
                    "Today=%s, dob=%s, is %s, should be valid=%s",
823
                    $date->{today}, $dob->{date}, $dob->{expected_age}, $dob->{valid}
824
                )
825
            );
826
        }
806
827
807
    my $add_m11_0_m1 = '2009-02-27';
828
        Time::Fake->reset;
808
    $patron->dateofbirth( dt_from_string($add_m11_0_m1, 'iso' ));
809
    is( $patron->is_valid_age, 0, 'Patron celebrated the 11th birthday yesterday, so the age is NOT allowed for this category');
810
829
811
    Time::Fake->reset;
830
    }
812
831
813
    $patron->delete;
832
    $patron->delete;
814
    $category->delete;
833
    $category->delete;
815
- 

Return to bug 24757