. */ declare(strict_types=1); namespace Tests\Feature\Console\Commands\Correction; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionType; use Log; use Tests\TestCase; /** * Class FixUnevenAmountTest * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.TooManyPublicMethods) */ class FixUnevenAmountTest extends TestCase { /** * */ public function setUp(): void { self::markTestIncomplete('Incomplete for refactor.'); return; parent::setUp(); Log::info(sprintf('Now in %s.', get_class($this))); } /** * @covers \FireflyIII\Console\Commands\Correction\FixUnevenAmount */ public function testHandle(): void { // assume there's nothing to fix. $this->artisan('firefly-iii:fix-uneven-amount') ->expectsOutput('Amount integrity OK!') ->assertExitCode(0); // dont verify anything } /** * Create uneven journal * @covers \FireflyIII\Console\Commands\Correction\FixUnevenAmount */ public function testHandleUneven(): void { $asset = $this->getRandomAsset(); $expense = $this->getRandomExpense(); $withdrawal = TransactionType::where('type', TransactionType::WITHDRAWAL)->first(); $journal = TransactionJournal::create( [ 'user_id' => 1, 'transaction_currency_id' => 1, 'transaction_type_id' => $withdrawal->id, 'description' => 'Test', 'tag_count' => 0, 'date' => '2019-01-01', ] ); $one = Transaction::create( [ 'transaction_journal_id' => $journal->id, 'account_id' => $asset->id, 'amount' => '-10', ] ); $two = Transaction::create( [ 'transaction_journal_id' => $journal->id, 'account_id' => $expense->id, 'amount' => '12', ] ); $this->artisan('firefly-iii:fix-uneven-amount') ->expectsOutput(sprintf('Corrected amount in transaction journal #%d', $journal->id)) ->assertExitCode(0); // verify change. $this->assertCount(1, Transaction::where('id', $one->id)->where('amount', '-10')->get()); $this->assertCount(1, Transaction::where('id', $two->id)->where('amount', '10')->get()); } }