. */ declare(strict_types=1); namespace Tests\Unit\Services\Internal\Destroy; use FireflyIII\Models\Account; use FireflyIII\Models\Transaction; use FireflyIII\Services\Internal\Destroy\AccountDestroyService; use FireflyIII\Services\Internal\Destroy\JournalDestroyService; use Tests\TestCase; /** * Class AccountDestroyServiceTest */ class AccountDestroyServiceTest extends TestCase { /** * @covers \FireflyIII\Services\Internal\Destroy\AccountDestroyService */ public function testDestroyBasic(): void { $account = Account::create( ['user_id' => $this->user()->id, 'account_type_id' => 1, 'name' => 'Some name #' . random_int(1, 1000), 'virtual_balance' => '0', 'iban' => null, 'active' => true] ); /** @var AccountDestroyService $service */ $service = app(AccountDestroyService::class); $service->destroy($account, null); $this->assertDatabaseMissing('accounts', ['id' => $account->id, 'deleted_at' => null]); } /** * @covers \FireflyIII\Services\Internal\Destroy\AccountDestroyService */ public function testDestroyDontMove(): void { // create objects: $account = Account::create( ['user_id' => $this->user()->id, 'account_type_id' => 1, 'name' => 'Some name #' . random_int(1, 1000), 'virtual_balance' => '0', 'iban' => null, 'active' => true] ); Transaction::create(['account_id' => $account->id, 'transaction_journal_id' => 1, 'amount' => 10, 'transaction_currency_id' => 1]); // mock delete service: $service = $this->mock(JournalDestroyService::class); $service->shouldReceive('destroy')->once(); /** @var AccountDestroyService $service */ $service = app(AccountDestroyService::class); $service->destroy($account, null); $this->assertDatabaseMissing('accounts', ['id' => $account->id, 'deleted_at' => null]); } /** * @covers \FireflyIII\Services\Internal\Destroy\AccountDestroyService */ public function testDestroyMove(): void { $account = Account::create( ['user_id' => $this->user()->id, 'account_type_id' => 1, 'name' => 'Some name #' . random_int(1, 1000), 'virtual_balance' => '0', 'iban' => null, 'active' => true] ); $move = Account::create( ['user_id' => $this->user()->id, 'account_type_id' => 1, 'name' => 'Some name #' . random_int(1, 1000), 'virtual_balance' => '0', 'iban' => null, 'active' => true] ); $transaction = Transaction::create(['account_id' => $account->id, 'transaction_journal_id' => 1, 'amount' => 10, 'transaction_currency_id' => 1]); /** @var AccountDestroyService $service */ $service = app(AccountDestroyService::class); $service->destroy($account, $move); $this->assertDatabaseMissing('accounts', ['id' => $account->id, 'deleted_at' => null]); $this->assertDatabaseMissing('transactions', ['account_id' => $account->id]); $this->assertDatabaseHas('transactions', ['id' => $transaction->id, 'account_id' => $move->id]); } }