mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-12 15:35:15 +00:00
Improve test coverage.
This commit is contained in:
@@ -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))
|
||||
|
@@ -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);
|
||||
|
@@ -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.')
|
||||
|
@@ -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);
|
||||
|
@@ -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')
|
||||
|
@@ -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(
|
||||
[
|
||||
|
@@ -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();
|
||||
|
||||
|
@@ -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).')
|
||||
|
@@ -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;
|
||||
|
@@ -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).')
|
||||
|
@@ -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();
|
||||
|
@@ -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')
|
||||
|
@@ -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
@@ -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));
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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();
|
||||
|
@@ -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) {
|
||||
|
@@ -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');
|
||||
|
@@ -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();
|
||||
|
@@ -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');
|
||||
|
@@ -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',
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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
@@ -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
@@ -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());
|
||||
|
@@ -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());
|
||||
|
@@ -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]
|
||||
|
@@ -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(
|
||||
|
@@ -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;
|
||||
|
@@ -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]]);
|
||||
|
@@ -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',
|
||||
|
@@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@@ -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']);
|
||||
|
||||
|
||||
}
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user