| Line 0
          
      
      
        Link Here | 
          
            
              | 0 | -  | 1 | #!/usr/bin/perl | 
            
              |  |  | 2 |  | 
            
              | 3 | # This file is part of Koha. | 
            
              | 4 | # | 
            
              | 5 | # Koha is free software; you can redistribute it and/or modify it | 
            
              | 6 | # under the terms of the GNU General Public License as published by | 
            
              | 7 | # the Free Software Foundation; either version 3 of the License, or | 
            
              | 8 | # (at your option) any later version. | 
            
              | 9 | # | 
            
              | 10 | # Koha is distributed in the hope that it will be useful, but | 
            
              | 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of | 
            
              | 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
            
              | 13 | # GNU General Public License for more details. | 
            
              | 14 | # | 
            
              | 15 | # You should have received a copy of the GNU General Public License | 
            
              | 16 | # along with Koha; if not, see <http://www.gnu.org/licenses>. | 
            
              | 17 |  | 
            
              | 18 | use Modern::Perl; | 
            
              | 19 |  | 
            
              | 20 | use Test::More tests => 67; | 
            
              | 21 |  | 
            
              | 22 | use C4::Context; | 
            
              | 23 |  | 
            
              | 24 | use t::lib::TestBuilder; | 
            
              | 25 |  | 
            
              | 26 | BEGIN { | 
            
              | 27 |     use_ok('Koha::Objects'); | 
            
              | 28 |     use_ok('Koha::Patrons'); | 
            
              | 29 |     use_ok('Koha::Patron::Relationship'); | 
            
              | 30 |     use_ok('Koha::Patron::Relationships'); | 
            
              | 31 | } | 
            
              | 32 |  | 
            
              | 33 | # Start transaction | 
            
              | 34 | my $dbh = C4::Context->dbh; | 
            
              | 35 | $dbh->{AutoCommit} = 0; | 
            
              | 36 | $dbh->{RaiseError} = 1; | 
            
              | 37 |  | 
            
              | 38 | my $builder = t::lib::TestBuilder->new(); | 
            
              | 39 |  | 
            
              | 40 | # Father | 
            
              | 41 | my $kyle = Koha::Patrons->find( | 
            
              | 42 |     $builder->build( | 
            
              | 43 |         { | 
            
              | 44 |             source => 'Borrower', | 
            
              | 45 |             value  => { | 
            
              | 46 |                 firstname => 'Kyle', | 
            
              | 47 |                 surname   => 'Hall', | 
            
              | 48 |             } | 
            
              | 49 |         } | 
            
              | 50 |     )->{borrowernumber} | 
            
              | 51 | ); | 
            
              | 52 |  | 
            
              | 53 | # Mother | 
            
              | 54 | my $chelsea = Koha::Patrons->find( | 
            
              | 55 |     $builder->build( | 
            
              | 56 |         { | 
            
              | 57 |             source => 'Borrower', | 
            
              | 58 |             value  => { | 
            
              | 59 |                 firstname => 'Chelsea', | 
            
              | 60 |                 surname   => 'Hall', | 
            
              | 61 |             } | 
            
              | 62 |         } | 
            
              | 63 |     )->{borrowernumber} | 
            
              | 64 | ); | 
            
              | 65 |  | 
            
              | 66 | # Children | 
            
              | 67 | my $daria = Koha::Patrons->find( | 
            
              | 68 |     $builder->build( | 
            
              | 69 |         { | 
            
              | 70 |             source => 'Borrower', | 
            
              | 71 |             value  => { | 
            
              | 72 |                 firstname => 'Daria', | 
            
              | 73 |                 surname   => 'Hall', | 
            
              | 74 |             } | 
            
              | 75 |         } | 
            
              | 76 |     )->{borrowernumber} | 
            
              | 77 | ); | 
            
              | 78 |  | 
            
              | 79 | my $kylie = Koha::Patrons->find( | 
            
              | 80 |     $builder->build( | 
            
              | 81 |         { | 
            
              | 82 |             source => 'Borrower', | 
            
              | 83 |             value  => { | 
            
              | 84 |                 firstname => 'Kylie', | 
            
              | 85 |                 surname   => 'Hall', | 
            
              | 86 |             } | 
            
              | 87 |         } | 
            
              | 88 |     )->{borrowernumber} | 
            
              | 89 | ); | 
            
              | 90 |  | 
            
              | 91 | Koha::Patron::Relationship->new({ guarantor_id => $kyle->id, guarantee_id => $daria->id, relationship => 'father' })->store(); | 
            
              | 92 | Koha::Patron::Relationship->new({ guarantor_id => $kyle->id, guarantee_id => $kylie->id, relationship => 'father' })->store(); | 
            
              | 93 | Koha::Patron::Relationship->new({ guarantor_id => $chelsea->id, guarantee_id => $daria->id, relationship => 'mother' })->store(); | 
            
              | 94 | Koha::Patron::Relationship->new({ guarantor_id => $chelsea->id, guarantee_id => $kylie->id, relationship => 'mother' })->store(); | 
            
              | 95 | Koha::Patron::Relationship->new({ firstname => 'John', surname => 'Hall', guarantee_id => $daria->id, relationship => 'grandfather' })->store(); | 
            
              | 96 | Koha::Patron::Relationship->new({ firstname => 'Debra', surname => 'Hall', guarantee_id => $daria->id, relationship => 'grandmother' })->store(); | 
            
              | 97 | Koha::Patron::Relationship->new({ firstname => 'John', surname => 'Hall', guarantee_id => $kylie->id, relationship => 'grandfather' })->store(); | 
            
              | 98 | Koha::Patron::Relationship->new({ firstname => 'Debra', surname => 'Hall', guarantee_id => $kylie->id, relationship => 'grandmother' })->store(); | 
            
              | 99 |  | 
            
              | 100 | my @gr; | 
            
              | 101 |  | 
            
              | 102 | @gr = $kyle->guarantee_relationships(); | 
            
              | 103 | is( @gr, 2, 'Found 2 guarantee relationships for father' ); | 
            
              | 104 | is( $gr[0]->guarantor_id, $kyle->id, 'Guarantor matches for first relationship' ); | 
            
              | 105 | is( $gr[0]->guarantee_id, $daria->id, 'Guarantee matches for first relationship' ); | 
            
              | 106 | is( $gr[0]->relationship, 'father', 'Relationship is father' ); | 
            
              | 107 | is( ref($gr[0]->guarantee), 'Koha::Patron', 'Method guarantee returns a Koha::Patron' ); | 
            
              | 108 | is( $gr[0]->guarantee->id, $daria->id, 'Koha::Patron returned is the correct guarantee' ); | 
            
              | 109 | is( ref($gr[0]->guarantor), 'Koha::Patron', 'Method guarantor returns a Koha::Patron' ); | 
            
              | 110 | is( $gr[0]->guarantor->id, $kyle->id, 'Koha::Patron returned is the correct guarantor' ); | 
            
              | 111 |  | 
            
              | 112 | is( $gr[1]->guarantor_id, $kyle->id, 'Guarantor matches for first relationship' ); | 
            
              | 113 | is( $gr[1]->guarantee_id, $kylie->id, 'Guarantee matches for first relationship' ); | 
            
              | 114 | is( $gr[1]->relationship, 'father', 'Relationship is father' ); | 
            
              | 115 | is( ref($gr[1]->guarantee), 'Koha::Patron', 'Method guarantee returns a Koha::Patron' ); | 
            
              | 116 | is( $gr[1]->guarantee->id, $kylie->id, 'Koha::Patron returned is the correct guarantee' ); | 
            
              | 117 | is( ref($gr[1]->guarantor), 'Koha::Patron', 'Method guarantor returns a Koha::Patron' ); | 
            
              | 118 | is( $gr[1]->guarantor->id, $kyle->id, 'Koha::Patron returned is the correct guarantor' ); | 
            
              | 119 |  | 
            
              | 120 | @gr = $chelsea->guarantee_relationships(); | 
            
              | 121 | is( @gr, 2, 'Found 2 guarantee relationships for mother' ); | 
            
              | 122 | is( $gr[0]->guarantor_id, $chelsea->id, 'Guarantor matches for first relationship' ); | 
            
              | 123 | is( $gr[0]->guarantee_id, $daria->id, 'Guarantee matches for first relationship' ); | 
            
              | 124 | is( $gr[0]->relationship, 'mother', 'Relationship is mother' ); | 
            
              | 125 | is( ref($gr[0]->guarantee), 'Koha::Patron', 'Method guarantee returns a Koha::Patron' ); | 
            
              | 126 | is( $gr[0]->guarantee->id, $daria->id, 'Koha::Patron returned is the correct guarantee' ); | 
            
              | 127 | is( ref($gr[0]->guarantor), 'Koha::Patron', 'Method guarantor returns a Koha::Patron' ); | 
            
              | 128 | is( $gr[0]->guarantor->id, $chelsea->id, 'Koha::Patron returned is the correct guarantor' ); | 
            
              | 129 |  | 
            
              | 130 | is( $gr[1]->guarantor_id, $chelsea->id, 'Guarantor matches for first relationship' ); | 
            
              | 131 | is( $gr[1]->guarantee_id, $kylie->id, 'Guarantee matches for first relationship' ); | 
            
              | 132 | is( $gr[1]->relationship, 'mother', 'Relationship is mother' ); | 
            
              | 133 | is( ref($gr[1]->guarantee), 'Koha::Patron', 'Method guarantee returns a Koha::Patron' ); | 
            
              | 134 | is( $gr[1]->guarantee->id, $kylie->id, 'Koha::Patron returned is the correct guarantee' ); | 
            
              | 135 | is( ref($gr[1]->guarantor), 'Koha::Patron', 'Method guarantor returns a Koha::Patron' ); | 
            
              | 136 | is( $gr[1]->guarantor->id, $chelsea->id, 'Koha::Patron returned is the correct guarantor' ); | 
            
              | 137 |  | 
            
              | 138 | @gr = $daria->guarantor_relationships(); | 
            
              | 139 | is( @gr, 4, 'Found 4 guarantor relationships for child' ); | 
            
              | 140 | is( $gr[0]->guarantor_id, $kyle->id, 'Guarantor matches for first relationship' ); | 
            
              | 141 | is( $gr[0]->guarantee_id, $daria->id, 'Guarantee matches for first relationship' ); | 
            
              | 142 | is( $gr[0]->relationship, 'father', 'Relationship is father' ); | 
            
              | 143 | is( ref($gr[0]->guarantee), 'Koha::Patron', 'Method guarantee returns a Koha::Patron' ); | 
            
              | 144 | is( $gr[0]->guarantee->id, $daria->id, 'Koha::Patron returned is the correct guarantee' ); | 
            
              | 145 | is( ref($gr[0]->guarantor), 'Koha::Patron', 'Method guarantor returns a Koha::Patron' ); | 
            
              | 146 | is( $gr[0]->guarantor->id, $kyle->id, 'Koha::Patron returned is the correct guarantor' ); | 
            
              | 147 |  | 
            
              | 148 | is( $gr[1]->guarantor_id, $chelsea->id, 'Guarantor matches for first relationship' ); | 
            
              | 149 | is( $gr[1]->guarantee_id, $daria->id, 'Guarantee matches for first relationship' ); | 
            
              | 150 | is( $gr[1]->relationship, 'mother', 'Relationship is mother' ); | 
            
              | 151 | is( ref($gr[1]->guarantee), 'Koha::Patron', 'Method guarantee returns a Koha::Patron' ); | 
            
              | 152 | is( $gr[1]->guarantee->id, $daria->id, 'Koha::Patron returned is the correct guarantee' ); | 
            
              | 153 | is( ref($gr[1]->guarantor), 'Koha::Patron', 'Method guarantor returns a Koha::Patron' ); | 
            
              | 154 | is( $gr[1]->guarantor->id, $chelsea->id, 'Koha::Patron returned is the correct guarantor' ); | 
            
              | 155 |  | 
            
              | 156 | is( $gr[2]->guarantor_id, undef, 'Grandfather has no id, not a Koha patron' ); | 
            
              | 157 | is( $gr[2]->firstname, 'John', 'Grandfather has first name of John' ); | 
            
              | 158 | is( $gr[2]->surname, 'Hall', 'Grandfather has surname of Hall' ); | 
            
              | 159 | is( $gr[2]->guarantor, undef, 'Calling guarantor method for Grandfather returns undef' ); | 
            
              | 160 |  | 
            
              | 161 | is( $gr[3]->guarantor_id, undef, 'Grandmother has no id, not a Koha patron' ); | 
            
              | 162 | is( $gr[3]->firstname, 'Debra', 'Grandmother has first name of John' ); | 
            
              | 163 | is( $gr[3]->surname, 'Hall', 'Grandmother has surname of Hall' ); | 
            
              | 164 | is( $gr[3]->guarantor, undef, 'Calling guarantor method for Grandmother returns undef' ); | 
            
              | 165 |  | 
            
              | 166 | my @siblings = $daria->siblings; | 
            
              | 167 | is( @siblings, 1, 'Method siblings called in list context returns list' ); | 
            
              | 168 | is( ref($siblings[0]), 'Koha::Patron', 'List contains a Koha::Patron' ); | 
            
              | 169 | is( $siblings[0]->firstname, 'Kylie', 'Sibling from list first name matches correctly' ); | 
            
              | 170 | is( $siblings[0]->surname, 'Hall', 'Sibling from list surname matches correctly' ); | 
            
              | 171 | is( $siblings[0]->id, $kylie->id, 'Sibling from list patron id matches correctly' ); | 
            
              | 172 |  | 
            
              | 173 | my $siblings = $daria->siblings; | 
            
              | 174 | my $sibling = $siblings->next(); | 
            
              | 175 | is( ref($siblings), 'Koha::Patrons', 'Calling siblings in scalar context results in a Koha::Patrons object' ); | 
            
              | 176 | is( ref($sibling), 'Koha::Patron', 'Method next returns a Koha::Patron' ); | 
            
              | 177 | is( $sibling->firstname, 'Kylie', 'Sibling from scalar first name matches correctly' ); | 
            
              | 178 | is( $sibling->surname, 'Hall', 'Sibling from scalar surname matches correctly' ); | 
            
              | 179 | is( $sibling->id, $kylie->id, 'Sibling from scalar patron id matches correctly' ); | 
            
              | 180 |  | 
            
              | 181 | 1; |