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'); });