create(); $category = $user->currentHousehold->categories()->create(['name' => 'Loyer', 'type' => 'depense', 'position' => 1]); Livewire::actingAs($user) ->test(Index::class) ->set('name', 'Loyer') ->set('categoryId', $category->id) ->set('amount', '1200') ->set('dayOfMonth', '5') ->call('add') ->assertHasNoErrors(); $recurring = $user->currentHousehold->recurringTransactions()->first(); expect($recurring)->not->toBeNull(); expect($recurring->name)->toBe('Loyer'); expect((float) $recurring->amount)->toBe(1200.0); expect($recurring->day_of_month)->toBe(5); expect($recurring->active)->toBeTrue(); }); it('prevents editing a recurring transaction from another household', function (): void { $owner = User::factory()->create(); $intruder = User::factory()->create(); $category = $owner->currentHousehold->categories()->create(['name' => 'Loyer', 'type' => 'depense', 'position' => 1]); $recurring = $owner->currentHousehold->recurringTransactions()->create([ 'category_id' => $category->id, 'name' => 'Loyer', 'amount' => 1200, 'day_of_month' => 5, ]); Livewire::actingAs($intruder) ->test(Index::class) ->call('startEdit', $recurring->id) ->assertForbidden(); }); it('toggles active state', function (): void { $user = User::factory()->create(); $category = $user->currentHousehold->categories()->create(['name' => 'Loyer', 'type' => 'depense', 'position' => 1]); $recurring = $user->currentHousehold->recurringTransactions()->create([ 'category_id' => $category->id, 'name' => 'Loyer', 'amount' => 1200, 'day_of_month' => 5, ]); Livewire::actingAs($user)->test(Index::class)->call('toggleActive', $recurring->id); expect($recurring->fresh()->active)->toBeFalse(); }); it('deletes a recurring transaction', function (): void { $user = User::factory()->create(); $category = $user->currentHousehold->categories()->create(['name' => 'Loyer', 'type' => 'depense', 'position' => 1]); $recurring = $user->currentHousehold->recurringTransactions()->create([ 'category_id' => $category->id, 'name' => 'Loyer', 'amount' => 1200, 'day_of_month' => 5, ]); Livewire::actingAs($user)->test(Index::class)->call('delete', $recurring->id); expect(RecurringTransaction::find($recurring->id))->toBeNull(); });