Improve test coverage.

This commit is contained in:
James Cole
2019-08-29 17:53:25 +02:00
parent 91b6b86202
commit 19feefda2d
86 changed files with 3173 additions and 2626 deletions

View File

@@ -316,7 +316,7 @@ class CreateCSVImportTest extends TestCase
'--user=1',
'--token=token',
];
Log::warning('The following error is part of a test.');
$this->artisan('firefly-iii:csv-import ' . implode(' ', $parameters))
->expectsOutput(sprintf('Import file : %s', $file))
->expectsOutput(sprintf('Configuration file : %s', $config))
@@ -373,7 +373,7 @@ class CreateCSVImportTest extends TestCase
'--user=1',
'--token=token',
];
Log::warning('The following error is part of a test.');
$this->artisan('firefly-iii:csv-import ' . implode(' ', $parameters))
->expectsOutput(sprintf('Import file : %s', $file))
->expectsOutput(sprintf('Configuration file : %s', $config))
@@ -424,6 +424,7 @@ class CreateCSVImportTest extends TestCase
'--user=1',
'--token=token',
];
Log::warning('The following error is part of a test.');
$this->artisan('firefly-iii:csv-import ' . implode(' ', $parameters))
->expectsOutput(sprintf('Import file : %s', $file))
->expectsOutput(sprintf('Configuration file : %s', $config))

View File

@@ -77,8 +77,8 @@ class AccountCurrenciesTest extends TestCase
$userRepos->shouldReceive('all')->atLeast()->once()->andReturn(new Collection([$this->user()]));
// check config
FireflyConfig::shouldReceive('get')->withArgs(['4780_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_account_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_account_currencies', true]);
// check preferences:
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'currencyPreference', 'EUR'])->andReturn($pref);
@@ -117,8 +117,8 @@ class AccountCurrenciesTest extends TestCase
$userRepos->shouldReceive('all')->atLeast()->once()->andReturn(new Collection([$this->user()]));
// check config
FireflyConfig::shouldReceive('get')->withArgs(['4780_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_account_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_account_currencies', true]);
// check preferences:
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'currencyPreference', 'EUR'])->andReturn($pref);
@@ -163,8 +163,8 @@ class AccountCurrenciesTest extends TestCase
$accountRepos->shouldReceive('getAccountsByType')->atLeast()->once()->andReturn(new Collection([$account]));
// check config
FireflyConfig::shouldReceive('get')->withArgs(['4780_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_account_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_account_currencies', true]);
// check preferences:
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'currencyPreference', 'EUR'])->andReturn($pref);
@@ -205,8 +205,8 @@ class AccountCurrenciesTest extends TestCase
$accountRepos->shouldReceive('getAccountsByType')->atLeast()->once()->andReturn(new Collection([$account]));
// check config
FireflyConfig::shouldReceive('get')->withArgs(['4780_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_account_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_account_currencies', true]);
// check preferences:
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'currencyPreference', 'EUR'])->andReturn($pref);
@@ -245,8 +245,8 @@ class AccountCurrenciesTest extends TestCase
$accountRepos->shouldReceive('getAccountsByType')->atLeast()->once()->andReturn(new Collection([$account]));
// check config
FireflyConfig::shouldReceive('get')->withArgs(['4780_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_account_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_account_currencies', true]);
// check preferences:
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'currencyPreference', 'EUR'])->andReturn($pref);
@@ -283,8 +283,8 @@ class AccountCurrenciesTest extends TestCase
$accountRepos->shouldReceive('getAccountsByType')->atLeast()->once()->andReturn(new Collection([$account]));
// check config
FireflyConfig::shouldReceive('get')->withArgs(['4780_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_account_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_account_currencies', true]);
// check preferences:
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'currencyPreference', 'EUR'])->andReturn($pref);
@@ -314,8 +314,8 @@ class AccountCurrenciesTest extends TestCase
$userRepos->shouldReceive('all')->atLeast()->once()->andReturn(new Collection([$this->user()]));
// check config
FireflyConfig::shouldReceive('get')->withArgs(['4780_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_account_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_account_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_account_currencies', true]);
// check preferences:
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'currencyPreference', 'EUR'])->andReturn($pref);
@@ -340,8 +340,8 @@ class AccountCurrenciesTest extends TestCase
$this->mock(UserRepositoryInterface::class);
// check config
FireflyConfig::shouldReceive('get')->withArgs(['4780_account_currencies', false])->andReturn($true);
FireflyConfig::shouldReceive('set')->withArgs(['4780_account_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_account_currencies', false])->andReturn($true);
FireflyConfig::shouldReceive('set')->withArgs(['480_account_currencies', true]);
// check preferences:
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'currencyPreference', 'EUR'])->andReturn($pref);

View File

@@ -60,11 +60,11 @@ class BackToJournalsTest extends TestCase
$false->data = false;
$true = new Configuration;
$true->data = true;
FireflyConfig::shouldReceive('get')->withArgs(['4780_back_to_journals', false])->andReturn($false);
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrated_to_groups', false])->andReturn($true);
FireflyConfig::shouldReceive('get')->withArgs(['480_back_to_journals', false])->andReturn($false);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrated_to_groups', false])->andReturn($true);
// set new preference after running:
FireflyConfig::shouldReceive('set')->withArgs(['4780_back_to_journals', true]);
FireflyConfig::shouldReceive('set')->withArgs(['480_back_to_journals', true]);
$this->artisan('firefly-iii:back-to-journals')
->expectsOutput('Check 0 transaction journal(s) for budget info.')
@@ -96,11 +96,11 @@ class BackToJournalsTest extends TestCase
$false->data = false;
$true = new Configuration;
$true->data = true;
FireflyConfig::shouldReceive('get')->withArgs(['4780_back_to_journals', false])->andReturn($false);
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrated_to_groups', false])->andReturn($true);
FireflyConfig::shouldReceive('get')->withArgs(['480_back_to_journals', false])->andReturn($false);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrated_to_groups', false])->andReturn($true);
// set new preference after running:
FireflyConfig::shouldReceive('set')->withArgs(['4780_back_to_journals', true]);
FireflyConfig::shouldReceive('set')->withArgs(['480_back_to_journals', true]);
$this->artisan('firefly-iii:back-to-journals')
->expectsOutput('Check 1 transaction journal(s) for budget info.')
@@ -122,6 +122,7 @@ class BackToJournalsTest extends TestCase
*/
public function testHandleCategory(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
$journal = $this->getRandomWithdrawal();
/** @var Transaction $transaction */
$transaction = $journal->transactions()->first();
@@ -138,11 +139,11 @@ class BackToJournalsTest extends TestCase
$true = new Configuration;
$true->data = true;
FireflyConfig::shouldReceive('get')->withArgs(['4780_back_to_journals', false])->andReturn($false);
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrated_to_groups', false])->andReturn($true);
FireflyConfig::shouldReceive('get')->withArgs(['480_back_to_journals', false])->andReturn($false);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrated_to_groups', false])->andReturn($true);
// set new preference after running:
FireflyConfig::shouldReceive('set')->withArgs(['4780_back_to_journals', true]);
FireflyConfig::shouldReceive('set')->withArgs(['480_back_to_journals', true]);
$this->artisan('firefly-iii:back-to-journals')
->expectsOutput('Check 0 transaction journal(s) for budget info.')
@@ -181,11 +182,11 @@ class BackToJournalsTest extends TestCase
$false->data = false;
$true = new Configuration;
$true->data = true;
FireflyConfig::shouldReceive('get')->withArgs(['4780_back_to_journals', false])->andReturn($false);
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrated_to_groups', false])->andReturn($true);
FireflyConfig::shouldReceive('get')->withArgs(['480_back_to_journals', false])->andReturn($false);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrated_to_groups', false])->andReturn($true);
// set new preference after running:
FireflyConfig::shouldReceive('set')->withArgs(['4780_back_to_journals', true]);
FireflyConfig::shouldReceive('set')->withArgs(['480_back_to_journals', true]);
$this->artisan('firefly-iii:back-to-journals')
->expectsOutput('Check 1 transaction journal(s) for budget info.')
@@ -225,11 +226,11 @@ class BackToJournalsTest extends TestCase
$false->data = false;
$true = new Configuration;
$true->data = true;
FireflyConfig::shouldReceive('get')->withArgs(['4780_back_to_journals', false])->andReturn($false);
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrated_to_groups', false])->andReturn($true);
FireflyConfig::shouldReceive('get')->withArgs(['480_back_to_journals', false])->andReturn($false);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrated_to_groups', false])->andReturn($true);
// set new preference after running:
FireflyConfig::shouldReceive('set')->withArgs(['4780_back_to_journals', true]);
FireflyConfig::shouldReceive('set')->withArgs(['480_back_to_journals', true]);
$this->artisan('firefly-iii:back-to-journals')
->expectsOutput('Check 0 transaction journal(s) for budget info.')

View File

@@ -56,8 +56,8 @@ class BudgetLimitCurrencyTest extends TestCase
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_bl_currency', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_bl_currency', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_bl_currency', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_bl_currency', true]);
$this->artisan('firefly-iii:bl-currency')
->expectsOutput('All budget limits are correct.')
@@ -81,8 +81,8 @@ class BudgetLimitCurrencyTest extends TestCase
'end_date' => '2019-01-31',
]);
FireflyConfig::shouldReceive('get')->withArgs(['4780_bl_currency', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_bl_currency', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_bl_currency', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_bl_currency', true]);
$currency = $this->getEuro();
Amount::shouldReceive('getDefaultCurrencyByUser')->atLeast()->once()->andReturn($currency);

View File

@@ -54,8 +54,8 @@ class CCLiabilitiesTest extends TestCase
{
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_cc_liabilities', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_cc_liabilities', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_cc_liabilities', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_cc_liabilities', true]);
$this->artisan('firefly-iii:cc-liabilities')
@@ -79,8 +79,8 @@ class CCLiabilitiesTest extends TestCase
);
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_cc_liabilities', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_cc_liabilities', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_cc_liabilities', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_cc_liabilities', true]);
$this->artisan('firefly-iii:cc-liabilities')
@@ -114,8 +114,8 @@ class CCLiabilitiesTest extends TestCase
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_cc_liabilities', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_cc_liabilities', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_cc_liabilities', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_cc_liabilities', true]);
$this->artisan('firefly-iii:cc-liabilities')

View File

@@ -55,8 +55,8 @@ class MigrateAttachmentsTest extends TestCase
{
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrate_attachments', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_migrate_attachments', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrate_attachments', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_migrate_attachments', true]);
// assume all is well.
$this->artisan('firefly-iii:migrate-attachments')
->expectsOutput('All attachments are OK.')
@@ -70,8 +70,8 @@ class MigrateAttachmentsTest extends TestCase
{
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrate_attachments', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_migrate_attachments', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrate_attachments', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_migrate_attachments', true]);
$attachment = Attachment::create(
[

View File

@@ -53,8 +53,8 @@ class MigrateJournalNotesTest extends TestCase
{
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrate_notes', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_migrate_notes', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrate_notes', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_migrate_notes', true]);
// assume all is well.
$this->artisan('firefly-iii:migrate-notes')
@@ -69,8 +69,8 @@ class MigrateJournalNotesTest extends TestCase
{
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrate_notes', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_migrate_notes', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrate_notes', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_migrate_notes', true]);
$journal = $this->getRandomWithdrawal();

View File

@@ -75,8 +75,8 @@ class MigrateToGroupsTest extends TestCase
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrated_to_groups', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_migrated_to_groups', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrated_to_groups', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_migrated_to_groups', true]);
// assume all is well.
$this->artisan('firefly-iii:migrate-to-groups')
@@ -136,8 +136,8 @@ class MigrateToGroupsTest extends TestCase
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrated_to_groups', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_migrated_to_groups', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrated_to_groups', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_migrated_to_groups', true]);
// assume all is well.
$this->artisan('firefly-iii:migrate-to-groups')
@@ -242,8 +242,8 @@ class MigrateToGroupsTest extends TestCase
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_migrated_to_groups', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_migrated_to_groups', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_migrated_to_groups', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_migrated_to_groups', true]);
$this->artisan('firefly-iii:migrate-to-groups')
->expectsOutput('Migrated 1 transaction journal(s).')

View File

