Expand tests

This commit is contained in:
James Cole 2020-11-07 14:05:53 +01:00
parent 5b35612be0
commit 413df5a005
No known key found for this signature in database
GPG Key ID: B5669F9493CDE38D
5 changed files with 63 additions and 60 deletions

View File

@ -23,12 +23,12 @@ namespace Tests\Feature\Console\Commands\Correction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType;
use Log;
use Tests\TestCase;
/**
* Class CorrectOpeningBalanceCurrenciesTest
*
* @package Tests\Feature\Console\Commands\Correction
*/
class CorrectOpeningBalanceCurrenciesTest extends TestCase
@ -59,7 +59,7 @@ class CorrectOpeningBalanceCurrenciesTest extends TestCase
public function testHandleBroken(): void
{
// create opening balance journal for test. Is enough to trigger this test.
factory(TransactionJournal::class)->state(TransactionType::OPENING_BALANCE)->create();
TransactionJournal::factory()->openingBalance()->create();
// run command
$this->artisan('firefly-iii:fix-ob-currencies')
@ -74,11 +74,11 @@ class CorrectOpeningBalanceCurrenciesTest extends TestCase
{
Log::debug('Now in testHandleNoAccount');
// create opening balance journal for test. Is enough to trigger this test.
$journal = factory(TransactionJournal::class)->state('ob_broken')->create();
$journal = TransactionJournal::factory()->brokenOpeningBalance()->create();
// run command
$this->artisan('firefly-iii:fix-ob-currencies')
->expectsOutput(sprintf('Transaction journal #%d has no valid account. Cant fix this line.', $journal->id))
->expectsOutput(sprintf('Transaction journal #%d has no valid account. Cant fix this line.', $journal->id))
//->expectsOutput('Cant fix this line.')
->assertExitCode(0);

View File

@ -26,11 +26,6 @@ namespace Tests\Feature\Console\Commands\Correction;
use FireflyIII\Models\Preference;
use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Support\Collection;
use Log;
use Mockery;
use Preferences;
use Tests\TestCase;
/**
@ -44,7 +39,7 @@ class CreateAccessTokensTest extends TestCase
public function testHandle(): void
{
// remove preferences so token will be generated
Preference::where('name','access_token')->delete();
Preference::where('name', 'access_token')->delete();
$this->artisan('firefly-iii:create-access-tokens')
->expectsOutput(sprintf('Generated access token for user %s', $this->user()->email))
@ -56,9 +51,9 @@ class CreateAccessTokensTest extends TestCase
*/
public function testHandlePrefExists(): void
{
$preference = new Preference;
$preference->data = '123';
$preference->name = 'access_token';
$preference = new Preference;
$preference->data = '123';
$preference->name = 'access_token';
$preference->user_id = $this->user()->id;
$preference->save();

View File

@ -24,7 +24,7 @@ declare(strict_types=1);
namespace Tests\Feature\Console\Commands\Correction;
use FireflyIII\Factory\AccountFactory;
use FireflyIII\Models\Account;
use FireflyIII\Models\AccountType;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
@ -87,7 +87,6 @@ class FixAccountTypesTest extends TestCase
*/
public function testHandleWithdrawalLoanLoan(): void
{
$this->mock(AccountFactory::class);
$source = $this->getRandomLoan();
$destination = $this->getRandomLoan($source->id);
$type = TransactionType::where('type', TransactionType::WITHDRAWAL)->first();
@ -134,7 +133,6 @@ class FixAccountTypesTest extends TestCase
*/
public function testHandleTransferAssetLoan(): void
{
$this->mock(AccountFactory::class);
$source = $this->getRandomAsset();
$destination = $this->getRandomLoan();
$type = TransactionType::where('type', TransactionType::TRANSFER)->first();
@ -183,7 +181,6 @@ class FixAccountTypesTest extends TestCase
*/
public function testHandleTransferLoanAsset(): void
{
$this->mock(AccountFactory::class);
$source = $this->getRandomLoan();
$destination = $this->getRandomAsset();
$type = TransactionType::where('type', TransactionType::TRANSFER)->first();
@ -232,11 +229,10 @@ class FixAccountTypesTest extends TestCase
*/
public function testHandleWithdrawalAssetRevenue(): void
{
$source = $this->getRandomAsset();
$destination = $this->getRandomRevenue();
$newDestination = $this->getRandomExpense();
$withdrawal = TransactionType::where('type', TransactionType::WITHDRAWAL)->first();
$journal = TransactionJournal::create(
$source = $this->getRandomAsset();
$destination = $this->getRandomRevenue(); // is revenue account.
$withdrawal = TransactionType::where('type', TransactionType::WITHDRAWAL)->first();
$journal = TransactionJournal::create(
[
'user_id' => 1,
'transaction_currency_id' => 1,
@ -246,39 +242,45 @@ class FixAccountTypesTest extends TestCase
'date' => '2019-01-01',
]
);
$one = Transaction::create(
$one = Transaction::create(
[
'transaction_journal_id' => $journal->id,
'account_id' => $source->id,
'amount' => '-10',
]
);
$two = Transaction::create(
$two = Transaction::create(
[
'transaction_journal_id' => $journal->id,
'account_id' => $destination->id,
'account_id' => $destination->id, // revenue cannot be destination.
'amount' => '10',
]
);
// create expense account with the same name:
$expense = AccountType::where('type', AccountType::EXPENSE)->first();
$newDestination = Account::create(
[
'name' => $destination->name,
'account_type_id' => $expense->id,
'user_id' => 1,
]
);
// asset we find bad destination.
$this->assertCount(0, Transaction::where('id', $two->id)->where('account_id', $newDestination->id)->get());
$this->assertCount(1, Transaction::where('id', $two->id)->where('account_id', $destination->id)->get());
// mock stuff
$factory = $this->mock(AccountFactory::class);
$factory->shouldReceive('setUser')->atLeast()->once();
$factory->shouldReceive('findOrCreate')
->withArgs([$destination->name, AccountType::EXPENSE])
->atLeast()->once()->andReturn($newDestination);
// Transaction journal #137, destination account changed from #1 ("Checking Account") to #29 ("Land lord").
$this->artisan('firefly-iii:fix-account-types')
->expectsOutput(
sprintf('Transaction journal #%d, destination account changed from #%d ("%s") to #%d ("%s").',
$journal->id,
$destination->id, $destination->name,
$newDestination->id, $newDestination->name
))
sprintf(
'Transaction journal #%d, destination account changed from #%d ("%s") to #%d ("%s").',
$journal->id,
$destination->id, $destination->name,
$newDestination->id, $newDestination->name
)
)
->expectsOutput('Acted on 1 transaction(s)!')
->assertExitCode(0);
@ -296,12 +298,12 @@ class FixAccountTypesTest extends TestCase
*/
public function testHandleDepositAssetExpense(): void
{
$source = $this->getRandomExpense();
$newSource = $this->getRandomRevenue();
$source = $this->getRandomExpense(); // expense account
//$newSource = $this->getRandomRevenue();
$destination = $this->getRandomAsset();
$deposit = TransactionType::where('type', TransactionType::DEPOSIT)->first();
$journal = TransactionJournal::create(
$deposit = TransactionType::where('type', TransactionType::DEPOSIT)->first();
$journal = TransactionJournal::create(
[
'user_id' => 1,
'transaction_currency_id' => 1,
@ -311,39 +313,44 @@ class FixAccountTypesTest extends TestCase
'date' => '2019-01-01',
]
);
$one = Transaction::create(
$one = Transaction::create(
[
'transaction_journal_id' => $journal->id,
'account_id' => $source->id,
'account_id' => $source->id, // expense account cannot be source.
'amount' => '-10',
]
);
$two = Transaction::create(
$two = Transaction::create(
[
'transaction_journal_id' => $journal->id,
'account_id' => $destination->id,
'amount' => '10',
]
);
// create revenue account with the same name:
$revenue = AccountType::where('type', AccountType::REVENUE)->first();
$newSource = Account::create(
[
'name' => $source->name,
'account_type_id' => $revenue->id,
'user_id' => 1,
]
);
$this->assertCount(0, Transaction::where('id', $one->id)->where('account_id', $newSource->id)->get());
$this->assertCount(1, Transaction::where('id', $one->id)->where('account_id', $source->id)->get());
// mock stuff
$factory = $this->mock(AccountFactory::class);
$factory->shouldReceive('setUser')->atLeast()->once();
$factory->shouldReceive('findOrCreate')
->withArgs([$source->name, AccountType::REVENUE])
->atLeast()->once()->andReturn($newSource);
// Transaction journal #137, destination account changed from #1 ("Checking Account") to #29 ("Land lord").
$this->artisan('firefly-iii:fix-account-types')
->expectsOutput(
sprintf('Transaction journal #%d, source account changed from #%d ("%s") to #%d ("%s").',
$journal->id,
$destination->id, $destination->name,
$newSource->id, $newSource->name
))
sprintf(
'Transaction journal #%d, source account changed from #%d ("%s") to #%d ("%s").',
$journal->id,
$destination->id, $destination->name,
$newSource->id, $newSource->name
)
)
->expectsOutput('Acted on 1 transaction(s)!')
->assertExitCode(0);

View File

@ -34,7 +34,9 @@ class FixTransactionTypesTest extends TestCase
*/
public function testHandle(): void
{
$this->markTestIncomplete();
$this->artisan('firefly-iii:fix-transaction-types')
//->expectsOutput()
->assertExitCode(0);
}

View File

@ -23,18 +23,17 @@ declare(strict_types=1);
namespace Tests;
use FireflyIII\User;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use Tests\Traits\CollectsValues;
use Tests\Traits\MocksDefaultValues;
use Tests\Traits\TestHelpers;
/**
* Class TestCase
*/
abstract class TestCase extends BaseTestCase
{
use CreatesApplication, CollectsValues; // MocksDefaultValues TestHelpers
use CreatesApplication, CollectsValues;
// MocksDefaultValues TestHelpers
/**
* @return array