Lines 3074-3087
subtest 'ProcessOfflinePayment() tests' => sub {
Link Here
|
3074 |
}; |
3074 |
}; |
3075 |
|
3075 |
|
3076 |
subtest 'Incremented fee tests' => sub { |
3076 |
subtest 'Incremented fee tests' => sub { |
3077 |
plan tests => 11; |
3077 |
plan tests => 16; |
3078 |
|
3078 |
|
3079 |
t::lib::Mocks::mock_preference('item-level_itypes', 1); |
3079 |
my $dt = dt_from_string(); |
|
|
3080 |
Time::Fake->offset( $dt->epoch ); |
3080 |
|
3081 |
|
3081 |
my $library = $builder->build_object( { class => 'Koha::Libraries' } )->store; |
3082 |
t::lib::Mocks::mock_preference( 'item-level_itypes', 1 ); |
|
|
3083 |
|
3084 |
my $library = |
3085 |
$builder->build_object( { class => 'Koha::Libraries' } )->store; |
3082 |
|
3086 |
|
3083 |
my $module = new Test::MockModule('C4::Context'); |
3087 |
my $module = new Test::MockModule('C4::Context'); |
3084 |
$module->mock('userenv', sub { { branch => $library->id } }); |
3088 |
$module->mock( 'userenv', sub { { branch => $library->id } } ); |
3085 |
|
3089 |
|
3086 |
my $patron = $builder->build_object( |
3090 |
my $patron = $builder->build_object( |
3087 |
{ |
3091 |
{ |
Lines 3093-3101
subtest 'Incremented fee tests' => sub {
Link Here
|
3093 |
my $itemtype = $builder->build_object( |
3097 |
my $itemtype = $builder->build_object( |
3094 |
{ |
3098 |
{ |
3095 |
class => 'Koha::ItemTypes', |
3099 |
class => 'Koha::ItemTypes', |
3096 |
value => { |
3100 |
value => { |
3097 |
notforloan => undef, |
3101 |
notforloan => undef, |
3098 |
rentalcharge => 0, |
3102 |
rentalcharge => 0, |
3099 |
rentalcharge_daily => 1.000000 |
3103 |
rentalcharge_daily => 1.000000 |
3100 |
} |
3104 |
} |
3101 |
} |
3105 |
} |
Lines 3108-3139
subtest 'Incremented fee tests' => sub {
Link Here
|
3108 |
} |
3112 |
} |
3109 |
); |
3113 |
); |
3110 |
|
3114 |
|
3111 |
is( $itemtype->rentalcharge_daily, '1.000000', 'Daily rental charge stored and retreived correctly' ); |
3115 |
is( $itemtype->rentalcharge_daily, |
3112 |
is( $item->effective_itemtype, $itemtype->id, "Itemtype set correctly for item"); |
3116 |
'1.000000', 'Daily rental charge stored and retreived correctly' ); |
|
|
3117 |
is( $item->effective_itemtype, $itemtype->id, |
3118 |
"Itemtype set correctly for item" ); |
3113 |
|
3119 |
|
3114 |
my $dt_from = dt_from_string(); |
3120 |
my $dt_from = dt_from_string(); |
3115 |
my $dt_to = dt_from_string()->add( days => 7 ); |
3121 |
my $dt_to = dt_from_string()->add( days => 7 ); |
3116 |
my $dt_to_renew = dt_from_string()->add( days => 13 ); |
3122 |
my $dt_to_renew = dt_from_string()->add( days => 13 ); |
3117 |
|
3123 |
|
3118 |
t::lib::Mocks::mock_preference('finesCalendar', 'ignoreCalendar'); |
3124 |
# Daily Tests |
3119 |
my $issue = AddIssue( $patron->unblessed, $item->barcode, $dt_to, undef, $dt_from ); |
3125 |
t::lib::Mocks::mock_preference( 'finesCalendar', 'ignoreCalendar' ); |
3120 |
my $accountline = Koha::Account::Lines->find({ itemnumber => $item->id }); |
3126 |
my $issue = |
3121 |
is( $accountline->amount, '7.000000', "Daily rental charge calculated correctly with finesCalendar = ignoreCalendar" ); |
3127 |
AddIssue( $patron->unblessed, $item->barcode, $dt_to, undef, $dt_from ); |
|
|
3128 |
my $accountline = Koha::Account::Lines->find( { itemnumber => $item->id } ); |
3129 |
is( $accountline->amount, '7.000000', |
3130 |
"Daily rental charge calculated correctly with finesCalendar = ignoreCalendar" |
3131 |
); |
3122 |
$accountline->delete(); |
3132 |
$accountline->delete(); |
3123 |
AddRenewal( $patron->id, $item->id, $library->id, $dt_to_renew, $dt_to ); |
3133 |
AddRenewal( $patron->id, $item->id, $library->id, $dt_to_renew, $dt_to ); |
3124 |
$accountline = Koha::Account::Lines->find({ itemnumber => $item->id }); |
3134 |
$accountline = Koha::Account::Lines->find( { itemnumber => $item->id } ); |
3125 |
is( $accountline->amount, '6.000000', "Daily rental charge calculated correctly with finesCalendar = ignoreCalendar, for renewal" ); |
3135 |
is( $accountline->amount, '6.000000', |
|
|
3136 |
"Daily rental charge calculated correctly with finesCalendar = ignoreCalendar, for renewal" |
3137 |
); |
3126 |
$accountline->delete(); |
3138 |
$accountline->delete(); |
3127 |
$issue->delete(); |
3139 |
$issue->delete(); |
3128 |
|
3140 |
|
3129 |
t::lib::Mocks::mock_preference('finesCalendar', 'noFinesWhenClosed'); |
3141 |
t::lib::Mocks::mock_preference( 'finesCalendar', 'noFinesWhenClosed' ); |
3130 |
$issue = AddIssue( $patron->unblessed, $item->barcode, $dt_to, undef, $dt_from ); |
3142 |
$issue = |
3131 |
$accountline = Koha::Account::Lines->find({ itemnumber => $item->id }); |
3143 |
AddIssue( $patron->unblessed, $item->barcode, $dt_to, undef, $dt_from ); |
3132 |
is( $accountline->amount, '7.000000', "Daily rental charge calculated correctly with finesCalendar = noFinesWhenClosed" ); |
3144 |
$accountline = Koha::Account::Lines->find( { itemnumber => $item->id } ); |
|
|
3145 |
is( $accountline->amount, '7.000000', |
3146 |
"Daily rental charge calculated correctly with finesCalendar = noFinesWhenClosed" |
3147 |
); |
3133 |
$accountline->delete(); |
3148 |
$accountline->delete(); |
3134 |
AddRenewal( $patron->id, $item->id, $library->id, $dt_to_renew, $dt_to ); |
3149 |
AddRenewal( $patron->id, $item->id, $library->id, $dt_to_renew, $dt_to ); |
3135 |
$accountline = Koha::Account::Lines->find({ itemnumber => $item->id }); |
3150 |
$accountline = Koha::Account::Lines->find( { itemnumber => $item->id } ); |
3136 |
is( $accountline->amount, '6.000000', "Daily rental charge calculated correctly with finesCalendar = noFinesWhenClosed, for renewal" ); |
3151 |
is( $accountline->amount, '6.000000', |
|
|
3152 |
"Daily rental charge calculated correctly with finesCalendar = noFinesWhenClosed, for renewal" |
3153 |
); |
3137 |
$accountline->delete(); |
3154 |
$accountline->delete(); |
3138 |
$issue->delete(); |
3155 |
$issue->delete(); |
3139 |
|
3156 |
|
Lines 3143-3169
subtest 'Incremented fee tests' => sub {
Link Here
|
3143 |
title => 'Test holiday', |
3160 |
title => 'Test holiday', |
3144 |
description => 'Test holiday' |
3161 |
description => 'Test holiday' |
3145 |
); |
3162 |
); |
3146 |
$issue = AddIssue( $patron->unblessed, $item->barcode, $dt_to, undef, $dt_from ); |
3163 |
$issue = |
3147 |
$accountline = Koha::Account::Lines->find({ itemnumber => $item->id }); |
3164 |
AddIssue( $patron->unblessed, $item->barcode, $dt_to, undef, $dt_from ); |
3148 |
is( $accountline->amount, '6.000000', "Daily rental charge calculated correctly with finesCalendar = noFinesWhenClosed and closed Wednesdays" ); |
3165 |
$accountline = Koha::Account::Lines->find( { itemnumber => $item->id } ); |
|
|
3166 |
is( $accountline->amount, '6.000000', |
3167 |
"Daily rental charge calculated correctly with finesCalendar = noFinesWhenClosed and closed Wednesdays" |
3168 |
); |
3149 |
$accountline->delete(); |
3169 |
$accountline->delete(); |
3150 |
AddRenewal( $patron->id, $item->id, $library->id, $dt_to_renew, $dt_to ); |
3170 |
AddRenewal( $patron->id, $item->id, $library->id, $dt_to_renew, $dt_to ); |
3151 |
$accountline = Koha::Account::Lines->find({ itemnumber => $item->id }); |
3171 |
$accountline = Koha::Account::Lines->find( { itemnumber => $item->id } ); |
3152 |
is( $accountline->amount, '5.000000', "Daily rental charge calculated correctly with finesCalendar = noFinesWhenClosed and closed Wednesdays, for renewal" ); |
3172 |
is( $accountline->amount, '5.000000', |
|
|
3173 |
"Daily rental charge calculated correctly with finesCalendar = noFinesWhenClosed and closed Wednesdays, for renewal" |
3174 |
); |
3153 |
$accountline->delete(); |
3175 |
$accountline->delete(); |
3154 |
$issue->delete(); |
3176 |
$issue->delete(); |
3155 |
|
3177 |
|
3156 |
$itemtype->rentalcharge('2.000000')->store; |
3178 |
$itemtype->rentalcharge('2.000000')->store; |
3157 |
is( $itemtype->rentalcharge, '2.000000', 'Rental charge updated and retreived correctly' ); |
3179 |
is( $itemtype->rentalcharge, '2.000000', |
3158 |
$issue = AddIssue( $patron->unblessed, $item->barcode, $dt_to, undef, $dt_from); |
3180 |
'Rental charge updated and retreived correctly' ); |
3159 |
my $accountlines = Koha::Account::Lines->search({ itemnumber => $item->id }); |
3181 |
$issue = |
3160 |
is( $accountlines->count, '2', "Fixed charge and accrued charge recorded distinctly"); |
3182 |
AddIssue( $patron->unblessed, $item->barcode, $dt_to, undef, $dt_from ); |
|
|
3183 |
my $accountlines = |
3184 |
Koha::Account::Lines->search( { itemnumber => $item->id } ); |
3185 |
is( $accountlines->count, '2', |
3186 |
"Fixed charge and accrued charge recorded distinctly" ); |
3161 |
$accountlines->delete(); |
3187 |
$accountlines->delete(); |
3162 |
AddRenewal( $patron->id, $item->id, $library->id, $dt_to_renew, $dt_to ); |
3188 |
AddRenewal( $patron->id, $item->id, $library->id, $dt_to_renew, $dt_to ); |
3163 |
$accountlines = Koha::Account::Lines->search({ itemnumber => $item->id }); |
3189 |
$accountlines = Koha::Account::Lines->search( { itemnumber => $item->id } ); |
3164 |
is( $accountlines->count, '2', "Fixed charge and accrued charge recorded distinctly, for renewal"); |
3190 |
is( $accountlines->count, '2', |
|
|
3191 |
"Fixed charge and accrued charge recorded distinctly, for renewal" ); |
3165 |
$accountlines->delete(); |
3192 |
$accountlines->delete(); |
3166 |
$issue->delete(); |
3193 |
$issue->delete(); |
|
|
3194 |
$itemtype->rentalcharge('00.000000')->store; |
3195 |
is( $itemtype->rentalcharge, '00.000000', |
3196 |
'Rental charge reset and retreived correctly' ); |
3197 |
|
3198 |
# Hourly |
3199 |
my $issuingrule = Koha::IssuingRules->get_effective_issuing_rule( |
3200 |
{ |
3201 |
categorycode => $patron->categorycode, |
3202 |
itemtype => $itemtype->id, |
3203 |
branchcode => $library->id |
3204 |
} |
3205 |
); |
3206 |
$issuingrule->lengthunit('hours')->store(); |
3207 |
is( $issuingrule->lengthunit, 'hours', |
3208 |
'Issuingrule updated and retrieved correctly' ); |
3209 |
|
3210 |
$itemtype->rentalcharge_hourly('2.500000')->store(); |
3211 |
is( $itemtype->rentalcharge_hourly, |
3212 |
'2.500000', 'Hourly rental charge stored and retreived correctly' ); |
3213 |
|
3214 |
$dt_to = dt_from_string()->add( hours => 4 ); |
3215 |
$dt_to_renew = dt_from_string()->add( hours => 6 ); |
3216 |
|
3217 |
$issue = |
3218 |
AddIssue( $patron->unblessed, $item->barcode, $dt_to, undef, $dt_from ); |
3219 |
$accountline = Koha::Account::Lines->find( { itemnumber => $item->id } ); |
3220 |
is( $accountline->amount, '10.000000', |
3221 |
"Hourly rental charge calculated correctly" ); |
3222 |
$accountline->delete(); |
3223 |
AddRenewal( $patron->id, $item->id, $library->id, $dt_to_renew, $dt_to ); |
3224 |
$accountline = Koha::Account::Lines->find( { itemnumber => $item->id } ); |
3225 |
is( $accountline->amount, '5.000000', |
3226 |
"Hourly rental charge calculated correctly, for renewal" ); |
3227 |
$accountline->delete(); |
3228 |
$issue->delete(); |
3229 |
$issuingrule->lengthunit('days')->store(); |
3230 |
Time::Fake->reset; |
3167 |
}; |
3231 |
}; |
3168 |
|
3232 |
|
3169 |
subtest 'CanBookBeIssued & RentalFeesCheckoutConfirmation' => sub { |
3233 |
subtest 'CanBookBeIssued & RentalFeesCheckoutConfirmation' => sub { |
3170 |
- |
|
|