@@ -88,8 +88,8 @@ class MigrateToRulesTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_bills_to_rules', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_bills_to_rules', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_bills_to_rules', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_bills_to_rules', true]);
// preferences
$language = new Preference;
@@ -196,8 +196,8 @@ class MigrateToRulesTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_bills_to_rules', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_bills_to_rules', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_bills_to_rules', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_bills_to_rules', true]);
// preferences
$language = new Preference;
@@ -308,8 +308,8 @@ class MigrateToRulesTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_bills_to_rules', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_bills_to_rules', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_bills_to_rules', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_bills_to_rules', true]);
// preferences
$language = new Preference;

View File

@@ -91,8 +91,8 @@ class OtherCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_other_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_other_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_other_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_other_currencies', true]);
// assume all is well.
$this->artisan('firefly-iii:other-currencies')
@@ -167,8 +167,8 @@ class OtherCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_other_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_other_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_other_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_other_currencies', true]);
$this->artisan('firefly-iii:other-currencies')
->expectsOutput('Verified 1 transaction(s) and journal(s).')
@@ -252,8 +252,8 @@ class OtherCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_other_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_other_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_other_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_other_currencies', true]);
$this->artisan('firefly-iii:other-currencies')
->expectsOutput('Verified 1 transaction(s) and journal(s).')

View File

@@ -56,8 +56,8 @@ class RenameAccountMetaTest extends TestCase
$false = new Configuration;
$false->data = false;
// check config
FireflyConfig::shouldReceive('get')->withArgs(['4780_rename_account_meta', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_rename_account_meta', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_rename_account_meta', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_rename_account_meta', true]);
// assume all is well.
$this->artisan('firefly-iii:rename-account-meta')
@@ -76,8 +76,8 @@ class RenameAccountMetaTest extends TestCase
$false = new Configuration;
$false->data = false;
// check config
FireflyConfig::shouldReceive('get')->withArgs(['4780_rename_account_meta', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_rename_account_meta', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_rename_account_meta', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_rename_account_meta', true]);
$expense = $this->getRandomExpense();

View File

@@ -67,8 +67,8 @@ class TransactionIdentifierTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transaction_identifier', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transaction_identifier', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transaction_identifier', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transaction_identifier', true]);
// assume all is well.
$this->artisan('firefly-iii:transaction-identifiers')
@@ -140,8 +140,8 @@ class TransactionIdentifierTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transaction_identifier', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transaction_identifier', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transaction_identifier', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transaction_identifier', true]);
// assume all is well.
$this->artisan('firefly-iii:transaction-identifiers')

View File

@@ -75,8 +75,8 @@ class TransferCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transfer_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transfer_currencies', true]);
// assume all is well.
$this->artisan('firefly-iii:transfer-currencies')
@@ -117,8 +117,8 @@ class TransferCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transfer_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transfer_currencies', true]);
// assume all is well.
$this->artisan('firefly-iii:transfer-currencies')
@@ -162,8 +162,8 @@ class TransferCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transfer_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transfer_currencies', true]);
$this->artisan('firefly-iii:transfer-currencies')
->expectsOutput('Verified currency information of 1 transfer(s).')
@@ -218,8 +218,8 @@ class TransferCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transfer_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transfer_currencies', true]);
$this->artisan('firefly-iii:transfer-currencies')
->expectsOutput('Verified currency information of 2 transfer(s).')
@@ -279,8 +279,8 @@ class TransferCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transfer_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transfer_currencies', true]);
$this->artisan('firefly-iii:transfer-currencies')
->expectsOutput('Verified currency information of 3 transfer(s).')
@@ -339,8 +339,8 @@ class TransferCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transfer_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transfer_currencies', true]);
$this->artisan('firefly-iii:transfer-currencies')
->expectsOutput('Verified currency information of 1 transfer(s).')
@@ -393,8 +393,8 @@ class TransferCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transfer_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transfer_currencies', true]);
$this->artisan('firefly-iii:transfer-currencies')
->expectsOutput('Verified currency information of 1 transfer(s).')
@@ -443,8 +443,8 @@ class TransferCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transfer_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transfer_currencies', true]);
$this->artisan('firefly-iii:transfer-currencies')
->expectsOutput('Verified currency information of 1 transfer(s).')
@@ -493,8 +493,8 @@ class TransferCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transfer_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transfer_currencies', true]);
$this->artisan('firefly-iii:transfer-currencies')
->expectsOutput('Verified currency information of 1 transfer(s).')
@@ -551,8 +551,8 @@ class TransferCurrenciesCorrectionsTest extends TestCase
// configuration
$false = new Configuration;
$false->data = false;
FireflyConfig::shouldReceive('get')->withArgs(['4780_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['4780_transfer_currencies', true]);
FireflyConfig::shouldReceive('get')->withArgs(['480_transfer_currencies', false])->andReturn($false);
FireflyConfig::shouldReceive('set')->withArgs(['480_transfer_currencies', true]);
$this->artisan('firefly-iii:transfer-currencies')
->expectsOutput('Verified currency information of 1 transfer(s).')

File diff suppressed because it is too large Load Diff

View File

@@ -101,6 +101,7 @@ class PiggyBankEventFactoryTest extends TestCase
$repos->shouldReceive('getRepetition')->andReturn(null);
$repos->shouldReceive('getExactAmount')->andReturn('0');
Log::warning('The following error is part of a test.');
$this->assertNull($factory->create($transfer, $piggy));
}
@@ -115,7 +116,7 @@ class PiggyBankEventFactoryTest extends TestCase
$piggy = $this->user()->piggyBanks()->first();
/** @var PiggyBankEventFactory $factory */
$factory = app(PiggyBankEventFactory::class);
Log::warning('The following error is part of a test.');
$this->assertNull($factory->create($deposit, $piggy));
}

View File

