78 lines
2.6 KiB
PHP
78 lines
2.6 KiB
PHP
<?php
|
|
|
|
use App\Livewire\Admin\PaymentProblems;
|
|
use App\Services\Billing\DunningSchedule;
|
|
use Livewire\Livewire;
|
|
|
|
// admin() helper defined in HostManagementTest.
|
|
|
|
/**
|
|
* Im Feld Euro, in der Datenbank Cent.
|
|
*
|
|
* Das Feld hiess „Gebühr 2. Mahnung (Cent)" und enthielt 500. Wer eine
|
|
* Mahngebühr einträgt, denkt in Euro und tippt „5" — aus fünf Euro wurden fünf
|
|
* Cent, und nichts hat widersprochen. Gespeichert wird weiter in Cent, wie
|
|
* ueberall sonst im Produkt; nur die Eingabe spricht die Sprache des Menschen.
|
|
*/
|
|
it('zeigt hinterlegte Gebuehren in Euro an', function () {
|
|
DunningSchedule::class; // Autoload
|
|
app(\App\Support\Settings::class);
|
|
|
|
\App\Support\Settings::set(DunningSchedule::FEES, [2 => 500, 3 => 1000]);
|
|
|
|
$fees = Livewire::actingAs(admin(), 'operator')->test(PaymentProblems::class)->get('fees');
|
|
|
|
expect($fees[2])->toBe('5')
|
|
->and($fees[3])->toBe('10');
|
|
});
|
|
|
|
it('speichert eine Eingabe in Euro als Cent', function () {
|
|
Livewire::actingAs(admin(), 'operator')->test(PaymentProblems::class)
|
|
->set('days', [0, 3, 10, 17, 24])
|
|
->set('feeFromLevel', 2)
|
|
->set('fees.2', '7,50')
|
|
->set('fees.3', '12')
|
|
->call('saveSchedule')
|
|
->assertHasNoErrors();
|
|
|
|
expect(DunningSchedule::feeCents(2))->toBe(750)
|
|
->and(DunningSchedule::feeCents(3))->toBe(1200);
|
|
});
|
|
|
|
it('rundet statt abzuschneiden', function () {
|
|
// (int) (19.99 * 100) ist in PHP 1998 — die Gleitkommazahl liegt knapp
|
|
// darunter. Ein Cent, der bei jedem Speichern verschwindet, faellt erst nach
|
|
// Monaten auf.
|
|
Livewire::actingAs(admin(), 'operator')->test(PaymentProblems::class)
|
|
->set('days', [0, 3, 10, 17, 24])
|
|
->set('feeFromLevel', 2)
|
|
->set('fees.2', '19,99')
|
|
->set('fees.3', '0')
|
|
->call('saveSchedule')
|
|
->assertHasNoErrors();
|
|
|
|
expect(DunningSchedule::feeCents(2))->toBe(1999);
|
|
});
|
|
|
|
it('nimmt auch einen Punkt als Dezimaltrenner', function () {
|
|
Livewire::actingAs(admin(), 'operator')->test(PaymentProblems::class)
|
|
->set('days', [0, 3, 10, 17, 24])
|
|
->set('feeFromLevel', 2)
|
|
->set('fees.2', '5.25')
|
|
->set('fees.3', '0')
|
|
->call('saveSchedule')
|
|
->assertHasNoErrors();
|
|
|
|
expect(DunningSchedule::feeCents(2))->toBe(525);
|
|
});
|
|
|
|
it('weist Unfug zurueck, statt ihn auf null zu runden', function () {
|
|
Livewire::actingAs(admin(), 'operator')->test(PaymentProblems::class)
|
|
->set('days', [0, 3, 10, 17, 24])
|
|
->set('feeFromLevel', 2)
|
|
->set('fees.2', 'fuenf')
|
|
->set('fees.3', '0')
|
|
->call('saveSchedule')
|
|
->assertHasErrors('fees.2');
|
|
});
|