@@ -34,7 +34,6 @@ use FireflyIII\Factory\PiggyBankFactory;
use FireflyIII\Factory\RecurrenceFactory;
use FireflyIII\Factory\TransactionCurrencyFactory;
use FireflyIII\Factory\TransactionTypeFactory;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Validation\AccountValidator;
@@ -124,11 +123,6 @@ class RecurrenceFactoryTest extends TestCase
'active' => true,
'repeat_until' => null,
],
'meta' => [
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
'repetitions' => [
[
'type' => 'daily',
@@ -154,6 +148,9 @@ class RecurrenceFactoryTest extends TestCase
'budget_name' => 'Some budget',
'category_id' => 2,
'category_name' => 'Some category',
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
],
@@ -167,6 +164,38 @@ class RecurrenceFactoryTest extends TestCase
$this->assertEquals($result->title, $data['recurrence']['title']);
}
/**
* @covers \FireflyIII\Factory\RecurrenceFactory
*/
public function testCreateBadTransactionType(): void
{
$accountFactory = $this->mock(AccountFactory::class);
$validator = $this->mock(AccountValidator::class);
$typeFactory = $this->mock(TransactionTypeFactory::class);
$data = [
'recurrence' => [
'type' => 'bad type',
],
];
$typeFactory->shouldReceive('find')->once()->withArgs([ucfirst($data['recurrence']['type'])])->andReturn(null);
/** @var RecurrenceFactory $factory */
$factory = app(RecurrenceFactory::class);
$factory->setUser($this->user());
$result = null;
Log::warning('The following error is part of a test.');
try {
$result = $factory->create($data);
} catch (FireflyException $e) {
$this->assertEquals('Cannot make a recurring transaction of type "bad type"', $e->getMessage());
$this->assertTrue(true);
}
$this->assertNull($result);
}
/**
* With piggy bank. With tags. With budget. With category.
* Submit account names, not types. This is a withdrawal.
@@ -232,11 +261,6 @@ class RecurrenceFactoryTest extends TestCase
'active' => true,
'repeat_until' => null,
],
'meta' => [
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
'repetitions' => [
[
'type' => 'daily',
@@ -262,6 +286,9 @@ class RecurrenceFactoryTest extends TestCase
'budget_name' => 'Some budget',
'category_id' => 2,
'category_name' => 'Some category',
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
],
@@ -275,6 +302,110 @@ class RecurrenceFactoryTest extends TestCase
$this->assertEquals($result->title, $data['recurrence']['title']);
}
/**
* Deposit. With piggy bank. With tags. With budget. With category.
*
* @covers \FireflyIII\Factory\RecurrenceFactory
* @covers \FireflyIII\Services\Internal\Support\RecurringTransactionTrait
*/
public function testCreateDeposit(): void
{
// objects to return:
$piggyBank = $this->user()->piggyBanks()->inRandomOrder()->first();
$source = $this->getRandomRevenue();
$destination = $this->getRandomAsset();
$budget = $this->user()->budgets()->inRandomOrder()->first();
$category = $this->user()->categories()->inRandomOrder()->first();
// mock other factories:
$piggyFactory = $this->mock(PiggyBankFactory::class);
$budgetFactory = $this->mock(BudgetFactory::class);
$categoryFactory = $this->mock(CategoryFactory::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$currencyFactory = $this->mock(TransactionCurrencyFactory::class);
$typeFactory = $this->mock(TransactionTypeFactory::class);
$accountFactory = $this->mock(AccountFactory::class);
$validator = $this->mock(AccountValidator::class);
// mock calls:
Amount::shouldReceive('getDefaultCurrencyByUser')->andReturn($this->getEuro())->once();
$piggyFactory->shouldReceive('setUser')->once();
$piggyFactory->shouldReceive('find')->withArgs([1, 'Bla bla'])->andReturn($piggyBank);
$accountRepos->shouldReceive('setUser')->twice();
$accountRepos->shouldReceive('findNull')->twice()->andReturn($source, $destination);
$currencyFactory->shouldReceive('find')->once()->withArgs([1, 'EUR'])->andReturn(null);
$currencyFactory->shouldReceive('find')->once()->withArgs([null, null])->andReturn(null);
$budgetFactory->shouldReceive('setUser')->once();
$budgetFactory->shouldReceive('find')->withArgs([1, 'Some budget'])->once()->andReturn($budget);
$categoryFactory->shouldReceive('setUser')->once();
$categoryFactory->shouldReceive('findOrCreate')->withArgs([2, 'Some category'])->once()->andReturn($category);
// validator:
$validator->shouldReceive('setUser')->once();
$validator->shouldReceive('setTransactionType')->atLeast()->once();
$validator->shouldReceive('validateSource')->atLeast()->once()->andReturn(true);
$validator->shouldReceive('validateDestination')->atLeast()->once()->andReturn(true);
// data for basic recurrence.
$data = [
'recurrence' => [
'type' => 'deposit',
'first_date' => Carbon::now()->addDay(),
'repetitions' => 0,
'title' => 'Test recurrence' . $this->randomInt(),
'description' => 'Description thing',
'apply_rules' => true,
'active' => true,
'repeat_until' => null,
],
'repetitions' => [
[
'type' => 'daily',
'moment' => '',
'skip' => 0,
'weekend' => 1,
],
],
'transactions' => [
[
'source_id' => 1,
'source_name' => 'Some name',
'destination_id' => 2,
'destination_name' => 'some otjer name',
'currency_id' => 1,
'currency_code' => 'EUR',
'foreign_currency_id' => null,
'foreign_currency_code' => null,
'foreign_amount' => null,
'description' => 'Bla bla bla',
'amount' => '100',
'budget_id' => 1,
'budget_name' => 'Some budget',
'category_id' => 2,
'category_name' => 'Some category',
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
],
];
$typeFactory->shouldReceive('find')->once()->withArgs([ucfirst($data['recurrence']['type'])])->andReturn(TransactionType::find(2));
/** @var RecurrenceFactory $factory */
$factory = app(RecurrenceFactory::class);
$factory->setUser($this->user());
$result = $factory->create($data);
$this->assertEquals($result->title, $data['recurrence']['title']);
}
/**
* With piggy bank. With tags. With budget. With category.
* Submit account names, not types. Also a withdrawal
@@ -346,11 +477,6 @@ class RecurrenceFactoryTest extends TestCase
'active' => true,
'repeat_until' => null,
],
'meta' => [
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
'repetitions' => [
[
'type' => 'daily',
@@ -376,6 +502,9 @@ class RecurrenceFactoryTest extends TestCase
'budget_name' => 'Some budget',
'category_id' => 2,
'category_name' => 'Some category',
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
],
@@ -389,113 +518,6 @@ class RecurrenceFactoryTest extends TestCase
$this->assertEquals($result->title, $data['recurrence']['title']);
}
/**
* Deposit. With piggy bank. With tags. With budget. With category.
*
* @covers \FireflyIII\Factory\RecurrenceFactory
* @covers \FireflyIII\Services\Internal\Support\RecurringTransactionTrait
*/
public function testCreateDeposit(): void
{
// objects to return:
$piggyBank = $this->user()->piggyBanks()->inRandomOrder()->first();
$source = $this->getRandomRevenue();
$destination = $this->getRandomAsset();
$budget = $this->user()->budgets()->inRandomOrder()->first();
$category = $this->user()->categories()->inRandomOrder()->first();
// mock other factories:
$piggyFactory = $this->mock(PiggyBankFactory::class);
$budgetFactory = $this->mock(BudgetFactory::class);
$categoryFactory = $this->mock(CategoryFactory::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$currencyFactory = $this->mock(TransactionCurrencyFactory::class);
$typeFactory = $this->mock(TransactionTypeFactory::class);
$accountFactory = $this->mock(AccountFactory::class);
$validator = $this->mock(AccountValidator::class);
// mock calls:
Amount::shouldReceive('getDefaultCurrencyByUser')->andReturn($this->getEuro())->once();
$piggyFactory->shouldReceive('setUser')->once();
$piggyFactory->shouldReceive('find')->withArgs([1, 'Bla bla'])->andReturn($piggyBank);
$accountRepos->shouldReceive('setUser')->twice();
$accountRepos->shouldReceive('findNull')->twice()->andReturn($source, $destination);
$currencyFactory->shouldReceive('find')->once()->withArgs([1, 'EUR'])->andReturn(null);
$currencyFactory->shouldReceive('find')->once()->withArgs([null, null])->andReturn(null);
$budgetFactory->shouldReceive('setUser')->once();
$budgetFactory->shouldReceive('find')->withArgs([1, 'Some budget'])->once()->andReturn($budget);
$categoryFactory->shouldReceive('setUser')->once();
$categoryFactory->shouldReceive('findOrCreate')->withArgs([2, 'Some category'])->once()->andReturn($category);
// validator:
$validator->shouldReceive('setUser')->once();
$validator->shouldReceive('setTransactionType')->atLeast()->once();
$validator->shouldReceive('validateSource')->atLeast()->once()->andReturn(true);
$validator->shouldReceive('validateDestination')->atLeast()->once()->andReturn(true);
// data for basic recurrence.
$data = [
'recurrence' => [
'type' => 'deposit',
'first_date' => Carbon::now()->addDay(),
'repetitions' => 0,
'title' => 'Test recurrence' . $this->randomInt(),
'description' => 'Description thing',
'apply_rules' => true,
'active' => true,
'repeat_until' => null,
],
'meta' => [
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
'repetitions' => [
[
'type' => 'daily',
'moment' => '',
'skip' => 0,
'weekend' => 1,
],
],
'transactions' => [
[
'source_id' => 1,
'source_name' => 'Some name',
'destination_id' => 2,
'destination_name' => 'some otjer name',
'currency_id' => 1,
'currency_code' => 'EUR',
'foreign_currency_id' => null,
'foreign_currency_code' => null,
'foreign_amount' => null,
'description' => 'Bla bla bla',
'amount' => '100',
'budget_id' => 1,
'budget_name' => 'Some budget',
'category_id' => 2,
'category_name' => 'Some category',
],
],
];
$typeFactory->shouldReceive('find')->once()->withArgs([ucfirst($data['recurrence']['type'])])->andReturn(TransactionType::find(2));
/** @var RecurrenceFactory $factory */
$factory = app(RecurrenceFactory::class);
$factory->setUser($this->user());
$result = $factory->create($data);
$this->assertEquals($result->title, $data['recurrence']['title']);
}
/**
* No piggy bank. With tags. With budget. With category. Withdrawal.
*
@@ -546,7 +568,7 @@ class RecurrenceFactoryTest extends TestCase
// data for basic recurrence.
$data = [
'recurrence' => [
'recurrence' => [
'type' => 'withdrawal',
'first_date' => Carbon::now()->addDay(),
'repetitions' => 0,
@@ -556,11 +578,7 @@ class RecurrenceFactoryTest extends TestCase
'active' => true,
'repeat_until' => null,
],
'meta' => [
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
'repetitions' => [
[
'type' => 'daily',
@@ -586,6 +604,9 @@ class RecurrenceFactoryTest extends TestCase
'budget_name' => 'Some budget',
'category_id' => 2,
'category_name' => 'Some category',
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
],
@@ -661,11 +682,6 @@ class RecurrenceFactoryTest extends TestCase
'active' => true,
'repeat_until' => null,
],
'meta' => [
'tags' => [],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
'repetitions' => [
[
'type' => 'daily',
@@ -691,6 +707,9 @@ class RecurrenceFactoryTest extends TestCase
'budget_name' => 'Some budget',
'category_id' => 2,
'category_name' => 'Some category',
'tags' => [],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
],
@@ -755,7 +774,7 @@ class RecurrenceFactoryTest extends TestCase
// data for basic recurrence.
$data = [
'recurrence' => [
'recurrence' => [
'type' => 'transfer',
'first_date' => Carbon::now()->addDay(),
'repetitions' => 0,
@@ -765,11 +784,7 @@ class RecurrenceFactoryTest extends TestCase
'active' => true,
'repeat_until' => null,
],
'meta' => [
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
'repetitions' => [
[
'type' => 'daily',
@@ -795,6 +810,9 @@ class RecurrenceFactoryTest extends TestCase
'budget_name' => 'Some budget',
'category_id' => 2,
'category_name' => 'Some category',
'tags' => ['a', 'b', 'c'],
'piggy_bank_id' => 1,
'piggy_bank_name' => 'Bla bla',
],
],
@@ -812,35 +830,4 @@ class RecurrenceFactoryTest extends TestCase
$this->assertEquals($result->title, $data['recurrence']['title']);
}
/**
* @covers \FireflyIII\Factory\RecurrenceFactory
*/
public function testCreateBadTransactionType(): void
{
$accountFactory = $this->mock(AccountFactory::class);
$validator = $this->mock(AccountValidator::class);
$typeFactory = $this->mock(TransactionTypeFactory::class);
$data = [
'recurrence' => [
'type' => 'bad type',
],
];
$typeFactory->shouldReceive('find')->once()->withArgs([ucfirst($data['recurrence']['type'])])->andReturn(null);
/** @var RecurrenceFactory $factory */
$factory = app(RecurrenceFactory::class);
$factory->setUser($this->user());
$result = null;
try {
$result = $factory->create($data);
} catch (FireflyException $e) {
$this->assertEquals('Cannot make a recurring transaction of type "bad type"', $e->getMessage());
$this->assertTrue(true);
}
$this->assertNull($result);
}
}

View File

@@ -66,6 +66,7 @@ class TransactionCurrencyFactoryTest extends TestCase
{
/** @var TransactionCurrencyFactory $factory */
$factory = app(TransactionCurrencyFactory::class);
Log::warning('The following error is part of a test.');
$result = $factory->create(['name' => null, 'code' => null, 'symbol' => null, 'decimal_places' => null, 'enabled' => true]);
$this->assertNull($result);
}
@@ -100,7 +101,6 @@ class TransactionCurrencyFactoryTest extends TestCase
*/
public function testFindByCode(): void
{
// ;
$currency = TransactionCurrency::inRandomOrder()->whereNull('deleted_at')->first();
/** @var TransactionCurrencyFactory $factory */
$factory = app(TransactionCurrencyFactory::class);

View File

@@ -72,7 +72,7 @@ class TransactionFactoryTest extends TestCase
$transaction = $factory->createNegative($amount, null);
$this->assertEquals($transaction->account_id, $account->id);
$this->assertEquals('-10', $transaction->amount);
$this->assertEquals('-10.000000000000', $transaction->amount);
$transaction->forceDelete();
}
@@ -134,8 +134,8 @@ class TransactionFactoryTest extends TestCase
$transaction = $factory->createNegative($amount, $amount);
$this->assertEquals($transaction->account_id, $account->id);
$this->assertEquals('-10', $transaction->amount);
$this->assertEquals('-10', $transaction->foreign_amount);
$this->assertEquals('-10.000000000000', $transaction->amount);
$this->assertEquals('-10.000000000000', $transaction->foreign_amount);
$this->assertEquals($euro->id, $transaction->transaction_currency_id);
$this->assertEquals($dollar->id, $transaction->foreign_currency_id);
$transaction->forceDelete();

View File

@@ -68,6 +68,7 @@ class TransactionJournalFactoryTest extends TestCase
/**
* Submit empty array.
*
* @covers \FireflyIII\Factory\TransactionJournalFactory
* @covers \FireflyIII\Services\Internal\Support\JournalServiceTrait
*/
@@ -103,7 +104,7 @@ class TransactionJournalFactoryTest extends TestCase
/** @var TransactionJournalFactory $factory */
$factory = app(TransactionJournalFactory::class);
$factory->setUser($this->user());
Log::warning('The following error is part of a test.');
try {
$collection = $factory->create($submission);
} catch (FireflyException $e) {

View File

@@ -30,6 +30,7 @@ use FireflyIII\Mail\ConfirmEmailChangeMail;
use FireflyIII\Mail\RegisteredUser as RegisteredUserMail;
use FireflyIII\Mail\RequestedNewPassword as RequestedNewPasswordMail;
use FireflyIII\Mail\UndoEmailChangeMail;
use FireflyIII\Models\Preference;
use FireflyIII\Models\Role;
use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Auth\Events\Login;
@@ -109,7 +110,7 @@ class UserEventHandlerTest extends TestCase
$repository->shouldReceive('getRole')->once()->andReturn(null);
$repository->shouldReceive('attachRole')->once()->withArgs([Mockery::any(), 'owner']);
$repository->shouldReceive('createRole')->once()->withArgs(['owner', 'Site Owner', 'User runs this instance of FF3'])->andReturn(new Role);
Log::warning('The following error is part of a test.');
$listener->checkSingleUserIsAdmin($event);
$this->assertTrue(true);
}
@@ -178,7 +179,13 @@ class UserEventHandlerTest extends TestCase
*/
public function testSendEmailChangeConfirmMail(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
Mail::fake();
$tokenPref = new Preference;
$tokenPref->data = 'token';
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'email_change_confirm_token', 'invalid'])->andReturn($tokenPref);
$user = $this->emptyUser();
$event = new UserChangedEmail($user, 'new@new', 'old@old', '127.0.0.1');
$listener = new UserEventHandler;
@@ -201,14 +208,18 @@ class UserEventHandlerTest extends TestCase
*/
public function testSendEmailChangeUndoMail(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
Mail::fake();
$tokenPref = new Preference;
$tokenPref->data = 'token';
Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'email_change_undo_token', 'invalid'])->andReturn($tokenPref);
$user = $this->emptyUser();
$event = new UserChangedEmail($user, 'new@new', 'old@old', '127.0.0.1');
$listener = new UserEventHandler;
$listener->sendEmailChangeUndoMail($event);
// must send user an email:
Mail::assertSent(
UndoEmailChangeMail::class, function ($mail) {
return $mail->hasTo('old@old') && '127.0.0.1' === $mail->ipAddress;
@@ -225,6 +236,7 @@ class UserEventHandlerTest extends TestCase
*/
public function testSendNewPassword(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
Mail::fake();
$user = $this->emptyUser();
$event = new RequestedNewPassword($user, 'token', '127.0.0.1');
@@ -248,6 +260,7 @@ class UserEventHandlerTest extends TestCase
*/
public function testSendRegistrationMail(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
Mail::fake();
$user = $this->emptyUser();
$event = new RegisteredUser($user, '127.0.0.1');

View File

@@ -61,6 +61,7 @@ class AttachmentHelperTest extends TestCase
$path = resource_path('stubs/binary.bin');
$file = new UploadedFile($path, 'binary.bin', 'application/octet-stream', filesize($path), null, true);
Log::warning('The following error is part of a test.');
$helper->saveAttachmentsForModel($journal, [$file]);
$errors = $helper->getErrors();
$messages = $helper->getMessages();
@@ -103,7 +104,6 @@ class AttachmentHelperTest extends TestCase
public function testSaveAttachmentFromApi(): void
{
// mock calls:
Crypt::shouldReceive('encrypt')->times(1)->andReturn('Some encrypted content');
Storage::fake('upload');
$path = public_path('apple-touch-icon.png');
@@ -162,6 +162,7 @@ class AttachmentHelperTest extends TestCase
);
// call helper
Log::warning('The following error is part of a test.');
$result = $helper->saveAttachmentFromApi($attachment, file_get_contents($path));
$this->assertFalse($result);
@@ -195,6 +196,7 @@ class AttachmentHelperTest extends TestCase
$path = public_path('apple-touch-icon.png');
$file = new UploadedFile($path, 'apple-touch-icon.png', 'image/png', filesize($path), null, true);
Log::warning('The following error is part of a test.');
$helper->saveAttachmentsForModel($journal, [$file]);
$errors = $helper->getErrors();
$messages = $helper->getMessages();

View File

@@ -87,7 +87,7 @@ class HelpTest extends TestCase
//client instance is bound to the mock here.
$this->app->instance(Client::class, $client);
Log::warning('The following error is part of a test.');
// now let's see what happens:
$help = new Help;
$result = $help->getFromGitHub('test-route', 'en_US');

View File

@@ -155,22 +155,22 @@ class AmountCreditTest extends TestCase
'63 5212.4440' => '635212.4440',
'163 5219.1634567898' => '1635219.1634567898',
'444 163 5219.1634567898' => '4441635219.1634567898',
'-0.34918323' => '0.34918323',
'-0.34918323' => '0.349183230000',
'0.208' => '0.208',
'-0.15' => '0.15',
'-0.03881677' => '0.03881677',
'-0.15' => '0.150000000000',
'-0.03881677' => '0.038816770000',
'0.33' => '0.33',
'-0.1' => '0.1',
'-0.1' => '0.100000000000',
'0.01124' => '0.01124',
'-0.01124' => '0.01124',
'-0.01124' => '0.011240000000',
'0.115' => '0.115',
'-0.115' => '0.115',
'-0.115' => '0.115000000000',
'1.33' => '1.33',
'$1.23' => '1.23',
'€1,44' => '1.44',
'(33.52)' => '33.52',
'€(63.12)' => '63.12',
'($182.77)' => '182.77',
'(33.52)' => '33.520000000000',
'€(63.12)' => '63.120000000000',
'($182.77)' => '182.770000000000',
// double minus because why the hell not
'--0.03881677' => '0.03881677',

View File

@@ -51,133 +51,133 @@ class AmountDebitTest extends TestCase
{
$values = [
'0' => '0',
'0.0' => '0.0',
'0.1' => '-0.1',
'.2' => '-0.2',
'0.01' => '-0.01',
'1' => '-1',
'1.0' => '-1.0',
'1.1' => '-1.1',
'1.12' => '-1.12',
'1.10' => '-1.10',
'12' => '-12',
'12.3' => '-12.3',
'12.34' => '-12.34',
'123' => '-123',
'123.4' => '-123.4',
'123.45' => '-123.45',
'1234' => '-1234',
'1234.5' => '-1234.5',
'1234.56' => '-1234.56',
'1 234' => '-1234',
'1 234.5' => '-1234.5',
'1 234.56' => '-1234.56',
'1,234' => '-1234',
'1,234.5' => '-1234.5',
'1,234.56' => '-1234.56',
'123,456,789' => '-123456789',
'0,0' => '0.0',
'0,1' => '-0.1',
',2' => '-0.2',
'0,01' => '-0.01',
'1,0' => '-1.0',
'1,1' => '-1.1',
'1,12' => '-1.12',
'1,10' => '-1.10',
'12,3' => '-12.3',
'12,34' => '-12.34',
'123,4' => '-123.4',
'123,45' => '-123.45',
'1234,5' => '-1234.5',
'1234,56' => '-1234.56',
'1 234,5' => '-1234.5',
'1 234,56' => '-1234.56',
'1.234' => '-1.234', // will no longer match as 1234, but as 1.234
'1.234,5' => '-1234.5',
'1.234,56' => '-1234.56',
'0' => '0.000000000000',
'0.0' => '0.000000000000',
'0.1' => '-0.100000000000',
'.2' => '-0.200000000000',
'0.01' => '-0.010000000000',
'1' => '-1.000000000000',
'1.0' => '-1.000000000000',
'1.1' => '-1.100000000000',
'1.12' => '-1.120000000000',
'1.10' => '-1.100000000000',
'12' => '-12.000000000000',
'12.3' => '-12.300000000000',
'12.34' => '-12.340000000000',
'123' => '-123.000000000000',
'123.4' => '-123.400000000000',
'123.45' => '-123.450000000000',
'1234' => '-1234.000000000000',
'1234.5' => '-1234.500000000000',
'1234.56' => '-1234.560000000000',
'1 234' => '-1234.000000000000',
'1 234.5' => '-1234.500000000000',
'1 234.56' => '-1234.560000000000',
'1,234' => '-1234.000000000000',
'1,234.5' => '-1234.500000000000',
'1,234.56' => '-1234.560000000000',
'123,456,789' => '-123456789.000000000000',
'0,0' => '0.000000000000',
'0,1' => '-0.100000000000',
',2' => '-0.200000000000',
'0,01' => '-0.010000000000',
'1,0' => '-1.000000000000',
'1,1' => '-1.100000000000',
'1,12' => '-1.120000000000',
'1,10' => '-1.100000000000',
'12,3' => '-12.300000000000',
'12,34' => '-12.340000000000',
'123,4' => '-123.400000000000',
'123,45' => '-123.450000000000',
'1234,5' => '-1234.500000000000',
'1234,56' => '-1234.560000000000',
'1 234,5' => '-1234.500000000000',
'1 234,56' => '-1234.560000000000',
'1.234' => '-1.234000000000', // will no longer match as 1234, but as 1.234
'1.234,5' => '-1234.500000000000',
'1.234,56' => '-1234.560000000000',
// many decimals
'2.00' => '-2.00',
'3.000' => '-3.000',
'4.0000' => '-4.0000',
'5.000' => '-5.000',
'6.0000' => '-6.0000',
'7.200' => '-7.200',
'8.2000' => '-8.2000',
'9.330' => '-9.330',
'10.3300' => '-10.3300',
'11.444' => '-11.444',
'12.4440' => '-12.4440',
'13.5555' => '-13.5555',
'14.45678' => '-14.45678',
'15.456789' => '-15.456789',
'16.4567898' => '-16.4567898',
'17.34567898' => '-17.34567898',
'18.134567898' => '-18.134567898',
'19.1634567898' => '-19.1634567898',
'20.16334567898' => '-20.16334567898',
'21.16364567898' => '-21.16364567898',
'2.00' => '-2.000000000000',
'3.000' => '-3.000000000000',
'4.0000' => '-4.000000000000',
'5.000' => '-5.000000000000',
'6.0000' => '-6.000000000000',
'7.200' => '-7.200000000000',
'8.2000' => '-8.200000000000',
'9.330' => '-9.330000000000',
'10.3300' => '-10.330000000000',
'11.444' => '-11.444000000000',
'12.4440' => '-12.444000000000',
'13.5555' => '-13.555500000000',
'14.45678' => '-14.456780000000',
'15.456789' => '-15.456789000000',
'16.4567898' => '-16.456789800000',
'17.34567898' => '-17.345678980000',
'18.134567898' => '-18.134567898000',
'19.1634567898' => '-19.163456789800',
'20.16334567898' => '-20.163345678980',
'21.16364567898' => '-21.163645678980',
'22.163644567898' => '-22.163644567898',
'22.1636445670069' => '-22.163644567006',
// many decimals, mixed, large numbers
'63522.00' => '-63522.00',
'63523.000' => '-63523.000',
'63524.0000' => '-63524.0000',
'63525.000' => '-63525.000',
'63526.0000' => '-63526.0000',
'63527.200' => '-63527.200',
'63528.2000' => '-63528.2000',
'63529.330' => '-63529.330',
'635210.3300' => '-635210.3300',
'635211.444' => '-635211.444',
'635212.4440' => '-635212.4440',
'635213.5555' => '-635213.5555',
'635214.45678' => '-635214.45678',
'635215.456789' => '-635215.456789',
'635216.4567898' => '-635216.4567898',
'635217.34567898' => '-635217.34567898',
'635218.134567898' => '-635218.134567898',
'635219.1634567898' => '-635219.1634567898',
'635220.16334567898' => '-635220.16334567898',
'635221.16364567898' => '-635221.16364567898',
'63522.00' => '-63522.000000000000',
'63523.000' => '-63523.000000000000',
'63524.0000' => '-63524.000000000000',
'63525.000' => '-63525.000000000000',
'63526.0000' => '-63526.000000000000',
'63527.200' => '-63527.200000000000',
'63528.2000' => '-63528.200000000000',
'63529.330' => '-63529.330000000000',
'635210.3300' => '-635210.330000000000',
'635211.444' => '-635211.444000000000',
'635212.4440' => '-635212.444000000000',
'635213.5555' => '-635213.555500000000',
'635214.45678' => '-635214.456780000000',
'635215.456789' => '-635215.456789000000',
'635216.4567898' => '-635216.456789800000',
'635217.34567898' => '-635217.345678980000',
'635218.134567898' => '-635218.134567898000',
'635219.1634567898' => '-635219.163456789800',
'635220.16334567898' => '-635220.163345678980',
'635221.16364567898' => '-635221.163645678980',
'635222.163644567898' => '-635222.163644567898',
// many decimals, mixed, also mixed thousands separators
'63 522.00' => '-63522.00',
'63 523.000' => '-63523.000',
'63,524.0000' => '-63524.0000',
'63 525.000' => '-63525.000',
'63,526.0000' => '-63526.0000',
'63 527.200' => '-63527.200',
'63 528.2000' => '-63528.2000',
'63 529.330' => '-63529.330',
'63,5210.3300' => '-635210.3300',
'63,5211.444' => '-635211.444',
'63 5212.4440' => '-635212.4440',
'163 5219.1634567898' => '-1635219.1634567898',
'444 163 5219.1634567898' => '-4441635219.1634567898',
'-0.34918323' => '-0.34918323',
'0.208' => '-0.208',
'-0.15' => '-0.15',
'-0.03881677' => '-0.03881677',
'0.33' => '-0.33',
'-0.1' => '-0.1',
'0.01124' => '-0.01124',
'-0.01124' => '-0.01124',
'0.115' => '-0.115',
'-0.115' => '-0.115',
'1.33' => '-1.33',
'$1.23' => '-1.23',
'€1,44' => '-1.44',
'(33.52)' => '-33.52',
'€(63.12)' => '-63.12',
'($182.77)' => '-182.77',
'63 522.00' => '-63522.000000000000',
'63 523.000' => '-63523.000000000000',
'63,524.0000' => '-63524.000000000000',
'63 525.000' => '-63525.000000000000',
'63,526.0000' => '-63526.000000000000',
'63 527.200' => '-63527.200000000000',
'63 528.2000' => '-63528.200000000000',
'63 529.330' => '-63529.330000000000',
'63,5210.3300' => '-635210.330000000000',
'63,5211.444' => '-635211.444000000000',
'63 5212.4440' => '-635212.444000000000',
'163 5219.1634567898' => '-1635219.163456789800',
'444 163 5219.1634567898' => '-4441635219.163456789800',
'-0.34918323' => '-0.349183230000',
'0.208' => '-0.208000000000',
'-0.15' => '-0.150000000000',
'-0.03881677' => '-0.038816770000',
'0.33' => '-0.330000000000',
'-0.1' => '-0.100000000000',
'0.01124' => '-0.011240000000',
'-0.01124' => '-0.011240000000',
'0.115' => '-0.115000000000',
'-0.115' => '-0.115000000000',
'1.33' => '-1.330000000000',
'$1.23' => '-1.230000000000',
'€1,44' => '-1.440000000000',
'(33.52)' => '-33.520000000000',
'€(63.12)' => '-63.120000000000',
'($182.77)' => '-182.770000000000',
// double minus because why the hell not
'--0.03881677' => '-0.03881677',
'--0.33' => '-0.33',
'--$1.23' => '-1.23',
'--63 5212.4440' => '-635212.4440',
'--,2' => '-0.2',
'--0.03881677' => '-0.038816770000',
'--0.33' => '-0.330000000000',
'--$1.23' => '-1.230000000000',
'--63 5212.4440' => '-635212.444000000000',
'--,2' => '-0.200000000000',
];
foreach ($values as $value => $expected) {
$converter = new AmountDebit;
@@ -193,6 +193,6 @@ class AmountDebitTest extends TestCase
{
$converter = new AmountDebit;
$result = $converter->convert(null);
$this->assertEquals('0', $result);
$this->assertEquals('0.000000000000', $result);
}
}

View File

@@ -40,136 +40,136 @@ class AmountNegatedTest extends TestCase
{
$values = [
'0' => '0',
'0.0' => '0.0',
'0.1' => '-0.1',
'.2' => '-0.2',
'0.01' => '-0.01',
'1' => '-1',
'1.0' => '-1.0',
'1.1' => '-1.1',
'1.12' => '-1.12',
'1.10' => '-1.10',
'12' => '-12',
'12.3' => '-12.3',
'12.34' => '-12.34',
'123' => '-123',
'123.4' => '-123.4',
'123.45' => '-123.45',
'1234' => '-1234',
'1234.5' => '-1234.5',
'1234.56' => '-1234.56',
'1 234' => '-1234',
'1 234.5' => '-1234.5',
'1 234.56' => '-1234.56',
'1,234' => '-1234',
'1,234.5' => '-1234.5',
'1,234.56' => '-1234.56',
'123,456,789' => '-123456789',
'0,0' => '0.0',
'0,1' => '-0.1',
',2' => '-0.2',
'0,01' => '-0.01',
'1,0' => '-1.0',
'1,1' => '-1.1',
'1,12' => '-1.12',
'1,10' => '-1.10',
'12,3' => '-12.3',
'12,34' => '-12.34',
'123,4' => '-123.4',
'123,45' => '-123.45',
'1234,5' => '-1234.5',
'1234,56' => '-1234.56',
'1 234,5' => '-1234.5',
'1 234,56' => '-1234.56',
'1.234' => '-1.234', // will no longer match as 1234, but as 1.234
'1.234,5' => '-1234.5',
'1.234,56' => '-1234.56',
'0' => '0.000000000000',
'0.0' => '0.000000000000',
'0.1' => '-0.100000000000',
'.2' => '-0.200000000000',
'0.01' => '-0.010000000000',
'1' => '-1.000000000000',
'1.0' => '-1.000000000000',
'1.1' => '-1.100000000000',
'1.12' => '-1.120000000000',
'1.10' => '-1.100000000000',
'12' => '-12.000000000000',
'12.3' => '-12.300000000000',
'12.34' => '-12.340000000000',
'123' => '-123.000000000000',
'123.4' => '-123.400000000000',
'123.45' => '-123.450000000000',
'1234' => '-1234.000000000000',
'1234.5' => '-1234.500000000000',
'1234.56' => '-1234.560000000000',
'1 234' => '-1234.000000000000',
'1 234.5' => '-1234.500000000000',
'1 234.56' => '-1234.560000000000',
'1,234' => '-1234.000000000000',
'1,234.5' => '-1234.500000000000',
'1,234.56' => '-1234.560000000000',
'123,456,789' => '-123456789.000000000000',
'0,0' => '0.000000000000',
'0,1' => '-0.100000000000',
',2' => '-0.200000000000',
'0,01' => '-0.010000000000',
'1,0' => '-1.000000000000',
'1,1' => '-1.100000000000',
'1,12' => '-1.120000000000',
'1,10' => '-1.100000000000',
'12,3' => '-12.300000000000',
'12,34' => '-12.340000000000',
'123,4' => '-123.400000000000',
'123,45' => '-123.450000000000',
'1234,5' => '-1234.500000000000',
'1234,56' => '-1234.560000000000',
'1 234,5' => '-1234.500000000000',
'1 234,56' => '-1234.560000000000',
'1.234' => '-1.234000000000', // will no longer match as 1234, but as 1.234
'1.234,5' => '-1234.500000000000',
'1.234,56' => '-1234.560000000000',
// many decimals
'2.00' => '-2.00',
'3.000' => '-3.000',
'4.0000' => '-4.0000',
'5.000' => '-5.000',
'6.0000' => '-6.0000',
'7.200' => '-7.200',
'8.2000' => '-8.2000',
'9.330' => '-9.330',
'10.3300' => '-10.3300',
'11.444' => '-11.444',
'12.4440' => '-12.4440',
'13.5555' => '-13.5555',
'14.45678' => '-14.45678',
'15.456789' => '-15.456789',
'16.4567898' => '-16.4567898',
'17.34567898' => '-17.34567898',
'18.134567898' => '-18.134567898',
'19.1634567898' => '-19.1634567898',
'20.16334567898' => '-20.16334567898',
'21.16364567898' => '-21.16364567898',
'2.00' => '-2.000000000000',
'3.000' => '-3.000000000000',
'4.0000' => '-4.000000000000',
'5.000' => '-5.000000000000',
'6.0000' => '-6.000000000000',
'7.200' => '-7.200000000000',
'8.2000' => '-8.200000000000',
'9.330' => '-9.330000000000',
'10.3300' => '-10.330000000000',
'11.444' => '-11.444000000000',
'12.4440' => '-12.444000000000',
'13.5555' => '-13.555500000000',
'14.45678' => '-14.456780000000',
'15.456789' => '-15.456789000000',
'16.4567898' => '-16.456789800000',
'17.34567898' => '-17.345678980000',
'18.134567898' => '-18.134567898000',
'19.1634567898' => '-19.163456789800',
'20.16334567898' => '-20.163345678980',
'21.16364567898' => '-21.163645678980',
'22.163644567898' => '-22.163644567898',
'22.1636445670069' => '-22.163644567006',
// many decimals, mixed, large numbers
'63522.00' => '-63522.00',
'63523.000' => '-63523.000',
'63524.0000' => '-63524.0000',
'63525.000' => '-63525.000',
'63526.0000' => '-63526.0000',
'63527.200' => '-63527.200',
'63528.2000' => '-63528.2000',
'63529.330' => '-63529.330',
'635210.3300' => '-635210.3300',
'635211.444' => '-635211.444',
'635212.4440' => '-635212.4440',
'635213.5555' => '-635213.5555',
'635214.45678' => '-635214.45678',
'635215.456789' => '-635215.456789',
'635216.4567898' => '-635216.4567898',
'635217.34567898' => '-635217.34567898',
'635218.134567898' => '-635218.134567898',
'635219.1634567898' => '-635219.1634567898',
'635220.16334567898' => '-635220.16334567898',
'635221.16364567898' => '-635221.16364567898',
'63522.00' => '-63522.000000000000',
'63523.000' => '-63523.000000000000',
'63524.0000' => '-63524.000000000000',
'63525.000' => '-63525.000000000000',
'63526.0000' => '-63526.000000000000',
'63527.200' => '-63527.200000000000',
'63528.2000' => '-63528.200000000000',
'63529.330' => '-63529.330000000000',
'635210.3300' => '-635210.330000000000',
'635211.444' => '-635211.444000000000',
'635212.4440' => '-635212.444000000000',
'635213.5555' => '-635213.555500000000',
'635214.45678' => '-635214.456780000000',
'635215.456789' => '-635215.456789000000',
'635216.4567898' => '-635216.456789800000',
'635217.34567898' => '-635217.345678980000',
'635218.134567898' => '-635218.134567898000',
'635219.1634567898' => '-635219.163456789800',
'635220.16334567898' => '-635220.163345678980',
'635221.16364567898' => '-635221.163645678980',
'635222.163644567898' => '-635222.163644567898',
// many decimals, mixed, also mixed thousands separators
'63 522.00' => '-63522.00',
'63 523.000' => '-63523.000',
'63,524.0000' => '-63524.0000',
'63 525.000' => '-63525.000',
'63,526.0000' => '-63526.0000',
'63 527.200' => '-63527.200',
'63 528.2000' => '-63528.2000',
'63 529.330' => '-63529.330',
'63,5210.3300' => '-635210.3300',
'63,5211.444' => '-635211.444',
'63 5212.4440' => '-635212.4440',
'163 5219.1634567898' => '-1635219.1634567898',
'444 163 5219.1634567898' => '-4441635219.1634567898',
'-0.34918323' => '0.34918323',
'0.208' => '-0.208',
'-0.15' => '0.15',
'-0.03881677' => '0.03881677',
'0.33' => '-0.33',
'-0.1' => '0.1',
'0.01124' => '-0.01124',
'-0.01124' => '0.01124',
'0.115' => '-0.115',
'-0.115' => '0.115',
'1.33' => '-1.33',
'$1.23' => '-1.23',
'€1,44' => '-1.44',
'(33.52)' => '33.52',
'€(63.12)' => '63.12',
'($182.77)' => '182.77',
'63 522.00' => '-63522.000000000000',
'63 523.000' => '-63523.000000000000',
'63,524.0000' => '-63524.000000000000',
'63 525.000' => '-63525.000000000000',
'63,526.0000' => '-63526.000000000000',
'63 527.200' => '-63527.200000000000',
'63 528.2000' => '-63528.200000000000',
'63 529.330' => '-63529.330000000000',
'63,5210.3300' => '-635210.330000000000',
'63,5211.444' => '-635211.444000000000',
'63 5212.4440' => '-635212.444000000000',
'163 5219.1634567898' => '-1635219.163456789800',
'444 163 5219.1634567898' => '-4441635219.163456789800',
'-0.34918323' => '0.349183230000',
'0.208' => '-0.208000000000',
'-0.15' => '0.150000000000',
'-0.03881677' => '0.038816770000',
'0.33' => '-0.330000000000',
'-0.1' => '0.100000000000',
'0.01124' => '-0.011240000000',
'-0.01124' => '0.011240000000',
'0.115' => '-0.115000000000',
'-0.115' => '0.115000000000',
'1.33' => '-1.330000000000',
'$1.23' => '-1.230000000000',
'€1,44' => '-1.440000000000',
'(33.52)' => '33.520000000000',
'€(63.12)' => '63.120000000000',
'($182.77)' => '182.770000000000',
// double minus because why the hell not
'--0.03881677' => '-0.03881677',
'--0.33' => '-0.33',
'--$1.23' => '-1.23',
'--63 5212.4440' => '-635212.4440',
'--,2' => '-0.2',
'--0.03881677' => '-0.038816770000',
'--0.33' => '-0.330000000000',
'--$1.23' => '-1.230000000000',
'--63 5212.4440' => '-635212.444000000000',
'--,2' => '-0.200000000000',
];
foreach ($values as $value => $expected) {
@@ -186,6 +186,6 @@ class AmountNegatedTest extends TestCase
{
$converter = new AmountNegated;
$result = $converter->convert(null);
$this->assertEquals('0', $result);
$this->assertEquals('0.000000000000', $result);
}
}

View File

@@ -55,7 +55,7 @@ class PresidentsChoiceTest extends TestCase
$parser = new PresidentsChoice;
$result = $parser->run($row);
$this->assertEquals('-12.34', $result[3]);
$this->assertEquals('-12.340000000000', $result[3]);
$this->assertEquals('Descr', $result[2]);
}

File diff suppressed because it is too large Load Diff

View File

@@ -31,6 +31,7 @@ use FireflyIII\Jobs\CreateRecurringTransactions;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface;
use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Event;
use Log;
@@ -54,392 +55,6 @@ class CreateRecurringTransactionsTest extends TestCase
Log::info(sprintf('Now in %s.', get_class($this)));
}
/**
* Submit nothing.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testBasic(): void
{
// mock classes
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection);
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->setForce(false);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(0, $job->submitted);
}
/**
* Submit one, but offer no occurrences.
*
* TODO there is a random element in this test that breaks the test.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingle(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
// mock classes
$date = new Carbon;
$date->subDays(4);
$recurrence = $this->getRandomRecurrence();
$recurrence->latest_date = null;
$recurrence->first_date = $date;
$recurrence->save();
Log::debug(sprintf('Test is going to use Recurrence #%d', $recurrence->id), $recurrence->toArray());
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$journalRepos = $this->mock(JournalRepositoryInterface::class);
$groupRepos = $this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$groupRepos->shouldReceive('setUser')->atLeast()->once();
$journalRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('getOccurrencesInRange')->atLeast()->once()->andReturn([]);
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(0);
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(1, $job->executed);
$this->assertEquals(1, $job->submitted);
}
/**
* Submit one, but has already fired today
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleFiredToday(): void
{
// mock classes
$recurrence = $this->getRandomRecurrence();
$recurrence->latest_date = new Carbon;
$recurrence->save();
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(0);
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(1, $job->submitted);
$recurrence->latest_date =null;
$recurrence->save();
}
/**
* Submit one, but offer no occurrences.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleFuture(): void
{
// mock classes
$future = new Carbon;
$future->addDays(4);
$recurrence = $this->getRandomRecurrence();
$recurrence->first_date =$future;
$recurrence->save();
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(0);
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(1, $job->submitted);
$recurrence->first_date =$date;
$recurrence->save();
}
/**
* Submit one, but should no longer run.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleOverDue(): void
{
// mock classes
$date = new Carbon();
$yesterday = clone $date;
$yesterday->subDays(3);
$recurrence = $this->getRandomRecurrence();
$recurrence->repeat_until =$yesterday;
$recurrence->save();
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(0);
Preferences::shouldReceive('mark')->atLeast()->once();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(1, $job->submitted);
$recurrence->repeat_until =null;
$recurrence->save();
}
/**
* Submit one, but it has fired enough times already.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleOccurrences(): void
{
// mock classes
$recurrence = $this->getRandomRecurrence();
$recurrence->repetitions = 1;
$recurrence->save();
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(1);
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(1, $job->submitted);
$recurrence->repetitions = 0;
$recurrence->save();
}
/**
* Submit one, but it's inactive.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleInactive(): void
{
// mock classes
$recurrence = $this->getRandomRecurrence();
$recurrence->active = false;
$recurrence->save();
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(1, $job->submitted);
$recurrence->active = true;
$recurrence->save();
}
/**
* Submit one, offer occurence for today.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleToday(): void
{
Event::fake();
$date = new Carbon();
$this->expectsEvents([StoredTransactionGroup::class]);
// mock classes
$carbon = new Carbon;
$carbon->subDays(4);
$recurrence = $this->getRandomRecurrence();
$recurrence->latest_date = null;
$recurrence->first_date = $carbon;
$recurrence->save();
$group = $this->getRandomWithdrawalGroup();
// overrule some fields in the recurrence to make it seem it hasnt fired yet.
$recurrence->latest_date = null;
$recurrence->save();
// mock classes
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$journalRepos = $this->mock(JournalRepositoryInterface::class);
$groupRepos = $this->mock(TransactionGroupRepositoryInterface::class);
$piggyFactory = $this->mock(PiggyBankFactory::class);
$piggyEventFactory = $this->mock(PiggyBankEventFactory::class);
// mocks:
$groupRepos->shouldReceive('setUser')->atLeast()->once();
$journalRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('getOccurrencesInRange')->atLeast()->once()->andReturn([$date]);
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(0);
$recurringRepos->shouldReceive('getPiggyBank')->atLeast()->once()->andReturnNull();
Preferences::shouldReceive('mark')->atLeast()->once();
// return data:
$recurringRepos->shouldReceive('getBudget')->atLeast()->once()->andReturnNull();
$recurringRepos->shouldReceive('getCategory')->atLeast()->once()->andReturnNull();
$recurringRepos->shouldReceive('getTags')->atLeast()->once()->andReturn([]);
// store journal
$groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($group);
//Event::assertDispatched(StoredTransactionGroup::class);
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(1, $job->created);
$this->assertEquals(1, $job->executed);
$this->assertEquals(1, $job->submitted);
}
/**
* Submit one, offer occurence for today.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testForced(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
Event::fake();
$date = new Carbon();
$this->expectsEvents([StoredTransactionGroup::class]);
// overrule some fields in the recurrence.
$carbon = new Carbon;
$carbon->subDays(4);
$recurrence = $this->getRandomRecurrence();
$recurrence->latest_date = null;
$recurrence->first_date = $carbon;
$recurrence->save();
$group = $this->getRandomWithdrawalGroup();
// overrule some fields in the recurrence to make it seem it hasnt fired yet.
$recurrence->latest_date = null;
$recurrence->save();
// mock classes
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$journalRepos = $this->mock(JournalRepositoryInterface::class);
$groupRepos = $this->mock(TransactionGroupRepositoryInterface::class);
$piggyFactory = $this->mock(PiggyBankFactory::class);
$piggyEventFactory = $this->mock(PiggyBankEventFactory::class);
// mocks:
$groupRepos->shouldReceive('setUser')->atLeast()->once();
$journalRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('getOccurrencesInRange')->atLeast()->once()->andReturn([$date]);
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(3);
$recurringRepos->shouldReceive('getPiggyBank')->atLeast()->once()->andReturnNull();
Preferences::shouldReceive('mark')->atLeast()->once();
// return data:
$recurringRepos->shouldReceive('getBudget')->atLeast()->once()->andReturnNull();
$recurringRepos->shouldReceive('getCategory')->atLeast()->once()->andReturnNull();
$recurringRepos->shouldReceive('getTags')->atLeast()->once()->andReturn([]);
// store journal
$groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($group);
//Event::assertDispatched(StoredTransactionGroup::class);
$job = new CreateRecurringTransactions($date);
$job->setForce(true);
$job->handle();
$this->assertEquals(1, $job->created);
$this->assertEquals(1, $job->executed);
$this->assertEquals(1, $job->submitted);
}
/**
* Submit one, offer occurence for today.
*
@@ -483,12 +98,260 @@ class CreateRecurringTransactionsTest extends TestCase
$this->assertEquals(1, $job->submitted);
}
/**
* Submit nothing.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testBasic(): void
{
// mock classes
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection);
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->setForce(false);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(0, $job->submitted);
}
/**
* Submit one, offer occurence for today.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testForced(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
Event::fake();
$date = new Carbon();
$this->expectsEvents([StoredTransactionGroup::class]);
// overrule some fields in the recurrence.
$carbon = new Carbon;
$carbon->subDays(4);
$recurrence = $this->getRandomRecurrence();
$recurrence->latest_date = null;
$recurrence->first_date = $carbon;
$recurrence->save();
$group = $this->getRandomWithdrawalGroup();
// overrule some fields in the recurrence to make it seem it hasnt fired yet.
$recurrence->latest_date = null;
$recurrence->save();
// mock classes
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$journalRepos = $this->mock(JournalRepositoryInterface::class);
$groupRepos = $this->mock(TransactionGroupRepositoryInterface::class);
$piggyFactory = $this->mock(PiggyBankFactory::class);
$piggyEventFactory = $this->mock(PiggyBankEventFactory::class);
// mocks:
$groupRepos->shouldReceive('setUser')->atLeast()->once();
$journalRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('getOccurrencesInRange')->atLeast()->once()->andReturn([$date]);
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(3);
$recurringRepos->shouldReceive('getPiggyBank')->atLeast()->once()->andReturnNull();
Preferences::shouldReceive('mark')->atLeast()->once();
// return data:
$recurringRepos->shouldReceive('getBudget')->atLeast()->once()->andReturnNull();
$recurringRepos->shouldReceive('getCategory')->atLeast()->once()->andReturnNull();
$recurringRepos->shouldReceive('getTags')->atLeast()->once()->andReturn([]);
// store journal
$groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($group);
//Event::assertDispatched(StoredTransactionGroup::class);
$job = new CreateRecurringTransactions($date);
$job->setForce(true);
$job->handle();
$this->assertEquals(1, $job->created);
$this->assertEquals(1, $job->executed);
$this->assertEquals(1, $job->submitted);
}
/**
* Submit one, but offer no occurrences.
*
* TODO there is a random element in this test that breaks the test.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingle(): void
{
Event::fake();
Log::info(sprintf('Now in test %s.', __METHOD__));
// mock classes
$date = new Carbon;
$date->subDays(4);
$recurrence = $this->getRandomRecurrence();
$recurrence->latest_date = null;
$recurrence->first_date = $date;
$recurrence->save();
Log::debug(sprintf('Test is going to use Recurrence #%d', $recurrence->id), $recurrence->toArray());
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$journalRepos = $this->mock(JournalRepositoryInterface::class);
$groupRepos = $this->mock(TransactionGroupRepositoryInterface::class);
$userRepos = $this->mock(UserRepositoryInterface::class);
// mocks:
$groupRepos->shouldReceive('setUser')->atLeast()->once();
$journalRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('getOccurrencesInRange')->atLeast()->once()->andReturn([]);
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(0);
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(1, $job->executed);
$this->assertEquals(1, $job->submitted);
}
/**
* Submit one, but has already fired today
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleFiredToday(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
// mock classes
$recurrence = $this->getRandomRecurrence();
$recurrence->latest_date = new Carbon;
$recurrence->save();
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(0);
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(1, $job->submitted);
$recurrence->latest_date = null;
$recurrence->save();
}
/**
* Submit one, but offer no occurrences.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleFuture(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
// mock classes
$future = new Carbon;
$future->addDays(4);
$recurrence = $this->getRandomRecurrence();
$recurrence->first_date = $future;
$recurrence->save();
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(0);
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(1, $job->submitted);
$recurrence->first_date = $date;
$recurrence->save();
}
/**
* Submit one, but it's inactive.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleInactive(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
// mock classes
$recurrence = $this->getRandomRecurrence();
$recurrence->active = false;
$recurrence->save();
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(1, $job->submitted);
$recurrence->active = true;
$recurrence->save();
}
/**
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleNotToday(): void
{
$date = new Carbon();
Event::fake();
Log::info(sprintf('Now in test %s.', __METHOD__));
$date = new Carbon();
$tomorrow = new Carbon();
$tomorrow->addDays(2);
@@ -526,6 +389,143 @@ class CreateRecurringTransactionsTest extends TestCase
}
/**
* Submit one, but it has fired enough times already.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleOccurrences(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
// mock classes
$recurrence = $this->getRandomRecurrence();
$recurrence->repetitions = 1;
$recurrence->save();
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(1);
Preferences::shouldReceive('mark')->atLeast()->once();
$date = new Carbon();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(1, $job->submitted);
$recurrence->repetitions = 0;
$recurrence->save();
}
/**
* Submit one, but should no longer run.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleOverDue(): void
{
Log::info(sprintf('Now in test %s.', __METHOD__));
// mock classes
$date = new Carbon();
$yesterday = clone $date;
$yesterday->subDays(3);
$recurrence = $this->getRandomRecurrence();
$recurrence->repeat_until = $yesterday;
$recurrence->save();
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$this->mock(JournalRepositoryInterface::class);
$this->mock(TransactionGroupRepositoryInterface::class);
// mocks:
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(0);
Preferences::shouldReceive('mark')->atLeast()->once();
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(0, $job->created);
$this->assertEquals(0, $job->executed);
$this->assertEquals(1, $job->submitted);
$recurrence->repeat_until = null;
$recurrence->save();
}
/**
* Submit one, offer occurence for today.
*
* @covers \FireflyIII\Jobs\CreateRecurringTransactions
*/
public function testSingleToday(): void
{
Event::fake();
$date = new Carbon();
$this->expectsEvents([StoredTransactionGroup::class]);
// mock classes
$carbon = new Carbon;
$carbon->subDays(4);
$recurrence = $this->getRandomRecurrence();
$recurrence->latest_date = null;
$recurrence->first_date = $carbon;
$recurrence->save();
$group = $this->getRandomWithdrawalGroup();
// overrule some fields in the recurrence to make it seem it hasnt fired yet.
$recurrence->latest_date = null;
$recurrence->save();
// mock classes
$recurringRepos = $this->mock(RecurringRepositoryInterface::class);
$journalRepos = $this->mock(JournalRepositoryInterface::class);
$groupRepos = $this->mock(TransactionGroupRepositoryInterface::class);
$piggyFactory = $this->mock(PiggyBankFactory::class);
$piggyEventFactory = $this->mock(PiggyBankEventFactory::class);
// mocks:
$groupRepos->shouldReceive('setUser')->atLeast()->once();
$journalRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('setUser')->atLeast()->once();
$recurringRepos->shouldReceive('getOccurrencesInRange')->atLeast()->once()->andReturn([$date]);
$recurringRepos->shouldReceive('getAll')->atLeast()->once()->andReturn(new Collection([$recurrence]));
$recurringRepos->shouldReceive('getJournalCount')->atLeast()->once()->andReturn(0);
$recurringRepos->shouldReceive('getPiggyBank')->atLeast()->once()->andReturnNull();
Preferences::shouldReceive('mark')->atLeast()->once();
// return data:
$recurringRepos->shouldReceive('getBudget')->atLeast()->once()->andReturnNull();
$recurringRepos->shouldReceive('getCategory')->atLeast()->once()->andReturnNull();
$recurringRepos->shouldReceive('getTags')->atLeast()->once()->andReturn([]);
// store journal
$groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($group);
//Event::assertDispatched(StoredTransactionGroup::class);
$job = new CreateRecurringTransactions($date);
$job->handle();
$this->assertEquals(1, $job->created);
$this->assertEquals(1, $job->executed);
$this->assertEquals(1, $job->submitted);
}
/**
* Submit one, offer occurence for today, with piggy
*
@@ -538,7 +538,7 @@ class CreateRecurringTransactionsTest extends TestCase
$this->expectsEvents([StoredTransactionGroup::class]);
$group = $this->getRandomWithdrawalGroup();
$group = $this->getRandomWithdrawalGroup();
$piggy = $this->getRandomPiggyBank();
// overrule some fields in the recurrence to make it seem it hasnt fired yet.

File diff suppressed because it is too large Load Diff

View File

@@ -25,6 +25,7 @@ namespace Tests\Unit\Middleware;
use FireflyIII\Http\Middleware\IsDemoUser;
use FireflyIII\Http\Middleware\StartFireflySession;
use FireflyIII\Repositories\User\UserRepositoryInterface;
use Log;
use Route;
use Symfony\Component\HttpFoundation\Response;
@@ -57,6 +58,10 @@ class IsDemoUserTest extends TestCase
*/
public function testMiddlewareAuthenticated(): void
{
$userRepos =$this->mock(UserRepositoryInterface::class);
$userRepos->shouldReceive('hasRole')->atLeast()->once()->andReturnFalse();
$this->be($this->user());
$response = $this->get('/_test/is-demo');
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
@@ -67,6 +72,10 @@ class IsDemoUserTest extends TestCase
*/
public function testMiddlewareIsDemoUser(): void
{
$userRepos =$this->mock(UserRepositoryInterface::class);
$userRepos->shouldReceive('hasRole')->atLeast()->once()->andReturnTrue();
$this->be($this->demoUser());
$response = $this->get('/_test/is-demo');
$this->assertEquals(Response::HTTP_FOUND, $response->getStatusCode());

View File

@@ -24,12 +24,16 @@ declare(strict_types=1);
namespace Tests\Unit\Middleware;
use FireflyIII\Http\Middleware\Range;
use FireflyIII\Models\Preference;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Log;
use Route;
use Symfony\Component\HttpFoundation\Response;
use Tests\TestCase;
use Preferences;
use Mockery;
use Amount;
/**
* Class RangeTest
@@ -61,6 +65,27 @@ class RangeTest extends TestCase
$repository = $this->mock(JournalRepositoryInterface::class);
$repository->shouldReceive('firstNull')->andReturn(TransactionJournal::first());
$this->withoutExceptionHandling();
$viewPreference = new Preference;
$viewPreference->data = '1M';
$langPreference = new Preference;
$langPreference->data = 'en_US';
$currPreference = new Preference;
$currPreference->data = 'EUR';
$listPreference = new Preference;
$listPreference->data = 10;
Preferences::shouldReceive('get')->withArgs(['viewRange','1M'])->atLeast()->once()->andReturn($viewPreference);
Preferences::shouldReceive('get')->withArgs(['language','en_US'])->atLeast()->once()->andReturn($langPreference);
Preferences::shouldReceive('get')->withArgs(['list-length',10])->atLeast()->once()->andReturn($listPreference);
Amount::shouldReceive('getDefaultCurrency')->atLeast()->once()->andReturn($this->getEuro());
//Preferences::shouldReceive('lastActivity')->atLeast()->once()->andReturn('md512345');
$this->be($this->user());
$response = $this->get('/_test/range');
$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());

View File

@@ -55,6 +55,7 @@ class AccountDestroyServiceTest extends TestCase
public function testDestroyBasic(): void
{
$this->mock(RecurrenceDestroyService::class);
$this->mock(JournalDestroyService::class);
$account = Account::create(
['user_id' => $this->user()->id, 'account_type_id' => 1, 'name' => 'Some name #' . $this->randomInt(),
'virtual_balance' => '0', 'iban' => null, 'active' => true]
@@ -73,6 +74,7 @@ class AccountDestroyServiceTest extends TestCase
public function testDestroyWithRecurrence(): void
{
$recService = $this->mock(RecurrenceDestroyService::class);
$this->mock(JournalDestroyService::class);
$account = Account::create(
['user_id' => $this->user()->id, 'account_type_id' => 1, 'name' => 'Some name #' . $this->randomInt(),
'virtual_balance' => '0', 'iban' => null, 'active' => true]
@@ -108,6 +110,7 @@ class AccountDestroyServiceTest extends TestCase
public function testDestroyDontMove(): void
{
$this->mock(RecurrenceDestroyService::class);
$this->mock(JournalDestroyService::class);
// create objects:
$account = Account::create(
['user_id' => $this->user()->id, 'account_type_id' => 1, 'name' => 'Some name #' . $this->randomInt(),
@@ -132,6 +135,7 @@ class AccountDestroyServiceTest extends TestCase
public function testDestroyMove(): void
{
$this->mock(RecurrenceDestroyService::class);
$this->mock(JournalDestroyService::class);
$account = Account::create(
['user_id' => $this->user()->id, 'account_type_id' => 1, 'name' => 'Some name #' . $this->randomInt(),
'virtual_balance' => '0', 'iban' => null, 'active' => true]

View File

@@ -25,6 +25,8 @@ namespace Tests\Unit\Services\Internal\Update;
use Carbon\Carbon;
use FireflyIII\Factory\AccountMetaFactory;
use FireflyIII\Factory\TransactionCurrencyFactory;
use FireflyIII\Models\Account;
use FireflyIII\Models\Note;
use FireflyIII\Models\Transaction;
@@ -59,9 +61,15 @@ class AccountUpdateServiceTest extends TestCase
*/
public function testDeleteExistingIB(): void
{
$group = $this->getRandomWithdrawalGroup();
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$destroySerice = $this->mock(TransactionGroupDestroyService::class);
$group = $this->getRandomWithdrawalGroup();
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$destroySerice = $this->mock(TransactionGroupDestroyService::class);
$currencyFactory = $this->mock(TransactionCurrencyFactory::class);
$metaFactory = $this->mock(AccountMetaFactory::class);
$currencyFactory->shouldReceive('find')->atLeast()->once()->andReturn($this->getEuro());
$metaFactory->shouldReceive('crud');
$accountRepos->shouldReceive('setUser')->atLeast()->once();
$accountRepos->shouldReceive('getOpeningBalanceGroup')->atLeast()->once()->andReturn($group);
$destroySerice->shouldReceive('destroy')->atLeast()->once();
@@ -93,6 +101,14 @@ class AccountUpdateServiceTest extends TestCase
*/
public function testUpdateBasic(): void
{
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$this->mock(TransactionCurrencyFactory::class);
$metaFactory = $this->mock(AccountMetaFactory::class);
$accountRepos->shouldReceive('setUser')->atLeast()->once();
$metaFactory->shouldReceive('crud');
$accountRepos->shouldReceive('getOpeningBalanceGroup')->atLeast()->once()->andReturnNull();
/** @var Account $account */
$account = $this->user()->accounts()->first();
$data = [
@@ -116,6 +132,14 @@ class AccountUpdateServiceTest extends TestCase
*/
public function testUpdateBasicEmptyNote(): void
{
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$this->mock(TransactionCurrencyFactory::class);
$metaFactory = $this->mock(AccountMetaFactory::class);
$accountRepos->shouldReceive('getOpeningBalanceGroup')->atLeast()->once()->andReturnNull();
$accountRepos->shouldReceive('setUser')->atLeast()->once();
$metaFactory->shouldReceive('crud');
/** @var Account $account */
$account = $this->user()->accounts()->first();
$data = [
@@ -141,6 +165,14 @@ class AccountUpdateServiceTest extends TestCase
*/
public function testUpdateBasicExistingNote(): void
{
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$this->mock(TransactionCurrencyFactory::class);
$metaFactory = $this->mock(AccountMetaFactory::class);
$metaFactory->shouldReceive('crud');
$accountRepos->shouldReceive('setUser')->atLeast()->once();
$accountRepos->shouldReceive('getOpeningBalanceGroup')->atLeast()->once()->andReturnNull();
/** @var Account $account */
$account = $this->user()->accounts()->first();
$note = new Note;
@@ -176,13 +208,18 @@ class AccountUpdateServiceTest extends TestCase
$destroySerice = $this->mock(TransactionGroupDestroyService::class);
$group = $this->getRandomWithdrawalGroup();
$currencyFactory = $this->mock(TransactionCurrencyFactory::class);
$metaFactory = $this->mock(AccountMetaFactory::class);
// make sure one transaction has the account as the asset.
$journal = $group->transactionJournals()->first();
$account = $journal->transactions()->first()->account;
$metaFactory->shouldReceive('crud');
$currencyFactory->shouldReceive('find')->atLeast()->once()->andReturn($this->getEuro());
$accountRepos->shouldReceive('setUser')->atLeast()->once();
$accountRepos->shouldReceive('getOpeningBalanceGroup')->atLeast()->once()->andReturn($group);
$data = [
'name' => 'Some new name #' . $this->randomInt(),
'active' => true,
@@ -213,7 +250,13 @@ class AccountUpdateServiceTest extends TestCase
{
$deleteService = $this->mock(JournalDestroyService::class);
//$deleteService->shouldReceive('destroy')->once();
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$currencyFactory = $this->mock(TransactionCurrencyFactory::class);
$metaFactory = $this->mock(AccountMetaFactory::class);
$accountRepos->shouldReceive('setUser')->atLeast()->once();
$currencyFactory->shouldReceive('find')->atLeast()->once()->andReturn($this->getEuro());
$metaFactory->shouldReceive('crud');
/** @var Account $account */
$account = Account::create(

View File

@@ -63,6 +63,8 @@ class ConfigureMappingHandlerTest extends TestCase
public function testApplySpecifics(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$importRepos->shouldReceive('setUser')->once();
$job = new ImportJob;
$job->user_id = $this->user()->id;
@@ -145,6 +147,7 @@ class ConfigureMappingHandlerTest extends TestCase
// mock repos
$repository = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
// run configure mapping handler.
// expect specific results:
@@ -165,6 +168,7 @@ class ConfigureMappingHandlerTest extends TestCase
public function testDoColumnConfig(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$importRepos->shouldReceive('setUser')->once();
$job = new ImportJob;
$job->user_id = $this->user()->id;
@@ -230,6 +234,8 @@ class ConfigureMappingHandlerTest extends TestCase
public function testDoMapOfColumn(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$importRepos->shouldReceive('setUser')->once();
$job = new ImportJob;
$job->user_id = $this->user()->id;
@@ -343,6 +349,8 @@ class ConfigureMappingHandlerTest extends TestCase
public function testGetPreProcessorName(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$importRepos->shouldReceive('setUser')->once();
$job = new ImportJob;
$job->user_id = $this->user()->id;
@@ -422,6 +430,8 @@ class ConfigureMappingHandlerTest extends TestCase
public function testGetValuesForMapping(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$importRepos->shouldReceive('setUser')->once();
// create a reader to use in method.
// 5 columns, of which #4 (index 3) is budget-id
@@ -490,6 +500,7 @@ class ConfigureMappingHandlerTest extends TestCase
*/
public function testSanitizeColumnName(): void
{
$helper = $this->mock(AttachmentHelperInterface::class);
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$importRepos->shouldReceive('setUser')->once();
$job = new ImportJob;

View File

@@ -61,7 +61,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testConfigurationCompleteBasic(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$config = [
'column-count' => 5,
@@ -84,6 +84,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testConfigurationCompleteForeign(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$config = [
'column-count' => 5,
@@ -110,6 +111,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testConfigurationCompleteNoAmount(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$config = [
'column-count' => 5,
'column-roles' => [
@@ -173,6 +175,7 @@ class ConfigureRolesHandlerTest extends TestCase
];
$repository = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$repository->shouldReceive('setUser')->once();
$repository->shouldReceive('setStage')->once()->withArgs([Mockery::any(), 'ready_to_run']);
$repository->shouldReceive('setStage')->once()->withArgs([Mockery::any(), 'map']);
@@ -189,6 +192,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testGetExampleFromLine(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$lines = [
['one', 'two', '', 'three'],
['four', 'five', '', 'six'],
@@ -212,6 +216,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testGetExamplesFromFile(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$importRepos->shouldReceive('setUser')->once();
$importRepos->shouldReceive('setConfiguration')->once()
->withAnyArgs();
@@ -255,6 +260,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testGetHeadersHas(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
//$importRepos->shouldReceive('setUser')->once();
// create a reader to use in method.
// 5 columns, of which #4 (index 3) is budget-id
@@ -278,6 +284,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testGetHeadersNone(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
// create a reader to use in method.
// 5 columns, of which #4 (index 3) is budget-id
@@ -418,7 +425,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testIgnoreUnmappableColumns(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$config = [
'column-count' => 5,
'column-roles' => [
@@ -463,6 +470,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testIsMappingNecessaryNo(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$config = [
'column-do-mapping' => [false, false, false],
@@ -478,6 +486,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testIsMappingNecessaryYes(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$config = [
'column-do-mapping' => [false, true, false, false],
@@ -493,6 +502,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testMakeExamplesUnique(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$lines = [
['one', 'two', '', 'three'],
@@ -521,6 +531,7 @@ class ConfigureRolesHandlerTest extends TestCase
public function testProcessSpecifics(): void
{
$importRepos = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$line = [];
$config = [
@@ -555,6 +566,8 @@ class ConfigureRolesHandlerTest extends TestCase
$job->save();
$repository = $this->mock(ImportJobRepositoryInterface::class);
$helper = $this->mock(AttachmentHelperInterface::class);
$repository->shouldReceive('setUser');
$repository->shouldReceive('setConfiguration')->once()
->withArgs([Mockery::any(), ['column-count' => 0]]);

View File

@@ -162,7 +162,9 @@ class ConfigureUploadHandlerTest extends TestCase
$job->save();
$repository = $this->mock(ImportJobRepositoryInterface::class);
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$repository->shouldReceive('setUser');
$accountRepos->shouldReceive('setUser');
$repository->shouldReceive('setConfiguration')->once()->withArgs([Mockery::any(), ['date-format' => 'Ymd']]);
$handler = new ConfigureUploadHandler;
@@ -181,6 +183,8 @@ class ConfigureUploadHandlerTest extends TestCase
*/
public function testGetSpecifics(): void
{
$accountRepos = $this->mock(AccountRepositoryInterface::class);
$array = [
'specifics' => [
'IngDescription', 'BadFakeNewsThing',

View File

@@ -475,7 +475,7 @@ class ImportTransactionTest extends TestCase
$importTransaction = new ImportTransaction;
$importTransaction->amountDebit = '1.01';
try {
$this->assertEquals('-1.01', $importTransaction->calculateAmount());
$this->assertEquals('-1.010000000000', $importTransaction->calculateAmount());
} catch (FireflyException $e) {
$this->assertTrue(false, $e->getMessage());
}
@@ -507,7 +507,7 @@ class ImportTransactionTest extends TestCase
$importTransaction->amount = '2.99';
$importTransaction->modifiers['generic-debit-credit'] = 'D';
try {
$this->assertEquals('-2.99', $importTransaction->calculateAmount());
$this->assertEquals('-2.990000000000', $importTransaction->calculateAmount());
} catch (FireflyException $e) {
$this->assertTrue(false, $e->getMessage());
}
@@ -523,7 +523,7 @@ class ImportTransactionTest extends TestCase
$importTransaction = new ImportTransaction;
$importTransaction->amountNegated = '-1.56';
try {
$this->assertEquals('1.56', $importTransaction->calculateAmount());
$this->assertEquals('1.560000000000', $importTransaction->calculateAmount());
} catch (FireflyException $e) {
$this->assertTrue(false, $e->getMessage());
}
@@ -539,7 +539,7 @@ class ImportTransactionTest extends TestCase
$importTransaction = new ImportTransaction;
$importTransaction->amountNegated = '1.56';
try {
$this->assertEquals('-1.56', $importTransaction->calculateAmount());
$this->assertEquals('-1.560000000000', $importTransaction->calculateAmount());
} catch (FireflyException $e) {
$this->assertTrue(false, $e->getMessage());
}
@@ -556,7 +556,7 @@ class ImportTransactionTest extends TestCase
$importTransaction->amount = '-2.17';
$importTransaction->modifiers['rabo-debit-credit'] = 'C';
try {
$this->assertEquals('2.17', $importTransaction->calculateAmount());
$this->assertEquals('2.170000000000', $importTransaction->calculateAmount());
} catch (FireflyException $e) {
$this->assertTrue(false, $e->getMessage());
}
@@ -643,7 +643,7 @@ class ImportTransactionTest extends TestCase
$importTransaction = new ImportTransaction;
$importTransaction->foreignAmount = '6.77';
$importTransaction->modifiers['generic-debit-credit'] = 'D';
$this->assertEquals('-6.77', $importTransaction->calculateForeignAmount());
$this->assertEquals('-6.770000000000', $importTransaction->calculateForeignAmount());
}
/**
@@ -656,7 +656,7 @@ class ImportTransactionTest extends TestCase
$importTransaction = new ImportTransaction;
$importTransaction->foreignAmount = '-5.77';
$importTransaction->modifiers['generic-debit-credit'] = 'C';
$this->assertEquals('5.77', $importTransaction->calculateForeignAmount());
$this->assertEquals('5.770000000000', $importTransaction->calculateForeignAmount());
}
/**

View File

@@ -25,13 +25,11 @@ namespace Tests\Unit\Transformers;
use Carbon\Carbon;
use FireflyIII\Models\Category;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\Repositories\Category\OperationsRepositoryInterface;
use FireflyIII\Transformers\CategoryTransformer;
use Illuminate\Support\Collection;
use Log;
use Symfony\Component\HttpFoundation\ParameterBag;
use Tests\Support\TestDataTrait;
use Tests\TestCase;
@@ -43,6 +41,8 @@ use Tests\TestCase;
*/
class CategoryTransformerTest extends TestCase
{
use TestDataTrait;
/**
*
*/
@@ -59,8 +59,8 @@ class CategoryTransformerTest extends TestCase
*/
public function testBasic(): void
{
$repository = $this->mock(CategoryRepositoryInterface::class);
$repository->shouldReceive('setUser')->once();
$opsRepository = $this->mock(OperationsRepositoryInterface::class);
$opsRepository->shouldReceive('setUser')->once();
/** @var Category $category */
$category = Category::first();
@@ -80,35 +80,20 @@ class CategoryTransformerTest extends TestCase
*/
public function testWithDates(): void
{
$repository = $this->mock(CategoryRepositoryInterface::class);
$repository->shouldReceive('setUser')->once();
$opsRepository = $this->mock(OperationsRepositoryInterface::class);
$opsRepository->shouldReceive('setUser')->once();
$parameters = new ParameterBag;
$parameters->set('start', new Carbon('2018-01-01'));
$parameters->set('end', new Carbon('2018-01-31'));
// mock some objects for the spent/earned lists.
$expense = [
'currency_id' => 1,
'currency_code' => 'EUR',
'currency_symbol' => '€',
'currency_decimal_places' => 2,
'amount' => -100,
];
$income = [
'currency_id' => 1,
'currency_code' => 'EUR',
'currency_symbol' => '€',
'currency_decimal_places' => 2,
'amount' => 100,
];
$income = $this->categorySumIncome();
$expense = $this->categorySumExpenses();
$opsRepository->shouldReceive('sumIncome')
->atLeast()->once()->andReturn($income);
$incomeCollection = [$income];
$expenseCollection = [$expense];
$repository->shouldReceive('spentInPeriod')->atLeast()->once()->andReturn($expenseCollection);
$repository->shouldReceive('earnedInPeriod')->atLeast()->once()->andReturn($incomeCollection);
$opsRepository->shouldReceive('sumExpenses')
->atLeast()->once()->andReturn($expense);
/** @var Category $category */
$category = Category::first();
@@ -117,27 +102,5 @@ class CategoryTransformerTest extends TestCase
$result = $transformer->transform($category);
$this->assertEquals($category->name, $result['name']);
$this->assertEquals(
[
[
'currency_id' => 1,
'currency_code' => 'EUR',
'currency_symbol' => '€',
'currency_decimal_places' => 2,
'amount' => -100,
],
], $result['spent']
);
$this->assertEquals(
[
[
'currency_id' => 1,
'currency_code' => 'EUR',
'currency_symbol' => '€',
'currency_decimal_places' => 2,
'amount' => 100,
],
], $result['earned']
);
}
}

View File

@@ -25,11 +25,13 @@ namespace Tests\Unit\Transformers;
use Carbon\Carbon;
use FireflyIII\Factory\CategoryFactory;
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface;
use FireflyIII\Transformers\RecurrenceTransformer;
use FireflyIII\Transformers\RuleGroupTransformer;
use FireflyIII\Transformers\RuleTransformer;
use FireflyIII\Transformers\TagTransformer;
use Log;
use Mockery;
use Symfony\Component\HttpFoundation\ParameterBag;
@@ -59,19 +61,21 @@ class RecurrenceTransformerTest extends TestCase
public function testBasic(): void
{
$recurrenceRepos = $this->mock(RecurringRepositoryInterface::class);
$billRepos = $this->mock(BillRepositoryInterface::class);
$piggyRepos = $this->mock(PiggyBankRepositoryInterface::class);
$factory = $this->mock(CategoryFactory::class);
$budgetRepos = $this->mock(BudgetRepositoryInterface::class);
$category = $this->getRandomCategory();
$budget = $this->getRandomBudget();
$piggy = $this->getRandomPiggyBank();
$bill = $this->getRandomBill();
$ranges = [new Carbon];
$recurrence = $this->getRandomRecurrence();
$ruleGroupTransformer = $this->mock(RuleGroupTransformer::class);
$ruleTransformer = $this->mock(RuleTransformer::class);
$tagTransformer = $this->mock(TagTransformer::class);
$category = $this->getRandomCategory();
$budget = $this->getRandomBudget();
$piggy = $this->getRandomPiggyBank();
$ranges = [new Carbon];
$recurrence = $this->getRandomRecurrence();
// mock calls:
$recurrenceRepos->shouldReceive('setUser')->atLeast()->once();
$billRepos->shouldReceive('setUser')->atLeast()->once();
$piggyRepos->shouldReceive('setUser')->atLeast()->once();
$factory->shouldReceive('setUser')->atLeast()->once();
$budgetRepos->shouldReceive('setUser')->atLeast()->once();
@@ -80,10 +84,9 @@ class RecurrenceTransformerTest extends TestCase
$recurrenceRepos->shouldReceive('getNoteText')->once()->andReturn('Hi there');
$recurrenceRepos->shouldReceive('repetitionDescription')->once()->andReturn('Rep descr');
$recurrenceRepos->shouldReceive('getXOccurrences')->andReturn($ranges)->atLeast()->once();
$factory->shouldReceive('findOrCreate')->atLeast()->once()->withArgs([null,Mockery::any()])->andReturn($category);
$factory->shouldReceive('findOrCreate')->atLeast()->once()->withArgs([null, Mockery::any()])->andReturn($category);
$budgetRepos->shouldReceive('findNull')->atLeast()->once()->andReturn($budget);
$piggyRepos->shouldReceive('findNull')->andReturn($piggy);
$billRepos->shouldReceive('find')->andReturn($bill);
// basic transformation:
@@ -95,7 +98,7 @@ class RecurrenceTransformerTest extends TestCase
$this->assertEquals($recurrence->id, $result['id']);
//$this->assertEquals('deposit', $result['transaction_type']);
$this->assertEquals(true, $result['apply_rules']);
$this->assertEquals('Rep descr', $result['recurrence_repetitions'][0]['description']);
$this->assertEquals('Rep descr', $result['repetitions'][0]['description']);
}

View File

@@ -53,13 +53,17 @@ class RuleTransformerTest extends TestCase
$repository = $this->mock(RuleRepositoryInterface::class);
/** @var RuleTrigger $ruleTrigger */
$ruleTrigger = RuleTrigger::first();
$ruleTrigger = RuleTrigger::where('trigger_type', '!=', 'user_action')->first();
/** @var RuleTrigger $ruleTrigger */
$moment = RuleTrigger::where('trigger_type', '=', 'user_action')->first();
/** @var RuleAction $ruleAction */
$ruleAction = RuleAction::first();
// mock stuff
$repository->shouldReceive('setUser')->atLeast()->once();
$repository->shouldReceive('getRuleActions')->atLeast()->once()->andReturn(new Collection([$ruleAction]));
$repository->shouldReceive('getRuleTriggers')->atLeast()->once()->andReturn(new Collection([$ruleTrigger]));
$repository->shouldReceive('getRuleTriggers')->atLeast()->once()->andReturn(new Collection([$moment]), new Collection([$ruleTrigger]));
$transformer = app(RuleTransformer::class);
$transformer->setParameters(new ParameterBag);