From dcd6a8d79f10dc9c7d201b680d7275d57482bfa4 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 22 Dec 2019 07:45:30 +0100 Subject: [PATCH] Remove import tests --- .../Import/Converter/AmountCreditTest.php | 199 --- .../Unit/Import/Converter/AmountDebitTest.php | 198 --- .../Import/Converter/AmountNegatedTest.php | 191 --- tests/Unit/Import/Converter/AmountTest.php | 203 --- .../Import/Converter/BankDebitCreditTest.php | 98 -- .../BunqJobConfigurationTest.php | 183 --- .../FakeJobConfigurationTest.php | 641 --------- .../FileJobConfigurationTest.php | 404 ------ .../FinTSJobConfigurationTest.php | 172 --- .../SpectreJobConfigurationTest.php | 217 --- .../YnabJobConfigurationTest.php | 184 --- .../Import/Mapper/AssetAccountIbansTest.php | 96 -- .../Unit/Import/Mapper/AssetAccountsTest.php | 91 -- tests/Unit/Import/Mapper/BillsTest.php | 81 -- tests/Unit/Import/Mapper/BudgetsTest.php | 79 -- tests/Unit/Import/Mapper/CategoriesTest.php | 80 -- .../Mapper/OpposingAccountIbansTest.php | 97 -- .../Import/Mapper/OpposingAccountsTest.php | 94 -- tests/Unit/Import/Mapper/TagsTest.php | 79 -- .../Mapper/TransactionCurrenciesTest.php | 81 -- .../Import/MapperPreProcess/TagsCommaTest.php | 62 - .../Import/MapperPreProcess/TagsSpaceTest.php | 61 - .../Prerequisites/BunqPrerequisitesTest.php | 232 ---- .../Prerequisites/FakePrerequisitesTest.php | 187 --- .../SpectrePrerequisitesTest.php | 259 ---- .../Prerequisites/YnabPrerequisitesTest.php | 166 --- tests/Unit/Import/Routine/BunqRoutineTest.php | 176 --- tests/Unit/Import/Routine/FakeRoutineTest.php | 163 --- tests/Unit/Import/Routine/FileRoutineTest.php | 103 -- .../Unit/Import/Routine/FinTSRoutineTest.php | 92 -- .../Import/Routine/SpectreRoutineTest.php | 243 ---- tests/Unit/Import/Routine/YnabRoutineTest.php | 321 ----- .../Specifics/AbnAmroDescriptionTest.php | 190 --- tests/Unit/Import/Specifics/BelfiusTest.php | 92 -- .../Unit/Import/Specifics/IngBelgiumTest.php | 135 -- .../Import/Specifics/IngDescriptionTest.php | 153 -- .../Import/Specifics/PresidentsChoiceTest.php | 76 - .../Import/Specifics/SnsDescriptionTest.php | 86 -- .../Import/Storage/ImportArrayStorageTest.php | 1233 ----------------- 39 files changed, 7498 deletions(-) delete mode 100644 tests/Unit/Import/Converter/AmountCreditTest.php delete mode 100644 tests/Unit/Import/Converter/AmountDebitTest.php delete mode 100644 tests/Unit/Import/Converter/AmountNegatedTest.php delete mode 100644 tests/Unit/Import/Converter/AmountTest.php delete mode 100644 tests/Unit/Import/Converter/BankDebitCreditTest.php delete mode 100644 tests/Unit/Import/JobConfiguration/BunqJobConfigurationTest.php delete mode 100644 tests/Unit/Import/JobConfiguration/FakeJobConfigurationTest.php delete mode 100644 tests/Unit/Import/JobConfiguration/FileJobConfigurationTest.php delete mode 100644 tests/Unit/Import/JobConfiguration/FinTSJobConfigurationTest.php delete mode 100644 tests/Unit/Import/JobConfiguration/SpectreJobConfigurationTest.php delete mode 100644 tests/Unit/Import/JobConfiguration/YnabJobConfigurationTest.php delete mode 100644 tests/Unit/Import/Mapper/AssetAccountIbansTest.php delete mode 100644 tests/Unit/Import/Mapper/AssetAccountsTest.php delete mode 100644 tests/Unit/Import/Mapper/BillsTest.php delete mode 100644 tests/Unit/Import/Mapper/BudgetsTest.php delete mode 100644 tests/Unit/Import/Mapper/CategoriesTest.php delete mode 100644 tests/Unit/Import/Mapper/OpposingAccountIbansTest.php delete mode 100644 tests/Unit/Import/Mapper/OpposingAccountsTest.php delete mode 100644 tests/Unit/Import/Mapper/TagsTest.php delete mode 100644 tests/Unit/Import/Mapper/TransactionCurrenciesTest.php delete mode 100644 tests/Unit/Import/MapperPreProcess/TagsCommaTest.php delete mode 100644 tests/Unit/Import/MapperPreProcess/TagsSpaceTest.php delete mode 100644 tests/Unit/Import/Prerequisites/BunqPrerequisitesTest.php delete mode 100644 tests/Unit/Import/Prerequisites/FakePrerequisitesTest.php delete mode 100644 tests/Unit/Import/Prerequisites/SpectrePrerequisitesTest.php delete mode 100644 tests/Unit/Import/Prerequisites/YnabPrerequisitesTest.php delete mode 100644 tests/Unit/Import/Routine/BunqRoutineTest.php delete mode 100644 tests/Unit/Import/Routine/FakeRoutineTest.php delete mode 100644 tests/Unit/Import/Routine/FileRoutineTest.php delete mode 100644 tests/Unit/Import/Routine/FinTSRoutineTest.php delete mode 100644 tests/Unit/Import/Routine/SpectreRoutineTest.php delete mode 100644 tests/Unit/Import/Routine/YnabRoutineTest.php delete mode 100644 tests/Unit/Import/Specifics/AbnAmroDescriptionTest.php delete mode 100644 tests/Unit/Import/Specifics/BelfiusTest.php delete mode 100644 tests/Unit/Import/Specifics/IngBelgiumTest.php delete mode 100644 tests/Unit/Import/Specifics/IngDescriptionTest.php delete mode 100644 tests/Unit/Import/Specifics/PresidentsChoiceTest.php delete mode 100644 tests/Unit/Import/Specifics/SnsDescriptionTest.php delete mode 100644 tests/Unit/Import/Storage/ImportArrayStorageTest.php diff --git a/tests/Unit/Import/Converter/AmountCreditTest.php b/tests/Unit/Import/Converter/AmountCreditTest.php deleted file mode 100644 index 277dcfefa8..0000000000 --- a/tests/Unit/Import/Converter/AmountCreditTest.php +++ /dev/null @@ -1,199 +0,0 @@ -. - */ -declare(strict_types=1); - -namespace Tests\Unit\Import\Converter; - -use FireflyIII\Import\Converter\AmountCredit; -use Log; -use Tests\TestCase; - -/** - * Class AmountCreditTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class AmountCreditTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Converter\AmountCredit - */ - public function testConvert(): void - { - $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', - // 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', - '22.163644567898' => '22.163644567898', - '22.1636445670069' => '22.1636445670069', - // 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', - '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.349183230000', - '0.208' => '0.208', - '-0.15' => '0.150000000000', - '-0.03881677' => '0.038816770000', - '0.33' => '0.33', - '-0.1' => '0.100000000000', - '0.01124' => '0.01124', - '-0.01124' => '0.011240000000', - '0.115' => '0.115', - '-0.115' => '0.115000000000', - '1.33' => '1.33', - '$1.23' => '1.23', - '€1,44' => '1.44', - '(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', - - ]; - foreach ($values as $value => $expected) { - $converter = new AmountCredit; - $result = $converter->convert($value); - $this->assertEquals($expected, $result, sprintf('The original value was %s, expected was %s', $value, $expected)); - } - } - - /** - * @covers \FireflyIII\Import\Converter\AmountCredit - */ - public function testConvertNull(): void - { - $converter = new AmountCredit; - $result = $converter->convert(null); - $this->assertEquals('0', $result); - } -} diff --git a/tests/Unit/Import/Converter/AmountDebitTest.php b/tests/Unit/Import/Converter/AmountDebitTest.php deleted file mode 100644 index 3384227a70..0000000000 --- a/tests/Unit/Import/Converter/AmountDebitTest.php +++ /dev/null @@ -1,198 +0,0 @@ -. - */ -declare(strict_types=1); - -namespace Tests\Unit\Import\Converter; - -use FireflyIII\Import\Converter\AmountDebit; -use Log; -use Tests\TestCase; - -/** - * Class AmountDebitTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class AmountDebitTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Converter\AmountDebit - */ - public function testConvert(): void - { - $values = [ - - '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.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.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.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.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; - $result = $converter->convert($value); - $this->assertEquals($expected, $result, sprintf('The original value was %s', $value)); - } - } - - /** - * @covers \FireflyIII\Import\Converter\AmountDebit - */ - public function testConvertNull(): void - { - $converter = new AmountDebit; - $result = $converter->convert(null); - $this->assertEquals('0.000000000000', $result); - } -} diff --git a/tests/Unit/Import/Converter/AmountNegatedTest.php b/tests/Unit/Import/Converter/AmountNegatedTest.php deleted file mode 100644 index 793c5c167b..0000000000 --- a/tests/Unit/Import/Converter/AmountNegatedTest.php +++ /dev/null @@ -1,191 +0,0 @@ -. - */ -declare(strict_types=1); - -namespace Tests\Unit\Import\Converter; - -use FireflyIII\Import\Converter\AmountNegated; -use Tests\TestCase; - -/** - * Class AmountNegatedTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class AmountNegatedTest extends TestCase -{ - /** - * @covers \FireflyIII\Import\Converter\AmountNegated - */ - public function testConvert(): void - { - $values = [ - - '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.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.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.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.038816770000', - '--0.33' => '-0.330000000000', - '--$1.23' => '-1.230000000000', - '--63 5212.4440' => '-635212.444000000000', - '--,2' => '-0.200000000000', - - ]; - foreach ($values as $value => $expected) { - $converter = new AmountNegated; - $result = $converter->convert($value); - $this->assertEquals($expected, $result, sprintf('The original value was %s, expected was %s', $value, $expected)); - } - } - - /** - * @covers \FireflyIII\Import\Converter\AmountNegated - */ - public function testConvertNull(): void - { - $converter = new AmountNegated; - $result = $converter->convert(null); - $this->assertEquals('0.000000000000', $result); - } -} diff --git a/tests/Unit/Import/Converter/AmountTest.php b/tests/Unit/Import/Converter/AmountTest.php deleted file mode 100644 index 3d9b6c439a..0000000000 --- a/tests/Unit/Import/Converter/AmountTest.php +++ /dev/null @@ -1,203 +0,0 @@ -. - */ -declare(strict_types=1); - -namespace Tests\Unit\Import\Converter; - -use FireflyIII\Import\Converter\Amount; -use Log; -use Tests\TestCase; - -/** - * Class AmountTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class AmountTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Converter\Amount - */ - public function testConvert(): void - { - $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', - // 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', - '22.163644567898' => '22.163644567898', - '22.1636445670069' => '22.1636445670069', - // 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', - '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', - - // 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', - - // Postbank (DE) tests - '1.000,00 €' => '1000.00', - '120,34 €' => '120.34', - '-120,34 €' => '-120.34', - '-1.000,00 €' => '-1000.00', - ]; - foreach ($values as $value => $expected) { - $converter = new Amount; - $result = $converter->convert($value); - $this->assertEquals($expected, $result, sprintf('The original value was "%s", returned was "%s"', $value, $result)); - } - } - - /** - * @covers \FireflyIII\Import\Converter\Amount - */ - public function testConvertNull(): void - { - $converter = new Amount; - $result = $converter->convert(null); - $this->assertEquals('0', $result); - } -} diff --git a/tests/Unit/Import/Converter/BankDebitCreditTest.php b/tests/Unit/Import/Converter/BankDebitCreditTest.php deleted file mode 100644 index 36a1720c6e..0000000000 --- a/tests/Unit/Import/Converter/BankDebitCreditTest.php +++ /dev/null @@ -1,98 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Converter; - -use FireflyIII\Import\Converter\BankDebitCredit; -use FireflyIII\Import\Converter\INGDebitCredit; -use Log; -use Tests\TestCase; - -/** - * - * Class BankDebitCreditTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class BankDebitCreditTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - /** - * @covers \FireflyIII\Import\Converter\BankDebitCredit - */ - public function testConvertA(): void - { - $converter = new BankDebitCredit; - $result = $converter->convert('A'); - $this->assertEquals(-1, $result); - } - - /** - * @covers \FireflyIII\Import\Converter\BankDebitCredit - */ - public function testConvertAf(): void - { - $converter = new BankDebitCredit; - $result = $converter->convert('Af'); - $this->assertEquals(-1, $result); - } - - /** - * @covers \FireflyIII\Import\Converter\BankDebitCredit - */ - public function testConvertAnything(): void - { - $converter = new BankDebitCredit; - $result = $converter->convert('9083jkdkj'); - $this->assertEquals(1, $result); - } - - /** - * @covers \FireflyIII\Import\Converter\BankDebitCredit - */ - public function testConvertBij(): void - { - $converter = new BankDebitCredit; - $result = $converter->convert('Bij'); - $this->assertEquals(1, $result); - } - - /** - * @covers \FireflyIII\Import\Converter\BankDebitCredit - */ - public function testConvertDebet(): void - { - $converter = new BankDebitCredit; - $result = $converter->convert('Debet'); - $this->assertEquals(-1, $result); - } -} diff --git a/tests/Unit/Import/JobConfiguration/BunqJobConfigurationTest.php b/tests/Unit/Import/JobConfiguration/BunqJobConfigurationTest.php deleted file mode 100644 index 3b96a89a0e..0000000000 --- a/tests/Unit/Import/JobConfiguration/BunqJobConfigurationTest.php +++ /dev/null @@ -1,183 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\JobConfiguration; - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\JobConfiguration\BunqJobConfiguration; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\JobConfiguration\Bunq\ChooseAccountsHandler; -use FireflyIII\Support\Import\JobConfiguration\Bunq\NewBunqJobHandler; -use Illuminate\Support\MessageBag; -use Log; -use Tests\TestCase; - -/** - * Class BunqJobConfigurationTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class BunqJobConfigurationTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\JobConfiguration\BunqJobConfiguration - */ - public function testConfigurationComplete(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'bunq_jc_A' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'bunq'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // expect "NewBunqJobHandler" to be created because job is new. - $handler = $this->mock(NewBunqJobHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('configurationComplete')->once()->andReturn(true); - - $config = new BunqJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertTrue($config->configurationComplete()); - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\BunqJobConfiguration - */ - public function testConfigureJob(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'bunq_jc_B' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'bunq'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - $configData = ['ssome' => 'values']; - $return = new MessageBag(); - $return->add('some', 'return message'); - - // expect "NewBunqJobHandler" to be created because job is in "do-authenticate". - $handler = $this->mock(NewBunqJobHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('configureJob')->once()->withArgs([$configData])->andReturn($return); - - $config = new BunqJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals($return, $config->configureJob($configData)); - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\BunqJobConfiguration - */ - public function testGetNextData(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'bunq_jc_C' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'bunq'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - $data = ['ssome' => 'values']; - - // Expect "NewBunqJobHandler" because of state. - $handler = $this->mock(NewBunqJobHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('getNextData')->once()->andReturn($data); - - $config = new BunqJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals($data, $config->getNextData()); - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\BunqJobConfiguration - */ - public function testGetNextViewAccount(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'bunq_jc_E' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'choose-accounts'; - $job->provider = 'bunq'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // expect "ChooseAccountsHandler" because of state. - $handler = $this->mock(ChooseAccountsHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('getNextView')->once()->andReturn('import.fake.view2'); - - $config = new BunqJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals('import.fake.view2', $config->getNextView()); - } - - -} diff --git a/tests/Unit/Import/JobConfiguration/FakeJobConfigurationTest.php b/tests/Unit/Import/JobConfiguration/FakeJobConfigurationTest.php deleted file mode 100644 index b53534f925..0000000000 --- a/tests/Unit/Import/JobConfiguration/FakeJobConfigurationTest.php +++ /dev/null @@ -1,641 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\JobConfiguration; - -use FireflyIII\Import\JobConfiguration\FakeJobConfiguration; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use Log; -use Mockery; -use Tests\TestCase; - -/** - * Class FakeJobConfigurationTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class FakeJobConfigurationTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * No config, job is new. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testCC(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'A_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - - // should be false: - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $this->assertFalse($configurator->configurationComplete()); - } - - /** - * No config, job is not new. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testCCAlbumFalse(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'B_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'needs_config'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // should be false: - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $this->assertFalse($configurator->configurationComplete()); - } - - /** - * Job only says to apply rules. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testCCApplyRules(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'C_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = [ - 'apply-rules' => true, - ]; - $job->save(); - - // should be false: - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $this->assertFalse($configurator->configurationComplete()); - } - - /** - * Job has album but wrong one. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testCCBadAlbum(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'D_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'config'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = [ - 'song' => 'golden years', - 'artist' => 'david bowie', - 'album' => 'some album', - 'apply-rules' => true, - ]; - $job->save(); - - // should be false: - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $this->assertFalse($configurator->configurationComplete()); - } - - /** - * Job has album + song, but bad content. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testCCBadInfo(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'E_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = [ - 'song' => 'some song', - 'artist' => 'david bowie', - 'apply-rules' => true, - ]; - $job->save(); - - // should be false: - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $this->assertFalse($configurator->configurationComplete()); - } - - /** - * Job has correct album - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testCCGoodAlbum(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'f_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'config'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = [ - 'song' => 'golden years', - 'artist' => 'david bowie', - 'album' => 'station to station', - 'apply-rules' => true, - ]; - $job->save(); - - // should be false: - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $this->assertTrue($configurator->configurationComplete()); - } - - /** - * Job has correct content for "new"! - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testCCGoodNewInfo(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'g_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = [ - 'song' => 'golden years', - 'artist' => 'david bowie', - 'apply-rules' => true, - ]; - $job->save(); - - // should be false: - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $this->assertTrue($configurator->configurationComplete()); - } - - /** - * Apply rules with submitted "false" - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testConfigureJobARFalse(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'h_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock repository: - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // data to submit: - $data = ['apply_rules' => 0]; - - // expect the config to update: - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setConfiguration') - ->withArgs([Mockery::any(), ['apply-rules' => false]])->once(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $messages = $configurator->configureJob($data); - $this->assertTrue($messages->has('some_key')); - } - - /** - * Apply rules with submitted "false" - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testConfigureJobARTrue(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'i_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock repository: - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // data to submit: - $data = ['apply_rules' => 1]; - - // expect the config to update: - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setConfiguration') - ->withArgs([Mockery::any(), ['apply-rules' => true]])->once(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $messages = $configurator->configureJob($data); - $this->assertTrue($messages->has('some_key')); - } - - /** - * Submit job with bad song. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testConfigureJobBadAlbum(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'j_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock repository: - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // data to submit: - $data = ['album' => 'Station to Bowie']; - - // expect the config to update: - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setConfiguration') - ->withArgs([Mockery::any(), []])->once(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $messages = $configurator->configureJob($data); - $this->assertTrue($messages->has('some_key')); - } - - /** - * Submit job with bad artist. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testConfigureJobBadArtist(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'k_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock repository: - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // data to submit: - $data = ['artist' => 'DaViD BoWXXXXXiE']; - - // expect the config to update: - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setConfiguration') - ->withArgs([Mockery::any(), []])->once(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $messages = $configurator->configureJob($data); - $this->assertTrue($messages->has('some_key')); - } - - /** - * Submit job with bad song. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testConfigureJobBadSong(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'l_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock repository: - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // data to submit: - $data = ['song' => 'Golden Bowie']; - - // expect the config to update: - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setConfiguration') - ->withArgs([Mockery::any(), []])->once(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $messages = $configurator->configureJob($data); - $this->assertTrue($messages->has('some_key')); - } - - /** - * Submit job with good album. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testConfigureJobGoodAlbum(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'm_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock repository: - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // data to submit: - $data = ['album' => 'Station to Station']; - - // expect the config to update: - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setConfiguration') - ->withArgs([Mockery::any(), ['album' => 'station to station']])->once(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $messages = $configurator->configureJob($data); - $this->assertTrue($messages->has('some_key')); - } - - /** - * Submit job with good artist. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testConfigureJobGoodArtist(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'n_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock repository: - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // data to submit: - $data = ['artist' => 'DaViD BoWiE']; - - // expect the config to update: - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setConfiguration') - ->withArgs([Mockery::any(), ['artist' => 'david bowie']])->once(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $messages = $configurator->configureJob($data); - $this->assertTrue($messages->has('some_key')); - } - - /** - * Submit job with good song. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testConfigureJobGoodSong(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'o_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock repository: - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // data to submit: - $data = ['song' => 'Golden Years']; - - // expect the config to update: - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setConfiguration') - ->withArgs([Mockery::any(), ['song' => 'golden years']])->once(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $messages = $configurator->configureJob($data); - $this->assertTrue($messages->has('some_key')); - } - - /** - * Have rules, have artist, have song, must ask album - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testGetNextViewAlbum(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'p_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'not_new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = ['apply-rules' => false, 'artist' => 'david bowie', 'song' => 'golden years']; - $job->save(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $view = $configurator->getNextView(); - $this->assertEquals('import.fake.enter-album', $view); - } - - /** - * Have rules, must ask artist - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testGetNextViewArtist(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'p_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = ['apply-rules' => false]; - $job->save(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $view = $configurator->getNextView(); - $this->assertEquals('import.fake.enter-artist', $view); - } - - /** - * With empty config, should return view for rules. - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testGetNextViewRules(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'p_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $view = $configurator->getNextView(); - $this->assertEquals('import.fake.apply-rules', $view); - } - - /** - * Have rules, have artist, must ask song - * - * @covers \FireflyIII\Import\JobConfiguration\FakeJobConfiguration - */ - public function testGetNextViewSong(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'p_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = ['apply-rules' => false, 'artist' => 'david bowie']; - $job->save(); - - // call configuration - $configurator = new FakeJobConfiguration; - $configurator->setImportJob($job); - $view = $configurator->getNextView(); - $this->assertEquals('import.fake.enter-song', $view); - } -} diff --git a/tests/Unit/Import/JobConfiguration/FileJobConfigurationTest.php b/tests/Unit/Import/JobConfiguration/FileJobConfigurationTest.php deleted file mode 100644 index 7b316720ba..0000000000 --- a/tests/Unit/Import/JobConfiguration/FileJobConfigurationTest.php +++ /dev/null @@ -1,404 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\JobConfiguration; - - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\JobConfiguration\FileJobConfiguration; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\JobConfiguration\File\ConfigureMappingHandler; -use FireflyIII\Support\Import\JobConfiguration\File\ConfigureRolesHandler; -use FireflyIII\Support\Import\JobConfiguration\File\ConfigureUploadHandler; -use FireflyIII\Support\Import\JobConfiguration\File\NewFileJobHandler; -use Illuminate\Support\MessageBag; -use Log; -use Mockery; -use Tests\TestCase; - -/** - * Class FileJobConfigurationTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class FileJobConfigurationTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * No config, job is new. - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testCCFalse(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'File_A_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // should be false: - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - $this->assertFalse($configurator->configurationComplete()); - } - - /** - * Job is ready to run. - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testCCTrue(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'File_B_unit_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'ready_to_run'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // should be false: - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - $this->assertTrue($configurator->configurationComplete()); - } - - /** - * Configure the job when the stage is "map". Won't test other combo's because they're covered by other tests. - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testConfigureJob(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'I-Cfile_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'map'; - $job->provider = 'file'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $bag = new MessageBag; - $result = null; - - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - - $handler = $this->mock(ConfigureMappingHandler::class); - $handler->shouldReceive('setImportJob')->once()->withArgs([Mockery::any()]); - $handler->shouldReceive('configureJob')->withArgs([['c' => 'd']])->andReturn($bag)->once(); - - try { - $result = $configurator->configureJob(['c' => 'd']); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals($bag, $result); - } - - /** - * Get next data when stage is "configure-upload". Expect a certain class to be called. - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testGetNextDataCU(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'G-Dfile_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'configure-upload'; - $job->provider = 'file'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $result = 'x'; - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - - $handler = $this->mock(ConfigureUploadHandler::class); - $handler->shouldReceive('setImportJob')->once()->withArgs([Mockery::any()]); - $handler->shouldReceive('getNextData')->andReturn(['a' => 'b'])->withNoArgs()->once(); - - try { - $result = $configurator->getNextData(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals(['a' => 'b'], $result); - } - - /** - * Get next data when stage is "map". Expect a certain class to be called. - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testGetNextDataMap(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'H-Efile_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'map'; - $job->provider = 'file'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $result = 'x'; - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - - $handler = $this->mock(ConfigureMappingHandler::class); - $handler->shouldReceive('setImportJob')->once()->withArgs([Mockery::any()]); - $handler->shouldReceive('getNextData')->andReturn(['a' => 'b'])->withNoArgs()->once(); - - try { - $result = $configurator->getNextData(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals(['a' => 'b'], $result); - } - - /** - * Get next data when stage is "new". Expect a certain class to be called. - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testGetNextDataNew(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'F-fFile_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'file'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $result = 'x'; - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - - $handler = $this->mock(NewFileJobHandler::class); - $handler->shouldReceive('setImportJob')->once()->withArgs([Mockery::any()]); - $handler->shouldReceive('getNextData')->andReturn(['a' => 'b'])->withNoArgs()->once(); - - try { - $result = $configurator->getNextData(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals(['a' => 'b'], $result); - } - - /** - * Get next data when stage is "roles". Expect a certain class to be called. - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testGetNextDataRoles(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'H-fiGle_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'roles'; - $job->provider = 'file'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $result = 'x'; - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - - $handler = $this->mock(ConfigureRolesHandler::class); - $handler->shouldReceive('setImportJob')->once()->withArgs([Mockery::any()]); - $handler->shouldReceive('getNextData')->andReturn(['a' => 'b'])->withNoArgs()->once(); - - try { - $result = $configurator->getNextData(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals(['a' => 'b'], $result); - } - - /** - * Get view when stage is "configure-upload". - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testGetNextViewCU(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'DfiHle_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'configure-upload'; - $job->provider = 'file'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $result = 'x'; - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - try { - $result = $configurator->getNextView(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals('import.file.configure-upload', $result); - } - - /** - * Get view when stage is "map". - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testGetNextViewMap(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'FfilIe_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'map'; - $job->provider = 'file'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $result = 'x'; - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - try { - $result = $configurator->getNextView(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals('import.file.map', $result); - } - - /** - * Get view when stage is "new". - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testGetNextViewNew(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'CfJile_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'file'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $result = 'x'; - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - try { - $result = $configurator->getNextView(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals('import.file.new', $result); - } - - /** - * Get view when stage is "roles". - * - * @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration - */ - public function testGetNextViewRoles(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once()->atLeast(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'EfiKle_' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'roles'; - $job->provider = 'file'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $result = 'x'; - $configurator = new FileJobConfiguration; - $configurator->setImportJob($job); - try { - $result = $configurator->getNextView(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals('import.file.roles', $result); - } -} diff --git a/tests/Unit/Import/JobConfiguration/FinTSJobConfigurationTest.php b/tests/Unit/Import/JobConfiguration/FinTSJobConfigurationTest.php deleted file mode 100644 index 0b87203adb..0000000000 --- a/tests/Unit/Import/JobConfiguration/FinTSJobConfigurationTest.php +++ /dev/null @@ -1,172 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\JobConfiguration; - - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\JobConfiguration\FinTSJobConfiguration; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\JobConfiguration\FinTS\ChooseAccountHandler; -use FireflyIII\Support\Import\JobConfiguration\FinTS\NewFinTSJobHandler; -use Log; -use Tests\TestCase; - -/** - * Class FinTSJobConfigurationTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class FinTSJobConfigurationTest extends TestCase -{ - - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\JobConfiguration\FinTSJobConfiguration - */ - public function testConfigurationComplete(): void - { - $this->mock(ImportJobRepositoryInterface::class); - $this->mock(NewFinTSJobHandler::class); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'fints_jc_A' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'go-for-import'; - $job->provider = 'fints'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $config = new FinTSJobConfiguration; - $config->setImportJob($job); - $this->assertTrue($config->configurationComplete()); - } - - - /** - * @covers \FireflyIII\Import\JobConfiguration\FinTSJobConfiguration - */ - public function testConfigureJob(): void - { - $this->mock(ImportJobRepositoryInterface::class); - $handler = $this->mock(NewFinTSJobHandler::class); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'fints_jc_B' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fints'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $handler->shouldReceive('setImportJob')->atLeast()->once(); - $handler->shouldReceive('configureJob')->atLeast()->once()->withArgs([[123]]); - - - $config = new FinTSJobConfiguration; - $config->setImportJob($job); - try { - $config->configureJob([123]); - } catch (FireflyException $e) { - $this->assertFalse(true, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\FinTSJobConfiguration - */ - public function testGetNextData(): void - { - $this->mock(ImportJobRepositoryInterface::class); - $handler = $this->mock(ChooseAccountHandler::class); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'fints_jc_C' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'choose_account'; - $job->provider = 'fints'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $handler->shouldReceive('setImportJob')->atLeast()->once(); - $handler->shouldReceive('getNextData')->atLeast()->once()->withNoArgs()->andReturn([456]); - - - $res = []; - $config = new FinTSJobConfiguration; - $config->setImportJob($job); - try { - $res = $config->getNextData(); - } catch (FireflyException $e) { - $this->assertFalse(true, $e->getMessage()); - } - $this->assertEquals([456], $res); - } - - - /** - * @covers \FireflyIII\Import\JobConfiguration\FinTSJobConfiguration - */ - public function testGetNextView(): void - { - $this->mock(ImportJobRepositoryInterface::class); - $this->mock(ChooseAccountHandler::class); - - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'fints_jc_D' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'choose_account'; - $job->provider = 'fints'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - $res = []; - $config = new FinTSJobConfiguration; - $config->setImportJob($job); - try { - $res = $config->getNextView(); - } catch (FireflyException $e) { - $this->assertFalse(true, $e->getMessage()); - } - $this->assertEquals('import.fints.choose_account', $res); - } -} diff --git a/tests/Unit/Import/JobConfiguration/SpectreJobConfigurationTest.php b/tests/Unit/Import/JobConfiguration/SpectreJobConfigurationTest.php deleted file mode 100644 index c1c8dd897b..0000000000 --- a/tests/Unit/Import/JobConfiguration/SpectreJobConfigurationTest.php +++ /dev/null @@ -1,217 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\JobConfiguration; - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\JobConfiguration\SpectreJobConfiguration; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\JobConfiguration\Spectre\AuthenticatedHandler; -use FireflyIII\Support\Import\JobConfiguration\Spectre\ChooseAccountsHandler; -use FireflyIII\Support\Import\JobConfiguration\Spectre\ChooseLoginHandler; -use FireflyIII\Support\Import\JobConfiguration\Spectre\DoAuthenticateHandler; -use FireflyIII\Support\Import\JobConfiguration\Spectre\NewSpectreJobHandler; -use Illuminate\Support\MessageBag; -use Log; -use Tests\TestCase; - -/** - * Class SpectreJobConfigurationTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class SpectreJobConfigurationTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\JobConfiguration\SpectreJobConfiguration - */ - public function testConfigurationComplete(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'spectre_jc_A' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'spectre'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // expect "NewSpectreJobHandler" to be created because job is new. - $handler = $this->mock(NewSpectreJobHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('configurationComplete')->once()->andReturn(true); - - $config = new SpectreJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertTrue($config->configurationComplete()); - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\SpectreJobConfiguration - */ - public function testConfigureJob(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'spectre_jc_B' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'do-authenticate'; - $job->provider = 'spectre'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - $configData = ['ssome' => 'values']; - $return = new MessageBag(); - $return->add('some', 'return message'); - - // expect "DoAuthenticateHandler" to be created because job is in "do-authenticate". - $handler = $this->mock(DoAuthenticateHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('configureJob')->once()->withArgs([$configData])->andReturn($return); - - $config = new SpectreJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals($return, $config->configureJob($configData)); - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\SpectreJobConfiguration - */ - public function testGetNextData(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'spectre_jc_C' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'choose-login'; - $job->provider = 'spectre'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - $data = ['ssome' => 'values']; - - // Expect choose-login handler because of state. - $handler = $this->mock(ChooseLoginHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('getNextData')->once()->andReturn($data); - - $config = new SpectreJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals($data, $config->getNextData()); - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\SpectreJobConfiguration - */ - public function testGetNextView(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'spectre_jc_D' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'authenticated'; - $job->provider = 'spectre'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // expect "AuthenticatedHandler" because of state. - $handler = $this->mock(AuthenticatedHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('getNextView')->once()->andReturn('import.fake.view'); - - $config = new SpectreJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals('import.fake.view', $config->getNextView()); - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\SpectreJobConfiguration - */ - public function testGetNextViewAccount(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'spectre_jc_E' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'choose-accounts'; - $job->provider = 'spectre'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // expect "ChooseAccountsHandler" because of state. - $handler = $this->mock(ChooseAccountsHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('getNextView')->once()->andReturn('import.fake.view2'); - - $config = new SpectreJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals('import.fake.view2', $config->getNextView()); - } - - -} diff --git a/tests/Unit/Import/JobConfiguration/YnabJobConfigurationTest.php b/tests/Unit/Import/JobConfiguration/YnabJobConfigurationTest.php deleted file mode 100644 index d907d941b7..0000000000 --- a/tests/Unit/Import/JobConfiguration/YnabJobConfigurationTest.php +++ /dev/null @@ -1,184 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\JobConfiguration; - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\JobConfiguration\YnabJobConfiguration; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\JobConfiguration\Ynab\NewYnabJobHandler; -use FireflyIII\Support\Import\JobConfiguration\Ynab\SelectAccountsHandler; -use FireflyIII\Support\Import\JobConfiguration\Ynab\SelectBudgetHandler; -use Illuminate\Support\MessageBag; -use Log; -use Tests\TestCase; - -/** - * Class YnabJobConfigurationTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class YnabJobConfigurationTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\JobConfiguration\YnabJobConfiguration - */ - public function testConfigurationComplete(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_jc_A' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // expect "NewYnabJobHandler" to be created because job is new. - $handler = $this->mock(NewYnabJobHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('configurationComplete')->once()->andReturn(true); - - $config = new YnabJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertTrue($config->configurationComplete()); - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\YnabJobConfiguration - */ - public function testConfigureJob(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_jc_B' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'select_budgets'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - $configData = ['ssome' => 'values']; - $return = new MessageBag(); - $return->add('some', 'return message'); - - // expect "SelectBudgetHandler" to be created because job is in "select_budgets". - $handler = $this->mock(SelectBudgetHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('configureJob')->once()->withArgs([$configData])->andReturn($return); - - $config = new YnabJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals($return, $config->configureJob($configData)); - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\YnabJobConfiguration - */ - public function testGetNextData(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_jc_C' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'select_accounts'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - $data = ['ssome' => 'values']; - - // Expect "SelectAccountsHandler" because state is "select_accounts" - $handler = $this->mock(SelectAccountsHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('getNextData')->once()->andReturn($data); - - $config = new YnabJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals($data, $config->getNextData()); - } - - /** - * @covers \FireflyIII\Import\JobConfiguration\YnabJobConfiguration - */ - public function testGetNextView(): void - { - $jobRepos = $this->mock(ImportJobRepositoryInterface::class); - $jobRepos->shouldReceive('setUser')->once(); - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_jc_E' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // expect "NewYnabJobHandler" because of state. - $handler = $this->mock(NewYnabJobHandler::class); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('getNextView')->once()->andReturn('import.fake.view2'); - - $config = new YnabJobConfiguration; - try { - $config->setImportJob($job); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - $this->assertEquals('import.fake.view2', $config->getNextView()); - } - - -} diff --git a/tests/Unit/Import/Mapper/AssetAccountIbansTest.php b/tests/Unit/Import/Mapper/AssetAccountIbansTest.php deleted file mode 100644 index afc267ed93..0000000000 --- a/tests/Unit/Import/Mapper/AssetAccountIbansTest.php +++ /dev/null @@ -1,96 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Mapper; - -use FireflyIII\Import\Mapper\AssetAccountIbans; -use FireflyIII\Models\Account; -use FireflyIII\Models\AccountType; -use FireflyIII\Repositories\Account\AccountRepositoryInterface; -use Illuminate\Support\Collection; -use Log; -use Tests\TestCase; - -/** - * Class AssetAccountIbansTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class AssetAccountIbansTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Mapper\AssetAccountIbans - */ - public function testGetMapBasic(): void - { - $asset = AccountType::where('type', AccountType::ASSET)->first(); - $loan = AccountType::where('type', AccountType::LOAN)->first(); - $one = new Account; - $one->id = 17; - $one->name = 'Something'; - $one->iban = 'IBAN'; - $one->account_type_id = $asset->id; - - $two = new Account; - $two->id = 53; - $two->name = 'Else'; - $two->account_type_id = $loan->id; - - $three = new Account; - $three->id = 66; - $three->name = 'I have IBAN'; - $three->iban = 'IBAN'; - $three->account_type_id = $loan->id; - - $collection = new Collection([$one, $two, $three]); - - $repository = $this->mock(AccountRepositoryInterface::class); - $repository->shouldReceive('getAccountsByType')->withArgs( - [[AccountType::DEFAULT, AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE,]] - )->andReturn($collection)->once(); - - $mapper = new AssetAccountIbans(); - $mapping = $mapper->getMap(); - $this->assertCount(4, $mapping); - // assert this is what the result looks like: - $result = [ - 0 => (string)trans('import.map_do_not_map'), - 53 => 'Else (liability)', - 66 => 'IBAN (I have IBAN) (liability)', - 17 => 'IBAN (Something)', - ]; - $this->assertEquals($result, $mapping); - } - -} diff --git a/tests/Unit/Import/Mapper/AssetAccountsTest.php b/tests/Unit/Import/Mapper/AssetAccountsTest.php deleted file mode 100644 index d1475b864b..0000000000 --- a/tests/Unit/Import/Mapper/AssetAccountsTest.php +++ /dev/null @@ -1,91 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Mapper; - -use FireflyIII\Import\Mapper\AssetAccounts; -use FireflyIII\Models\Account; -use FireflyIII\Models\AccountType; -use FireflyIII\Repositories\Account\AccountRepositoryInterface; -use Illuminate\Support\Collection; -use Log; -use Tests\TestCase; - -/** - * Class AssetAccountsTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class AssetAccountsTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Mapper\AssetAccounts - */ - public function testGetMapBasic(): void - { - $asset = AccountType::where('type', AccountType::ASSET)->first(); - $loan = AccountType::where('type', AccountType::LOAN)->first(); - - $one = new Account; - $one->id = 23; - $one->name = 'Something'; - $one->iban = 'IBAN'; - $one->account_type_id = $asset->id; - - $two = new Account; - $two->id = 19; - $two->name = 'Else'; - $two->account_type_id = $loan->id; - - $collection = new Collection([$one, $two]); - - $repository = $this->mock(AccountRepositoryInterface::class); - $repository->shouldReceive('getAccountsByType')->withArgs( - [[AccountType::DEFAULT, AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE,]] - )->andReturn($collection)->once(); - - $mapper = new AssetAccounts(); - $mapping = $mapper->getMap(); - $this->assertCount(3, $mapping); - // assert this is what the result looks like: - $result = [ - 0 => (string)trans('import.map_do_not_map'), - 19 => 'Liability: Else', - 23 => 'Something (IBAN)', - - ]; - $this->assertEquals($result, $mapping); - } - -} diff --git a/tests/Unit/Import/Mapper/BillsTest.php b/tests/Unit/Import/Mapper/BillsTest.php deleted file mode 100644 index 7cbd7578d2..0000000000 --- a/tests/Unit/Import/Mapper/BillsTest.php +++ /dev/null @@ -1,81 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Mapper; - -use FireflyIII\Import\Mapper\Bills; -use FireflyIII\Models\Bill; -use FireflyIII\Repositories\Bill\BillRepositoryInterface; -use Illuminate\Support\Collection; -use Log; -use Tests\TestCase; - -/** - * Class BillsTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class BillsTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Mapper\Bills - */ - public function testGetMapBasic(): void - { - $one = new Bill; - $one->id = 5; - $one->name = 'Something'; - $one->match = 'hi,bye'; - $two = new Bill; - $two->id = 9; - $two->name = 'Else'; - $two->match = 'match'; - $collection = new Collection([$one, $two]); - - $repository = $this->mock(BillRepositoryInterface::class); - $repository->shouldReceive('getBills')->andReturn($collection)->once(); - - $mapper = new Bills(); - $mapping = $mapper->getMap(); - $this->assertCount(3, $mapping); - // assert this is what the result looks like: - $result = [ - 0 => (string)trans('import.map_do_not_map'), - 9 => 'Else', - 5 => 'Something', - ]; - $this->assertEquals($result, $mapping); - } - -} diff --git a/tests/Unit/Import/Mapper/BudgetsTest.php b/tests/Unit/Import/Mapper/BudgetsTest.php deleted file mode 100644 index ab1d440b89..0000000000 --- a/tests/Unit/Import/Mapper/BudgetsTest.php +++ /dev/null @@ -1,79 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Mapper; - -use FireflyIII\Import\Mapper\Budgets; -use FireflyIII\Models\Budget; -use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; -use Illuminate\Support\Collection; -use Log; -use Tests\TestCase; - -/** - * Class BudgetsTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class BudgetsTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - /** - * @covers \FireflyIII\Import\Mapper\Budgets - */ - public function testGetMapBasic(): void - { - $one = new Budget; - $one->id = 8; - $one->name = 'Something'; - $two = new Budget; - $two->id = 4; - $two->name = 'Else'; - $collection = new Collection([$one, $two]); - - $repository = $this->mock(BudgetRepositoryInterface::class); - $repository->shouldReceive('getActiveBudgets')->andReturn($collection)->once(); - - $mapper = new Budgets(); - $mapping = $mapper->getMap(); - $this->assertCount(3, $mapping); - // assert this is what the result looks like: - $result = [ - 0 => (string)trans('import.map_do_not_map'), - 4 => 'Else', - 8 => 'Something', - - ]; - $this->assertEquals($result, $mapping); - } - -} diff --git a/tests/Unit/Import/Mapper/CategoriesTest.php b/tests/Unit/Import/Mapper/CategoriesTest.php deleted file mode 100644 index 6d1a052553..0000000000 --- a/tests/Unit/Import/Mapper/CategoriesTest.php +++ /dev/null @@ -1,80 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Mapper; - -use FireflyIII\Import\Mapper\Categories; -use FireflyIII\Models\Category; -use FireflyIII\Repositories\Category\CategoryRepositoryInterface; -use Illuminate\Support\Collection; -use Log; -use Tests\TestCase; - -/** - * Class CategoriesTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class CategoriesTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Mapper\Categories - */ - public function testGetMapBasic(): void - { - $one = new Category; - $one->id = 9; - $one->name = 'Something'; - $two = new Category; - $two->id = 17; - $two->name = 'Else'; - $collection = new Collection([$one, $two]); - - $repository = $this->mock(CategoryRepositoryInterface::class); - $repository->shouldReceive('getCategories')->andReturn($collection)->once(); - - $mapper = new Categories(); - $mapping = $mapper->getMap(); - $this->assertCount(3, $mapping); - // assert this is what the result looks like: - $result = [ - 0 => (string)trans('import.map_do_not_map'), - 17 => 'Else', - 9 => 'Something', - - ]; - $this->assertEquals($result, $mapping); - } - -} diff --git a/tests/Unit/Import/Mapper/OpposingAccountIbansTest.php b/tests/Unit/Import/Mapper/OpposingAccountIbansTest.php deleted file mode 100644 index a70e0d4231..0000000000 --- a/tests/Unit/Import/Mapper/OpposingAccountIbansTest.php +++ /dev/null @@ -1,97 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Mapper; - -use FireflyIII\Import\Mapper\OpposingAccountIbans; -use FireflyIII\Models\Account; -use FireflyIII\Models\AccountType; -use FireflyIII\Repositories\Account\AccountRepositoryInterface; -use Illuminate\Support\Collection; -use Log; -use Tests\TestCase; - -/** - * Class OpposingAccountIbansTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class OpposingAccountIbansTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Mapper\OpposingAccountIbans - */ - public function testGetMapBasic(): void - { - $asset = AccountType::where('type', AccountType::ASSET)->first(); - $loan = AccountType::where('type', AccountType::LOAN)->first(); - $one = new Account; - $one->id = 21; - $one->name = 'Something'; - $one->iban = 'IBAN'; - $one->account_type_id = $asset->id; - - $two = new Account; - $two->id = 17; - $two->name = 'Else'; - $two->account_type_id = $loan->id; - - $three = new Account; - $three->id = 66; - $three->name = 'I have IBAN'; - $three->iban = 'IBAN'; - $three->account_type_id = $loan->id; - - $collection = new Collection([$one, $two, $three]); - - $repository = $this->mock(AccountRepositoryInterface::class); - $repository->shouldReceive('getAccountsByType')->withArgs( - [[AccountType::DEFAULT, AccountType::ASSET, AccountType::EXPENSE, AccountType::BENEFICIARY, AccountType::REVENUE, AccountType::LOAN, - AccountType::DEBT, AccountType::CREDITCARD, AccountType::MORTGAGE,]] - )->andReturn($collection)->once(); - - $mapper = new OpposingAccountIbans(); - $mapping = $mapper->getMap(); - $this->assertCount(4, $mapping); - // assert this is what the result looks like: - $result = [ - 0 => (string)trans('import.map_do_not_map'), - 17 => 'Else (liability)', - 66 => 'IBAN (I have IBAN) (liability)', - 21 => 'IBAN (Something)', - ]; - $this->assertEquals($result, $mapping); - } - -} diff --git a/tests/Unit/Import/Mapper/OpposingAccountsTest.php b/tests/Unit/Import/Mapper/OpposingAccountsTest.php deleted file mode 100644 index 78c44e8cd3..0000000000 --- a/tests/Unit/Import/Mapper/OpposingAccountsTest.php +++ /dev/null @@ -1,94 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Mapper; - -use FireflyIII\Import\Mapper\OpposingAccounts; -use FireflyIII\Models\Account; -use FireflyIII\Models\AccountType; -use FireflyIII\Repositories\Account\AccountRepositoryInterface; -use Illuminate\Support\Collection; -use Log; -use Tests\TestCase; - -/** - * Class OpposingAccountsTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class OpposingAccountsTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Mapper\OpposingAccounts - */ - public function testGetMapBasic(): void - { - $asset = AccountType::where('type', AccountType::ASSET)->first(); - $loan = AccountType::where('type', AccountType::LOAN)->first(); - - $one = new Account; - $one->id = 13; - $one->name = 'Something'; - $one->iban = 'IBAN'; - $one->account_type_id = $asset->id; - $two = new Account; - $two->id = 9; - $two->name = 'Else'; - $two->account_type_id = $loan->id; - - $collection = new Collection([$one, $two]); - - $repository = $this->mock(AccountRepositoryInterface::class); - $repository->shouldReceive('getAccountsByType')->withArgs( - [[ - AccountType::DEFAULT, AccountType::ASSET, - AccountType::EXPENSE, AccountType::BENEFICIARY, - AccountType::REVENUE, AccountType::LOAN, AccountType::DEBT, - AccountType::CREDITCARD, AccountType::MORTGAGE, - ]] - )->andReturn($collection)->once(); - - $mapper = new OpposingAccounts(); - $mapping = $mapper->getMap(); - $this->assertCount(3, $mapping); - // assert this is what the result looks like: - $result = [ - 0 => (string)trans('import.map_do_not_map'), - 9 => 'Liability: Else', - 13 => 'Something (IBAN)', - ]; - $this->assertEquals($result, $mapping); - } - -} diff --git a/tests/Unit/Import/Mapper/TagsTest.php b/tests/Unit/Import/Mapper/TagsTest.php deleted file mode 100644 index bcb8e57b9c..0000000000 --- a/tests/Unit/Import/Mapper/TagsTest.php +++ /dev/null @@ -1,79 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Mapper; - -use FireflyIII\Import\Mapper\Tags; -use FireflyIII\Models\Tag; -use FireflyIII\Repositories\Tag\TagRepositoryInterface; -use Illuminate\Support\Collection; -use Log; -use Tests\TestCase; - -/** - * Class TagsTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class TagsTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Mapper\Tags - */ - public function testGetMapBasic(): void - { - $one = new Tag; - $one->id = 12; - $one->tag = 'Something'; - $two = new Tag; - $two->id = 14; - $two->tag = 'Else'; - $collection = new Collection([$one, $two]); - - $repository = $this->mock(TagRepositoryInterface::class); - $repository->shouldReceive('get')->andReturn($collection)->once(); - - $mapper = new Tags(); - $mapping = $mapper->getMap(); - $this->assertCount(3, $mapping); - // assert this is what the result looks like: - $result = [ - 0 => (string)trans('import.map_do_not_map'), - 14 => 'Else', - 12 => 'Something', - ]; - $this->assertEquals($result, $mapping); - } - -} diff --git a/tests/Unit/Import/Mapper/TransactionCurrenciesTest.php b/tests/Unit/Import/Mapper/TransactionCurrenciesTest.php deleted file mode 100644 index 5e64d09f58..0000000000 --- a/tests/Unit/Import/Mapper/TransactionCurrenciesTest.php +++ /dev/null @@ -1,81 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Mapper; - -use FireflyIII\Import\Mapper\TransactionCurrencies; -use FireflyIII\Models\TransactionCurrency; -use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; -use Illuminate\Support\Collection; -use Log; -use Tests\TestCase; - -/** - * Class TransactionCurrenciesTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class TransactionCurrenciesTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - /** - * @covers \FireflyIII\Import\Mapper\TransactionCurrencies - */ - public function testGetMapBasic(): void - { - $one = new TransactionCurrency; - $one->id = 9; - $one->name = 'Something'; - $one->code = 'ABC'; - $two = new TransactionCurrency; - $two->id = 11; - $two->name = 'Else'; - $two->code = 'DEF'; - $collection = new Collection([$one, $two]); - - $repository = $this->mock(CurrencyRepositoryInterface::class); - $repository->shouldReceive('get')->andReturn($collection)->once(); - - $mapper = new TransactionCurrencies(); - $mapping = $mapper->getMap(); - $this->assertCount(3, $mapping); - // assert this is what the result looks like: - $result = [ - 0 => (string)trans('import.map_do_not_map'), - 11 => 'Else (DEF)', - 9 => 'Something (ABC)', - - ]; - $this->assertEquals($result, $mapping); - } - -} diff --git a/tests/Unit/Import/MapperPreProcess/TagsCommaTest.php b/tests/Unit/Import/MapperPreProcess/TagsCommaTest.php deleted file mode 100644 index 4c8e2959c8..0000000000 --- a/tests/Unit/Import/MapperPreProcess/TagsCommaTest.php +++ /dev/null @@ -1,62 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\MapperPreProcess; - -use FireflyIII\Import\MapperPreProcess\TagsComma; -use Log; -use Tests\TestCase; - -/** - * Class TagsCommaTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class TagsCommaTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * \FireflyIII\Import\MapperPreProcess\TagsComma - */ - public function testBasic(): void - { - $input = 'some,tags, with, spaces ,and,without,,'; - $output = ['some', 'tags', 'with', 'spaces', 'and', 'without']; - $mapper = new TagsComma(); - $result = $mapper->run($input); - - $this->assertEquals($output, $result); - - } - -} diff --git a/tests/Unit/Import/MapperPreProcess/TagsSpaceTest.php b/tests/Unit/Import/MapperPreProcess/TagsSpaceTest.php deleted file mode 100644 index d118d5f3c2..0000000000 --- a/tests/Unit/Import/MapperPreProcess/TagsSpaceTest.php +++ /dev/null @@ -1,61 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\MapperPreProcess; - -use FireflyIII\Import\MapperPreProcess\TagsSpace; -use Log; -use Tests\TestCase; - -/** - * Class TagsSpaceTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class TagsSpaceTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * \FireflyIII\Import\MapperPreProcess\TagsSpace - */ - public function testBasic(): void - { - $input = 'some tags with spaces,and without '; - $output = ['some', 'tags', 'with', 'spaces,and', 'without']; - $mapper = new TagsSpace(); - $result = $mapper->run($input); - - $this->assertEquals($output, $result); - } - -} diff --git a/tests/Unit/Import/Prerequisites/BunqPrerequisitesTest.php b/tests/Unit/Import/Prerequisites/BunqPrerequisitesTest.php deleted file mode 100644 index 045eca3537..0000000000 --- a/tests/Unit/Import/Prerequisites/BunqPrerequisitesTest.php +++ /dev/null @@ -1,232 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Prerequisites; - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\Prerequisites\BunqPrerequisites; -use FireflyIII\Models\Preference; -use FireflyIII\Services\Bunq\ApiContext; -use FireflyIII\Services\IP\IPRetrievalInterface; -use Log; -use Mockery; -use Preferences; -use Tests\Object\FakeApiContext; -use Tests\TestCase; - -/** - * Class BunqPrerequisitesTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class BunqPrerequisitesTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * Has no API key, has no external IP. - * - * @covers \FireflyIII\Import\Prerequisites\BunqPrerequisites - */ - public function testGetViewParameters(): void - { - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_api_key', null])->andReturnNull()->once(); - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_external_ip', null])->andReturnNull()->twice(); - - $service = $this->mock(IPRetrievalInterface::class); - $service->shouldReceive('getIP')->once()->andReturn('10.0.0.15'); - - $object = new BunqPrerequisites; - $object->setUser($this->user()); - $parameters = $object->getViewParameters(); - $this->assertEquals(['api_key' => '', 'external_ip' => '10.0.0.15'], $parameters); - } - - /** - * Has empty API key, has empty external IP. - * - * @covers \FireflyIII\Import\Prerequisites\BunqPrerequisites - */ - public function testGetViewParametersEmpty(): void - { - $pref = new Preference; - $pref->name = 'dontmatter'; - $pref->data = ''; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_api_key', null])->andReturn($pref)->once(); - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_external_ip', null])->andReturn($pref)->twice(); - - $service = $this->mock(IPRetrievalInterface::class); - $service->shouldReceive('getIP')->once()->andReturn('10.0.0.15'); - - $object = new BunqPrerequisites; - $object->setUser($this->user()); - $parameters = $object->getViewParameters(); - $this->assertEquals(['api_key' => '', 'external_ip' => '10.0.0.15'], $parameters); - } - - /** - * Has API key, has external IP. - * - * @covers \FireflyIII\Import\Prerequisites\BunqPrerequisites - */ - public function testGetViewParametersFilled(): void - { - $pref = new Preference; - $pref->name = 'dontmatter'; - $pref->data = 'data'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_api_key', null])->andReturn($pref)->times(2); - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_external_ip', null])->andReturn($pref)->times(3); - - $object = new BunqPrerequisites; - $object->setUser($this->user()); - $parameters = $object->getViewParameters(); - $this->assertEquals(['api_key' => 'data', 'external_ip' => 'data'], $parameters); - } - - /** - * API context empty - * - * @covers \FireflyIII\Import\Prerequisites\BunqPrerequisites - */ - public function testIsCompleteEmpty(): void - { - $pref = new Preference; - $pref->name = 'dontmatter'; - $pref->data = 'data'; - - $empty = new Preference; - $empty->name = 'dontmatter'; - $empty->data = ''; - - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_api_key', null])->andReturn($pref)->once(); - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_external_ip', null])->andReturn($pref)->once(); - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_api_context', null])->andReturn($empty)->once(); - $object = new BunqPrerequisites; - $object->setUser($this->user()); - $this->assertFalse($object->isComplete()); - } - - /** - * API context filled - * - * @covers \FireflyIII\Import\Prerequisites\BunqPrerequisites - */ - public function testIsCompleteFilled(): void - { - $pref = new Preference; - $pref->name = 'dontmatter'; - $pref->data = 'data'; - - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_api_key', null])->andReturn($pref)->once(); - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_external_ip', null])->andReturn($pref)->once(); - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_api_context', null])->andReturn($pref)->once(); - $object = new BunqPrerequisites; - $object->setUser($this->user()); - $this->assertTrue($object->isComplete()); - } - - /** - * API context null. - * - * @covers \FireflyIII\Import\Prerequisites\BunqPrerequisites - */ - public function testIsCompleteNull(): void - { - $pref = new Preference; - $pref->name = 'dontmatter'; - $pref->data = 'data'; - - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_api_key', null])->andReturn($pref)->once(); - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_external_ip', null])->andReturn($pref)->once(); - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'bunq_api_context', null])->andReturnNull()->once(); - $object = new BunqPrerequisites; - $object->setUser($this->user()); - $this->assertFalse($object->isComplete()); - } - - /** - * Test call to API. - * - * @covers \FireflyIII\Import\Prerequisites\BunqPrerequisites - */ - public function testStorePrerequisites(): void - { - $object = new BunqPrerequisites; - $object->setUser($this->user()); - - $data = [ - 'api_key' => 'Some API key', - 'external_ip' => '10.0.0.15', - ]; - - Preferences::shouldReceive('setForUser')->withArgs([Mockery::any(), 'bunq_api_key', $data['api_key']])->once(); - Preferences::shouldReceive('setForUser')->withArgs([Mockery::any(), 'bunq_external_ip', $data['external_ip']])->once(); - Preferences::shouldReceive('setForUser')->withArgs([Mockery::any(), 'bunq_api_context', '{"a":"b"}'])->once(); - - // create fake context - $context = $this->mock(ApiContext::class); - $context->shouldReceive('create') - ->withArgs([Mockery::any(), 'Some API key', 'Firefly III v' . config('firefly.version'), [$data['external_ip']]]) - ->once()->andReturn(new FakeApiContext()); - $messages = $object->storePrerequisites($data); - $this->assertEquals('', $messages->first()); - $this->assertCount(0, $messages); - } - - /** - * Test call that throws error. - * - * @covers \FireflyIII\Import\Prerequisites\BunqPrerequisites - */ - public function testStorePrerequisitesExp(): void - { - $object = new BunqPrerequisites; - $object->setUser($this->user()); - - $data = [ - 'api_key' => 'Some API key', - 'external_ip' => '10.0.0.15', - ]; - - Preferences::shouldReceive('setForUser')->withArgs([Mockery::any(), 'bunq_api_key', $data['api_key']])->once(); - Preferences::shouldReceive('setForUser')->withArgs([Mockery::any(), 'bunq_external_ip', $data['external_ip']])->once(); - - // create fake context - $context = $this->mock(ApiContext::class); - $context->shouldReceive('create') - ->withArgs([Mockery::any(), 'Some API key', 'Firefly III v' . config('firefly.version'), [$data['external_ip']]]) - ->once()->andThrow(new FireflyException('Some exception')); - $messages = $object->storePrerequisites($data); - $this->assertEquals('Some exception', $messages->first()); - $this->assertCount(1, $messages); - } -} diff --git a/tests/Unit/Import/Prerequisites/FakePrerequisitesTest.php b/tests/Unit/Import/Prerequisites/FakePrerequisitesTest.php deleted file mode 100644 index 2affc0ace9..0000000000 --- a/tests/Unit/Import/Prerequisites/FakePrerequisitesTest.php +++ /dev/null @@ -1,187 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Prerequisites; - - -use FireflyIII\Import\Prerequisites\FakePrerequisites; -use FireflyIII\Models\Preference; -use Log; -use Mockery; -use Preferences; -use Tests\TestCase; - -/** - * Class FakePrerequisitesTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class FakePrerequisitesTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - /** - * Bad API key length in preferences - * - * @covers \FireflyIII\Import\Prerequisites\FakePrerequisites - */ - public function testGetViewParametersBadLength(): void - { - // API key should be empty: - $apiPref = new Preference; - $apiPref->data = 'abc'; - - Preferences::shouldReceive('getForUser') - ->withArgs([Mockery::any(), 'fake_api_key', false])->once() - ->andReturn($apiPref); - - $object = new FakePrerequisites(); - $object->setUser($this->user()); - $result = $object->getViewParameters(); - $this->assertEquals(['api_key' => ''], $result); - } - - /** - * No API key in preference. - * - * @covers \FireflyIII\Import\Prerequisites\FakePrerequisites - */ - public function testGetViewParametersDataNull(): void - { - // API key should be empty: - $apiPref = new Preference; - $apiPref->data = null; - - Preferences::shouldReceive('getForUser') - ->withArgs([Mockery::any(), 'fake_api_key', false])->once() - ->andReturn($apiPref); - - $object = new FakePrerequisites(); - $object->setUser($this->user()); - $result = $object->getViewParameters(); - $this->assertEquals(['api_key' => ''], $result); - } - - /** - * Good API key length in preferences - * - * @covers \FireflyIII\Import\Prerequisites\FakePrerequisites - */ - public function testGetViewParametersGoodLength(): void - { - // API key should be empty: - $apiPref = new Preference; - $apiPref->data = '123456789012345678901234567890AA'; - - Preferences::shouldReceive('getForUser') - ->withArgs([Mockery::any(), 'fake_api_key', false])->twice() - ->andReturn($apiPref); - - $object = new FakePrerequisites(); - $object->setUser($this->user()); - $result = $object->getViewParameters(); - $this->assertEquals(['api_key' => '123456789012345678901234567890AA'], $result); - } - - /** - * No preference at all. - * - * @covers \FireflyIII\Import\Prerequisites\FakePrerequisites - */ - public function testGetViewParametersPrefNull(): void - { - Preferences::shouldReceive('getForUser') - ->withArgs([Mockery::any(), 'fake_api_key', false])->once() - ->andReturn(null); - - $object = new FakePrerequisites(); - $object->setUser($this->user()); - $result = $object->getViewParameters(); - $this->assertEquals(['api_key' => ''], $result); - } - - /** - * Also test hasApiKey but that one is covered. - * - * @covers \FireflyIII\Import\Prerequisites\FakePrerequisites - */ - public function testIsComplete(): void - { - // API key should be empty: - $apiPref = new Preference; - $apiPref->data = null; - - Preferences::shouldReceive('getForUser') - ->withArgs([Mockery::any(), 'fake_api_key', false])->once() - ->andReturn($apiPref); - - $object = new FakePrerequisites(); - $object->setUser($this->user()); - $this->assertFalse($object->isComplete()); - } - - /** - * Also test hasApiKey but that one is covered. - * - * @covers \FireflyIII\Import\Prerequisites\FakePrerequisites - */ - public function testStorePrerequisitesBad(): void - { - $data = [ - 'api_key' => 'Hallo', - ]; - $object = new FakePrerequisites(); - $object->setUser($this->user()); - $messages = $object->storePrerequisites($data); - $this->assertCount(1, $messages); - $this->assertEquals('API key must be 32 chars.', $messages->first()); - } - - /** - * Also test hasApiKey but that one is covered. - * - * @covers \FireflyIII\Import\Prerequisites\FakePrerequisites - */ - public function testStorePrerequisitesGood(): void - { - $data = [ - 'api_key' => '123456789012345678901234567890AA', - ]; - - Preferences::shouldReceive('setForUser')->withArgs([Mockery::any(), 'fake_api_key', '123456789012345678901234567890AA'])->once(); - - $object = new FakePrerequisites(); - $object->setUser($this->user()); - $messages = $object->storePrerequisites($data); - $this->assertCount(0, $messages); - } - -} diff --git a/tests/Unit/Import/Prerequisites/SpectrePrerequisitesTest.php b/tests/Unit/Import/Prerequisites/SpectrePrerequisitesTest.php deleted file mode 100644 index fe4825c2aa..0000000000 --- a/tests/Unit/Import/Prerequisites/SpectrePrerequisitesTest.php +++ /dev/null @@ -1,259 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Prerequisites; - - -use FireflyIII\Import\Prerequisites\SpectrePrerequisites; -use FireflyIII\Models\Preference; -use Log; -use Mockery; -use Preferences; -use Tests\TestCase; - -/** - * Class SpectrePrerequisitesTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class SpectrePrerequisitesTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Prerequisites\SpectrePrerequisites - */ - public function testGetView(): void - { - - $object = new SpectrePrerequisites; - $object->setUser($this->user()); - $this->assertEquals('import.spectre.prerequisites', $object->getView()); - } - - /** - * Returns NULL as much as possible, forcing system to generate new keys. - * - * @covers \FireflyIII\Import\Prerequisites\SpectrePrerequisites - */ - public function testGetViewParameters(): void - { - $publicKey = new Preference; - $publicKey->name = 'spectre_public_key'; - $publicKey->data = '---PUBKEY---'; - - $privateKey = new Preference; - $privateKey->name = 'spectre_private_key'; - $privateKey->data = '---PRIVKEY---'; - - // get secret - Preferences::shouldReceive('getForUser')->once() - ->withArgs([Mockery::any(), 'spectre_secret', null]) - ->andReturnNull(); - - // get App ID - Preferences::shouldReceive('getForUser')->once() - ->withArgs([Mockery::any(), 'spectre_app_id', null]) - ->andReturnNull(); - - // get users public key - // second time it should exist. - Preferences::shouldReceive('getForUser')->twice() - ->withArgs([Mockery::any(), 'spectre_public_key', null]) - ->andReturn(null, $publicKey); - // SET users new pulic key - Preferences::shouldReceive('setForUser')->once() - ->withArgs([Mockery::any(), 'spectre_public_key', Mockery::any()]) - ->andReturn($publicKey); - // SET private key - Preferences::shouldReceive('setForUser')->once() - ->withArgs([Mockery::any(), 'spectre_private_key', Mockery::any()]) - ->andReturn($privateKey); - - - $object = new SpectrePrerequisites; - $object->setUser($this->user()); - $return = $object->getViewParameters(); - $this->assertEquals( - [ - 'app_id' => '', - 'secret' => '', - 'public_key' => '---PUBKEY---', - ], $return - ); - } - - /** - * App ID exists, secret is empty. - * - * @covers \FireflyIII\Import\Prerequisites\SpectrePrerequisites - */ - public function testIsComplete(): void - { - $appId = new Preference; - $appId->name = 'spectre_app_id'; - $appId->data = 'Some app id'; - - $secret = new Preference; - $secret->name = 'spectre_secret'; - $secret->data = 'Hello'; - // get App ID - Preferences::shouldReceive('getForUser')->once() - ->withArgs([Mockery::any(), 'spectre_app_id', null]) - ->andReturn($appId); - - // get secret - Preferences::shouldReceive('getForUser')->once() - ->withArgs([Mockery::any(), 'spectre_secret', null]) - ->andReturn($secret); - - $object = new SpectrePrerequisites; - $object->setUser($this->user()); - $this->assertTrue($object->isComplete()); - } - - /** - * App ID exists, secret is null. - * - * @covers \FireflyIII\Import\Prerequisites\SpectrePrerequisites - */ - public function testIsCompleteAppId(): void - { - $appId = new Preference; - $appId->name = 'spectre_app_id'; - $appId->data = 'Some app id'; - // get App ID - Preferences::shouldReceive('getForUser')->once() - ->withArgs([Mockery::any(), 'spectre_app_id', null]) - ->andReturn($appId); - - // get secret - Preferences::shouldReceive('getForUser')->once() - ->withArgs([Mockery::any(), 'spectre_secret', null]) - ->andReturnNull(); - - $object = new SpectrePrerequisites; - $object->setUser($this->user()); - $this->assertFalse($object->isComplete()); - } - - /** - * App ID is "" and Secret is NULL. Since App ID is "" secret won't be polled. - * - * @covers \FireflyIII\Import\Prerequisites\SpectrePrerequisites - */ - public function testIsCompleteEmpty(): void - { - $appId = new Preference; - $appId->name = 'spectre_app_id'; - $appId->data = ''; - - // get App ID - Preferences::shouldReceive('getForUser')->once() - ->withArgs([Mockery::any(), 'spectre_app_id', null]) - ->andReturn($appId); - - $object = new SpectrePrerequisites; - $object->setUser($this->user()); - $this->assertFalse($object->isComplete()); - } - - /** - * App ID and Secret are NULL. Since App ID is null secret won't be polled. - * - * @covers \FireflyIII\Import\Prerequisites\SpectrePrerequisites - */ - public function testIsCompleteNull(): void - { - // get App ID - Preferences::shouldReceive('getForUser')->once() - ->withArgs([Mockery::any(), 'spectre_app_id', null]) - ->andReturnNull(); - - $object = new SpectrePrerequisites; - $object->setUser($this->user()); - $this->assertFalse($object->isComplete()); - } - - /** - * App ID exists, secret is empty. - * - * @covers \FireflyIII\Import\Prerequisites\SpectrePrerequisites - */ - public function testIsCompleteSecretEmpty(): void - { - $appId = new Preference; - $appId->name = 'spectre_app_id'; - $appId->data = 'Some app id'; - - $secret = new Preference; - $secret->name = 'spectre_secret'; - $secret->data = ''; - // get App ID - Preferences::shouldReceive('getForUser')->once() - ->withArgs([Mockery::any(), 'spectre_app_id', null]) - ->andReturn($appId); - - // get secret - Preferences::shouldReceive('getForUser')->once() - ->withArgs([Mockery::any(), 'spectre_secret', null]) - ->andReturn($secret); - - $object = new SpectrePrerequisites; - $object->setUser($this->user()); - $this->assertFalse($object->isComplete()); - } - - /** - * - * @covers \FireflyIII\Import\Prerequisites\SpectrePrerequisites - */ - public function testStorePrerequisites(): void - { - $data = [ - 'app_id' => 'Some app ID', - 'secret' => 'Very secret!', - ]; - // set values - Preferences::shouldReceive('setForUser')->once() - ->withArgs([Mockery::any(), 'spectre_app_id', $data['app_id']]) - ->andReturn(new Preference()); - Preferences::shouldReceive('setForUser')->once() - ->withArgs([Mockery::any(), 'spectre_secret', $data['secret']]) - ->andReturn(new Preference()); - - $object = new SpectrePrerequisites; - $object->setUser($this->user()); - $this->assertEquals(0, $object->storePrerequisites($data)->count()); - } - -} diff --git a/tests/Unit/Import/Prerequisites/YnabPrerequisitesTest.php b/tests/Unit/Import/Prerequisites/YnabPrerequisitesTest.php deleted file mode 100644 index f55fa186c3..0000000000 --- a/tests/Unit/Import/Prerequisites/YnabPrerequisitesTest.php +++ /dev/null @@ -1,166 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace tests\Unit\Import\Prerequisites; - -use FireflyIII\Import\Prerequisites\YnabPrerequisites; -use FireflyIII\Models\Preference; -use Log; -use Mockery; -use Preferences; -use Tests\TestCase; - -/** - * Class YnabPrerequisitesTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class YnabPrerequisitesTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Prerequisites\YnabPrerequisites - */ - public function testGetView(): void - { - - $object = new YnabPrerequisites; - $object->setUser($this->user()); - $this->assertEquals('import.ynab.prerequisites', $object->getView()); - } - - /** - * First test, user has empty. - * - * @covers \FireflyIII\Import\Prerequisites\YnabPrerequisites - */ - public function testGetViewParametersEmpty(): void - { - $clientId = new Preference; - $clientId->data = ''; - - $clientSecret = new Preference; - $clientSecret->data = ''; - - Preferences::shouldReceive('getForUser')->once()->withArgs([Mockery::any(), 'ynab_client_id', null])->andReturn($clientId); - Preferences::shouldReceive('getForUser')->once()->withArgs([Mockery::any(), 'ynab_client_secret', null])->andReturn($clientSecret); - - $object = new YnabPrerequisites(); - $object->setUser($this->user()); - $result = $object->getViewParameters(); - - $expected = ['client_id' => '', 'client_secret' => '', 'callback_uri' => 'http://localhost/import/ynab-callback', 'is_https' => false]; - - $this->assertEquals($expected, $result); - } - - /** - * First test, user has nothing. - * - * @covers \FireflyIII\Import\Prerequisites\YnabPrerequisites - */ - public function testGetViewParametersFilled(): void - { - $clientId = new Preference; - $clientId->data = 'client-id'; - - $clientSecret = new Preference; - $clientSecret->data = 'client-secret'; - - Preferences::shouldReceive('getForUser')->twice()->withArgs([Mockery::any(), 'ynab_client_id', null])->andReturn($clientId); - Preferences::shouldReceive('getForUser')->twice()->withArgs([Mockery::any(), 'ynab_client_secret', null])->andReturn($clientSecret); - - $object = new YnabPrerequisites(); - $object->setUser($this->user()); - $result = $object->getViewParameters(); - - $expected = ['client_id' => 'client-id', 'client_secret' => 'client-secret', 'callback_uri' => 'http://localhost/import/ynab-callback', - 'is_https' => false]; - - $this->assertEquals($expected, $result); - } - - /** - * First test, user has nothing. - * - * @covers \FireflyIII\Import\Prerequisites\YnabPrerequisites - */ - public function testGetViewParametersNull(): void - { - - Preferences::shouldReceive('getForUser')->once()->withArgs([Mockery::any(), 'ynab_client_id', null])->andReturn(null); - Preferences::shouldReceive('getForUser')->once()->withArgs([Mockery::any(), 'ynab_client_secret', null])->andReturn(null); - - $object = new YnabPrerequisites(); - $object->setUser($this->user()); - $result = $object->getViewParameters(); - - $expected = ['client_id' => '', 'client_secret' => '', 'callback_uri' => 'http://localhost/import/ynab-callback', 'is_https' => false]; - - $this->assertEquals($expected, $result); - } - - /** - * @covers \FireflyIII\Import\Prerequisites\YnabPrerequisites - */ - public function testIsComplete(): void - { - - Preferences::shouldReceive('getForUser')->once()->withArgs([Mockery::any(), 'ynab_client_id', null])->andReturn(null); - - $object = new YnabPrerequisites(); - $object->setUser($this->user()); - $result = $object->isComplete(); - - $this->assertFalse($result); - } - - /** - * - */ - public function testStorePrerequisites(): void - { - - Preferences::shouldReceive('setForUser')->once()->withArgs([Mockery::any(), 'ynab_client_id', 'hello']); - Preferences::shouldReceive('setForUser')->once()->withArgs([Mockery::any(), 'ynab_client_secret', 'hi there']); - - $data = [ - 'client_id' => 'hello', - 'client_secret' => 'hi there', - ]; - - $object = new YnabPrerequisites(); - $object->setUser($this->user()); - $object->storePrerequisites($data); - } -} diff --git a/tests/Unit/Import/Routine/BunqRoutineTest.php b/tests/Unit/Import/Routine/BunqRoutineTest.php deleted file mode 100644 index 57433378e4..0000000000 --- a/tests/Unit/Import/Routine/BunqRoutineTest.php +++ /dev/null @@ -1,176 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Routine; - - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\Routine\BunqRoutine; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\Routine\Bunq\StageImportDataHandler; -use FireflyIII\Support\Import\Routine\Bunq\StageNewHandler; -use Log; -use Mockery; -use Tests\TestCase; - -/** - * Class BunqRoutineTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class BunqRoutineTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Routine\BunqRoutine - */ - public function testRunImport(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'brY_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'go-for-import'; - $job->provider = 'bunq'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock stuff: - $repository = $this->mock(ImportJobRepositoryInterface::class); - $handler = $this->mock(StageImportDataHandler::class); - - - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running']); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'provider_finished']); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'final']); - $repository->shouldReceive('appendTransactions')->withArgs([Mockery::any(), ['a' => 'c']])->once(); - - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('run')->once(); - $handler->shouldReceive('getTransactions')->once()->andReturn(['a' => 'c']); - $handler->shouldReceive('isStillRunning')->andReturn(false); - $routine = new BunqRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertFalse(true, $e->getMessage()); - } - - } - - /** - * @covers \FireflyIII\Import\Routine\BunqRoutine - */ - public function testRunImportStillRunning(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'brY_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'go-for-import'; - $job->provider = 'bunq'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock stuff: - $repository = $this->mock(ImportJobRepositoryInterface::class); - $handler = $this->mock(StageImportDataHandler::class); - - - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('run')->once(); - $handler->shouldReceive('getTransactions')->once()->andReturn(['a' => 'c']); - $handler->shouldReceive('isStillRunning')->andReturn(true); - - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'ready_to_run']); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'go-for-import']); - - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running']); - $repository->shouldReceive('appendTransactions')->withArgs([Mockery::any(), ['a' => 'c']])->once(); - - - $routine = new BunqRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertFalse(true, $e->getMessage()); - } - - } - - - /** - * @covers \FireflyIII\Import\Routine\BunqRoutine - */ - public function testRunNew(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'brX_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'new'; - $job->provider = 'bunq'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock stuff: - $repository = $this->mock(ImportJobRepositoryInterface::class); - $handler = $this->mock(StageNewHandler::class); - - - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running']); - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('run')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'need_job_config'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'choose-accounts'])->once(); - - $routine = new BunqRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertFalse(true, $e->getMessage()); - } - - } - -} diff --git a/tests/Unit/Import/Routine/FakeRoutineTest.php b/tests/Unit/Import/Routine/FakeRoutineTest.php deleted file mode 100644 index 276c8d3114..0000000000 --- a/tests/Unit/Import/Routine/FakeRoutineTest.php +++ /dev/null @@ -1,163 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Routine; - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\Routine\FakeRoutine; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\Routine\Fake\StageAhoyHandler; -use FireflyIII\Support\Import\Routine\Fake\StageFinalHandler; -use FireflyIII\Support\Import\Routine\Fake\StageNewHandler; -use Log; -use Mockery; -use Tests\TestCase; - -/** - * Class FakeRoutineTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class FakeRoutineTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - /** - * @covers \FireflyIII\Import\Routine\FakeRoutine - */ - public function testRunAhoy(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'a_route_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'ahoy'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock - $handler = $this->mock(StageAhoyHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // calls - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'need_job_config'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'final'])->once(); - $handler->shouldReceive('run')->once(); - - - $routine = new FakeRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\FakeRoutine - */ - public function testRunFinal(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'a_route_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'final'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock - $handler = $this->mock(StageFinalHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // calls - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'provider_finished'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'final'])->once(); - $repository->shouldReceive('setTransactions')->withArgs([Mockery::any(), []])->once(); - $handler->shouldReceive('getTransactions')->once()->andReturn([]); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $handler->shouldReceive('setImportJob')->once(); - - $routine = new FakeRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\FakeRoutine - */ - public function testRunNew(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'a_route_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock - $handler = $this->mock(StageNewHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // calls - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'ahoy'])->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'ready_to_run'])->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $handler->shouldReceive('run')->once(); - - - $routine = new FakeRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - -} diff --git a/tests/Unit/Import/Routine/FileRoutineTest.php b/tests/Unit/Import/Routine/FileRoutineTest.php deleted file mode 100644 index 745072d485..0000000000 --- a/tests/Unit/Import/Routine/FileRoutineTest.php +++ /dev/null @@ -1,103 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Routine; - - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Helpers\Attachments\AttachmentHelperInterface; -use FireflyIII\Import\Routine\FileRoutine; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\Routine\Bunq\StageImportDataHandler; -use FireflyIII\Support\Import\Routine\File\CSVProcessor; -use Illuminate\Support\Collection; -use Log; -use Mockery; -use Tests\TestCase; - -/** - * Class FileRoutineTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class FileRoutineTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Routine\FileRoutine - */ - public function testRunDefault(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'brY_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'go-for-import'; - $job->provider = 'file'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock stuff: - $repository = $this->mock(ImportJobRepositoryInterface::class); - $handler = $this->mock(StageImportDataHandler::class); - $this->mock(AttachmentHelperInterface::class); - $csv = $this->mock(CSVProcessor::class); - - $csv->shouldReceive('setImportJob')->atLeast()->once(); - $csv->shouldReceive('run')->atLeast()->once(); - - - $repository->shouldReceive('setUser')->atLeast()->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running']); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'provider_finished']); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'final']); - $repository->shouldReceive('getConfiguration')->atLeast()->once()->andReturn([]); - //$repository->shouldReceive('getAttachments')->atLeast()->once()->andReturn(new Collection); - $repository->shouldReceive('setTransactions')->atLeast()->once(); - //$repository->shouldReceive('appendTransactions')->withArgs([Mockery::any(), ['a' => 'c']])->once(); - - //$handler->shouldReceive('setImportJob')->once(); - //$handler->shouldReceive('run')->once(); - //$handler->shouldReceive('getTransactions')->once()->andReturn(['a' => 'c']); - $handler->shouldReceive('isStillRunning')->andReturn(false); - $routine = new FileRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertFalse(true, $e->getMessage()); - } - } -} diff --git a/tests/Unit/Import/Routine/FinTSRoutineTest.php b/tests/Unit/Import/Routine/FinTSRoutineTest.php deleted file mode 100644 index 594817bd2f..0000000000 --- a/tests/Unit/Import/Routine/FinTSRoutineTest.php +++ /dev/null @@ -1,92 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Routine; - - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\Routine\FinTSRoutine; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\Routine\FinTS\StageImportDataHandler; -use Log; -use Mockery; -use Tests\TestCase; - -/** - * Class FinTSRoutineTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class FinTSRoutineTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - /** - * @covers \FireflyIII\Import\Routine\FinTSRoutine - */ - public function testRunDefault(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'a_fin_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'go-for-import'; - $job->provider = 'fints'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock - $handler = $this->mock(StageImportDataHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'provider_finished'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'final'])->once(); - $repository->shouldReceive('setTransactions')->withArgs([Mockery::any(), ['a' => 'b']])->once(); - - $handler->shouldReceive('setImportJob')->atLeast()->once(); - $handler->shouldReceive('run')->once()->atLeast()->once(); - $handler->shouldReceive('getTransactions')->atLeast()->once()->andReturn(['a' => 'b']); - - - $routine = new FinTSRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } -} diff --git a/tests/Unit/Import/Routine/SpectreRoutineTest.php b/tests/Unit/Import/Routine/SpectreRoutineTest.php deleted file mode 100644 index bdb49ef9ac..0000000000 --- a/tests/Unit/Import/Routine/SpectreRoutineTest.php +++ /dev/null @@ -1,243 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Routine; - - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\Routine\SpectreRoutine; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\Routine\Spectre\StageAuthenticatedHandler; -use FireflyIII\Support\Import\Routine\Spectre\StageImportDataHandler; -use FireflyIII\Support\Import\Routine\Spectre\StageNewHandler; -use Log; -use Mockery; -use Tests\TestCase; - -/** - * Class SpectreRoutineTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class SpectreRoutineTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Routine\SpectreRoutine - */ - public function testRunAuthenticated(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'SR2b' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'authenticated'; - $job->provider = 'spectre'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(StageAuthenticatedHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'need_job_config'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'choose-accounts'])->once(); - - // mock calls for handler - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('run')->once(); - - $routine = new SpectreRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\SpectreRoutine - */ - public function testRunDoAuthenticate(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'SR1A' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'do-authenticate'; - $job->provider = 'spectre'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'need_job_config'])->once(); - - $routine = new SpectreRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\SpectreRoutine - */ - public function testRunGoImport(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'SR3c' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'go-for-import'; - $job->provider = 'spectre'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(StageImportDataHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'provider_finished'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'do_import'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'final'])->once(); - - // mock calls for handler - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('run')->once(); - - $routine = new SpectreRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\SpectreRoutine - */ - public function testRunNewOneLogin(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'SR4A' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'new'; - $job->provider = 'spectre'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(StageNewHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'need_job_config'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'choose-login'])->once(); - - // mock calls for handler - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('getCountLogins')->once()->andReturn(2); - $handler->shouldReceive('run')->once(); - - - $routine = new SpectreRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\SpectreRoutine - */ - public function testRunNewZeroLogins(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'SR5A' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'new'; - $job->provider = 'spectre'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(StageNewHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'ready_to_run'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'do-authenticate'])->once(); - - // mock calls for handler - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('getCountLogins')->once()->andReturn(0); - $handler->shouldReceive('run')->once(); - - - $routine = new SpectreRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } -} diff --git a/tests/Unit/Import/Routine/YnabRoutineTest.php b/tests/Unit/Import/Routine/YnabRoutineTest.php deleted file mode 100644 index eb97b1ca31..0000000000 --- a/tests/Unit/Import/Routine/YnabRoutineTest.php +++ /dev/null @@ -1,321 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace tests\Unit\Import\Routine; - - -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Import\Routine\YnabRoutine; -use FireflyIII\Models\ImportJob; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Support\Import\Routine\Ynab\GetAccountsHandler; -use FireflyIII\Support\Import\Routine\Ynab\ImportDataHandler; -use FireflyIII\Support\Import\Routine\Ynab\StageGetAccessHandler; -use FireflyIII\Support\Import\Routine\Ynab\StageGetBudgetsHandler; -use Log; -use Mockery; -use Tests\TestCase; - -/** - * Class YnabRoutineTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class YnabRoutineTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - /** - * @covers \FireflyIII\Import\Routine\YnabRoutine - */ - public function testRunBadStatus(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_r_7_' . $this->randomInt(); - $job->status = 'not_ready_to_run'; - $job->stage = 'bad_state'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(ImportDataHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - - $routine = new YnabRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertEquals('YNAB import routine cannot handle stage "bad_state"', $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\YnabRoutine - */ - public function testRunException(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_r_6_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'bad_state'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(ImportDataHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - - $routine = new YnabRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertEquals('YNAB import routine cannot handle stage "bad_state"', $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\YnabRoutine - */ - public function testRunGetAccessToken(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_r_1_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'get_access_token'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(StageGetAccessHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'ready_to_run'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'get_budgets'])->once(); - - // mock calls for handler - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('run')->once(); - - $routine = new YnabRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\YnabRoutine - */ - public function testRunGetAccounts(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_r_4_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'get_accounts'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(GetAccountsHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'select_accounts'])->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'need_job_config'])->once(); - - - // mock calls for handler - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('run')->once(); - - $routine = new YnabRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\YnabRoutine - */ - public function testRunGoForImport(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_r_5_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'go-for-import'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(ImportDataHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'do_import'])->once(); - - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'provider_finished'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'final'])->once(); - - - // mock calls for handler - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('run')->once(); - - $routine = new YnabRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\YnabRoutine - */ - public function testRunMultiBudgets(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_r_2_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'get_budgets'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(StageGetBudgetsHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - $config = ['budgets' => [1, 2, 3]]; - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $repository->shouldReceive('getConfiguration')->once()->andReturn($config); - - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'need_job_config'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'select_budgets'])->once(); - - // mock calls for handler - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('run')->once(); - - $routine = new YnabRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @covers \FireflyIII\Import\Routine\YnabRoutine - */ - public function testRunSingleBudget(): void - { - $job = new ImportJob; - $job->user_id = $this->user()->id; - $job->key = 'ynab_r_3_' . $this->randomInt(); - $job->status = 'ready_to_run'; - $job->stage = 'get_budgets'; - $job->provider = 'ynab'; - $job->file_type = ''; - $job->configuration = []; - $job->save(); - - // mock handler and repository - $handler = $this->mock(StageGetBudgetsHandler::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - - $config = ['budgets' => [1]]; - - // mock calls for repository - $repository->shouldReceive('setUser')->once(); - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'running'])->once(); - $repository->shouldReceive('getConfiguration')->once()->andReturn($config); - - $repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'ready_to_run'])->once(); - $repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'get_accounts'])->once(); - - // mock calls for handler - $handler->shouldReceive('setImportJob')->once(); - $handler->shouldReceive('run')->once(); - - $routine = new YnabRoutine; - $routine->setImportJob($job); - try { - $routine->run(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } -} diff --git a/tests/Unit/Import/Specifics/AbnAmroDescriptionTest.php b/tests/Unit/Import/Specifics/AbnAmroDescriptionTest.php deleted file mode 100644 index 8f20a72e14..0000000000 --- a/tests/Unit/Import/Specifics/AbnAmroDescriptionTest.php +++ /dev/null @@ -1,190 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Specifics; - - -use FireflyIII\Import\Specifics\AbnAmroDescription; -use Log; -use Tests\TestCase; - -/** - * Class AbnAmroDescriptionTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class AbnAmroDescriptionTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * Should return the exact same array. - * - * @covers \FireflyIII\Import\Specifics\AbnAmroDescription - */ - public function testEmptyRow(): void - { - $row = [1, 2, 3, 4]; - - $parser = new AbnAmroDescription; - $result = $parser->run($row); - $this->assertEquals($row, $result); - } - - /** - * Data that cannot be parsed. - * - * @covers \FireflyIII\Import\Specifics\AbnAmroDescription - */ - public function testParseABN(): void - { - $row = [0, 1, 2, 3, 4, 5, 6, 'ABN AMRO 12345678901234567890ABC SomeOtherDescr', '']; - - $parser = new AbnAmroDescription; - $result = $parser->run($row); - $this->assertEquals('SomeOtherDescr', $result[7]); - $this->assertEquals('ABN AMRO', $result[8]); - } - - /** - * GEA - * - * @covers \FireflyIII\Import\Specifics\AbnAmroDescription - */ - public function testParseGea(): void - { - $row = [0, 1, 2, 3, 4, 5, 6, 'BEA: GEA NR:00AJ01 31.01.01/19.54 Van HarenSchoenen132 UDE,PAS333', '']; - - $parser = new AbnAmroDescription; - $result = $parser->run($row); - $this->assertEquals('Van HarenSchoenen132 UDE', $result[8]); - $this->assertEquals('GEA Van HarenSchoenen132 UDE', $result[7]); - } - - /** - * Gea bea - * - * @covers \FireflyIII\Import\Specifics\AbnAmroDescription - */ - public function testParseGeaBea(): void - { - $row = [0, 1, 2, 3, 4, 5, 6, 'BEA: BEA NR:00AJ01 31.01.01/19.54 Van HarenSchoenen132 UDE,PAS333', '']; - - $parser = new AbnAmroDescription; - $result = $parser->run($row); - $this->assertEquals('Van HarenSchoenen132 UDE', $result[8]); - $this->assertEquals('Van HarenSchoenen132 UDE', $result[7]); - } - - /** - * Data that cannot be parsed. - * - * @covers \FireflyIII\Import\Specifics\AbnAmroDescription - */ - public function testParseUnknown(): void - { - $row = [0, 1, 2, 3, 4, 5, 6, 'Blabla', '']; - - $parser = new AbnAmroDescription; - $result = $parser->run($row); - $this->assertEquals('Unknown', $result[8]); - } - - /** - * Basic SEPA data. - * - * @covers \FireflyIII\Import\Specifics\AbnAmroDescription - */ - public function testSepaBasic(): void - { - $row = [0, 1, 2, 3, 4, 5, 6, - 'SEPA PLAIN: SEPA iDEAL IBAN: NL12RABO0121212212 BIC: RABONL2U Naam: Silver Ocean B.V. Omschrijving: 1232138 1232131233 412321 iBOOD.com iBOOD.com B.V. Kenmerk: 12-12-2014 21:03 002000 0213123238', - '', '']; - $parser = new AbnAmroDescription; - $result = $parser->run($row); - $this->assertEquals('1232138 1232131233 412321 iBOOD.com iBOOD.com B.V.', $result[7]); - $this->assertEquals('Silver Ocean B.V.', $result[8]); - $this->assertEquals('NL12RABO0121212212', $result[9]); - } - - /** - * Basic SEPA data. - * - * @covers \FireflyIII\Import\Specifics\AbnAmroDescription - */ - public function testSepaBasicNoDescription(): void - { - $row = [0, 1, 2, 3, 4, 5, 6, - 'SEPA PLAIN: SEPA iDEAL IBAN: NL12RABO0121212212 BIC: RABONL2U Naam: Silver Ocean B.V. Omschrijving: Kenmerk: 12-12-2014 21:03 002000 0213123238', - '', '']; - $parser = new AbnAmroDescription; - $result = $parser->run($row); - $this->assertEquals(' PLAIN: SEPA iDEAL - Silver Ocean B.V. (12-12-2014)', $result[7]); - $this->assertEquals('Silver Ocean B.V.', $result[8]); - $this->assertEquals('NL12RABO0121212212', $result[9]); - } - - /** - * Basic TRTP data. - * - * @covers \FireflyIII\Import\Specifics\AbnAmroDescription - */ - public function testTRTPBasic(): void - { - - $row = [0, 1, 2, 3, 4, 5, 6, '/TRTP/SEPA OVERBOEKING/IBAN/NL23ABNA0000000000/BIC/ABNANL2A/NAME/baasd dsdsT CJ/REMI/Nullijn/EREF/NOTPROVIDED', '', - '']; - $parser = new AbnAmroDescription; - $result = $parser->run($row); - $this->assertEquals('Nullijn', $result[7]); - $this->assertEquals('baasd dsdsT CJ', $result[8]); - $this->assertEquals('NL23ABNA0000000000', $result[9]); - } - - /** - * Basic TRTP data with empty description - * - * @covers \FireflyIII\Import\Specifics\AbnAmroDescription - */ - public function testTRTPEmptyDescr(): void - { - - $row = [0, 1, 2, 3, 4, 5, 6, '/TRTP/SEPA OVERBOEKING/IBAN/NL23ABNA0000000000/BIC/ABNANL2A/NAME/baasd dsdsT CJ/REMI//EREF/NOTPROVIDED', '', '']; - $parser = new AbnAmroDescription; - $result = $parser->run($row); - $this->assertEquals('SEPA OVERBOEKING - (NOTPROVIDED)', $result[7]); - $this->assertEquals('baasd dsdsT CJ', $result[8]); - $this->assertEquals('NL23ABNA0000000000', $result[9]); - } - - -} diff --git a/tests/Unit/Import/Specifics/BelfiusTest.php b/tests/Unit/Import/Specifics/BelfiusTest.php deleted file mode 100644 index da1cfcdc72..0000000000 --- a/tests/Unit/Import/Specifics/BelfiusTest.php +++ /dev/null @@ -1,92 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Specifics; - - -use FireflyIII\Import\Specifics\Belfius; -use Log; -use Tests\TestCase; - -/** - * Class BelfiusTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class BelfiusTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * Should return the exact same array. - * - * @covers \FireflyIII\Import\Specifics\Belfius - */ - public function testEmptyRow(): void - { - $row = [1, 2, 3, 4]; - - $parser = new Belfius; - $result = $parser->run($row); - $this->assertEquals($row, $result); - } - - /** - * Data with recurring transaction. - * - * @covers \FireflyIII\Import\Specifics\Belfius - */ - public function testProcessRecurringTransaction(): void - { - $row = [0, 1, 2, 3, 4, 'Tom Jones', 6, 7, 8, 9, 10, 11, 12, 13, - 'DOORLOPENDE OPDRACHT 12345678 NAAR BE01 1234 5678 9012 Tom Jones My Description REF. : 01234567890 VAL. 01-01']; - - $parser = new Belfius; - $result = $parser->run($row); - $this->assertEquals('My Description', $result[14]); - } - - /** - * Data that cannot be parsed. - * - * @covers \FireflyIII\Import\Specifics\Belfius - */ - public function testProcessUnknown(): void - { - $row = [0, 1, 2, 3, 4, 'STORE BRUSSEL n/v', 6, 7, 8, 9, 10, 11, 12, 13, - 'AANKOOP BANCONTACT CONTACTLESS MET KAART NR 01234 5678 9012 3456 - FOO BAR OP 01/01 00:01 STORE BRUSSEL n/v REF. : 01234567890 VAL. 01-01']; - - $parser = new Belfius; - $result = $parser->run($row); - $this->assertEquals($row, $result); - } -} diff --git a/tests/Unit/Import/Specifics/IngBelgiumTest.php b/tests/Unit/Import/Specifics/IngBelgiumTest.php deleted file mode 100644 index 30f829b287..0000000000 --- a/tests/Unit/Import/Specifics/IngBelgiumTest.php +++ /dev/null @@ -1,135 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Specifics; - - -use FireflyIII\Import\Specifics\IngBelgium; -use Log; -use Tests\TestCase; - -/** - * Class IngBelgiumTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class IngBelgiumTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * Should return the exact same array. - * - * @covers \FireflyIII\Import\Specifics\IngBelgium - */ - public function testEmptyRow(): void - { - $row = [0, 1, 2, 3, 4]; - - $parser = new IngBelgium; - $result = $parser->run($row); - $this->assertEquals($row, $result); - } - - /** - * Data with description and opposing account information. - * - * @covers \FireflyIII\Import\Specifics\IngBelgium - */ - public function testParseDescriptionAndOpposingAccountInformation(): void - { - $row = [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 'Europese overschrijving Van: DE H JOHN DOE De Laan 123 1000 BRUSSEL België IBAN: BE01123456789012 Mededeling: A random description ', - 10 - ]; - - $parser = new IngBelgium; - $result = $parser->run($row); - $this->assertEquals($row, array_slice($result, 0, 11)); - $this->assertEquals('DE H JOHN DOE', $result[11]); - $this->assertEquals('BE01123456789012', $result[12]); - $this->assertEquals('A random description', $result[13]); - } - - /** - * Data with structured description. - * - * @covers \FireflyIII\Import\Specifics\IngBelgium - */ - public function testParseStructuredDescription(): void - { - $row = [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 'Europese overschrijving Mededeling: ***090/9337/55493*** ', - 10 - ]; - - $parser = new IngBelgium; - $result = $parser->run($row); - $this->assertEquals($row, array_slice($result, 0, 11)); - $this->assertEquals('+++090/9337/55493+++', $result[13]); - } - - /** - * Empty transaction details - * - * @covers \FireflyIII\Import\Specifics\IngBelgium - */ - public function testEmptyTransactionDetails(): void - { - $row = [0, 1, 2, 3, 4, 5, 6, 7, 8, '', 10]; - - $parser = new IngBelgium; - $result = $parser->run($row); - $this->assertEquals($row, array_slice($result, 0, 11)); - $this->assertEquals('', $result[11]); - $this->assertEquals('', $result[12]); - $this->assertEquals('', $result[13]); - } -} diff --git a/tests/Unit/Import/Specifics/IngDescriptionTest.php b/tests/Unit/Import/Specifics/IngDescriptionTest.php deleted file mode 100644 index e3c1f6b42e..0000000000 --- a/tests/Unit/Import/Specifics/IngDescriptionTest.php +++ /dev/null @@ -1,153 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Specifics; - - -use FireflyIII\Import\Specifics\IngDescription; -use Log; -use Tests\TestCase; - -/** - * Class IngDescriptionTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class IngDescriptionTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * Test changes to BA row. - * - * Remove specific fields. - * - * @covers \FireflyIII\Import\Specifics\IngDescription - */ - public function testRunBABasic(): void - { - $row = [0, 'XX', 2, '', 'BA', 5, 6, 7, 'XX', 9, 10]; - - $parser = new IngDescription; - $result = $parser->run($row); - $this->assertEquals('XX XX', $result[8]); - } - - /** - * Empty description? Use "tegenrekening". - * Remove specific fields. - * - * @covers \FireflyIII\Import\Specifics\IngDescription - */ - public function testRunEmptyDescr(): void - { - $row = [0, 1, 2, '', 'GT', 5, 6, 7, 'Naar Oranje Spaarrekening Bla bla', 9, 10]; - - $parser = new IngDescription; - $result = $parser->run($row); - $this->assertEquals('Bla bla', $result[3]); - } - - /** - * See if the description is removed - * - * @covers \FireflyIII\Import\Specifics\IngDescription - */ - public function testRunGTRemoveDescr(): void - { - $iban = 'NL66INGB0665877351'; - $row = [0, 1, 2, $iban, 'GT', 5, 6, 7, 'Bla bla bla Omschrijving: Should be removed IBAN: ' . $iban, 9, 10]; - - $parser = new IngDescription; - $result = $parser->run($row); - $this->assertEquals('Should be removed', $result[8]); - } - - /** - * Try if the IBAN is removed in GT transactions - * - * @covers \FireflyIII\Import\Specifics\IngDescription - */ - public function testRunGTRemoveIban(): void - { - $iban = 'NL66INGB0665877351'; - $row = [0, 1, 2, $iban, 'GT', 5, 6, 7, 'Should be removed IBAN: ' . $iban, 9, 10]; - - $parser = new IngDescription; - $result = $parser->run($row); - $this->assertEquals('Should be removed', $result[8]); - } - - /** - * Try if the IBAN is removed in IC transactions - * - * @covers \FireflyIII\Import\Specifics\IngDescription - */ - public function testRunICRemoveIban(): void - { - $iban = 'NL66INGB0665877351'; - $row = [0, 1, 2, $iban, 'IC', 5, 6, 7, 'Should be removed IBAN: ' . $iban, 9, 10]; - - $parser = new IngDescription; - $result = $parser->run($row); - $this->assertEquals('Should be removed', $result[8]); - } - - /** - * Try if the IBAN is removed in OV transactions - * - * @covers \FireflyIII\Import\Specifics\IngDescription - */ - public function testRunOVRemoveIban(): void - { - $iban = 'NL66INGB0665877351'; - $row = [0, 1, 2, $iban, 'OV', 5, 6, 7, 'Should be removed IBAN: ' . $iban, 9, 10]; - - $parser = new IngDescription; - $result = $parser->run($row); - $this->assertEquals('Should be removed', $result[8]); - } - - /** - * @covers \FireflyIII\Import\Specifics\IngDescription - */ - public function testRunShortArray(): void - { - $row = [0, 1, 2, 3]; - - $parser = new IngDescription; - $result = $parser->run($row); - - $this->assertEquals($row, $result); - } - -} diff --git a/tests/Unit/Import/Specifics/PresidentsChoiceTest.php b/tests/Unit/Import/Specifics/PresidentsChoiceTest.php deleted file mode 100644 index 2d58ef6c72..0000000000 --- a/tests/Unit/Import/Specifics/PresidentsChoiceTest.php +++ /dev/null @@ -1,76 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Specifics; - - -use FireflyIII\Import\Specifics\PresidentsChoice; -use Log; -use Tests\TestCase; - -/** - * Class PresidentsChoiceTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class PresidentsChoiceTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Specifics\PresidentsChoice - */ - public function testRunAmount(): void - { - $row = ['', 'Descr', '12.34', '', '']; - - $parser = new PresidentsChoice; - $result = $parser->run($row); - $this->assertEquals('-12.340000000000', $result[3]); - $this->assertEquals('Descr', $result[2]); - - } - - /** - * @covers \FireflyIII\Import\Specifics\PresidentsChoice - */ - public function testRunBasic(): void - { - $row = ['']; - - $parser = new PresidentsChoice; - $result = $parser->run($row); - $this->assertEquals($row, $result); - - } - -} diff --git a/tests/Unit/Import/Specifics/SnsDescriptionTest.php b/tests/Unit/Import/Specifics/SnsDescriptionTest.php deleted file mode 100644 index 8bcd0b2fb9..0000000000 --- a/tests/Unit/Import/Specifics/SnsDescriptionTest.php +++ /dev/null @@ -1,86 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Specifics; - - -use FireflyIII\Import\Specifics\SnsDescription; -use Log; -use Tests\TestCase; - -/** - * Class SnsDescriptionTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class SnsDescriptionTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * @covers \FireflyIII\Import\Specifics\SnsDescription - */ - public function testRunBasic(): void - { - $row = ['a', 'b', 'c']; - - $parser = new SnsDescription; - $result = $parser->run($row); - $this->assertEquals($row, $result); - } - - /** - * @covers \FireflyIII\Import\Specifics\SnsDescription - */ - public function testRunNoQuotes(): void - { - $row = ['a', 'b', 'c', 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 'Some text']; - - $parser = new SnsDescription; - $result = $parser->run($row); - $this->assertEquals($row, $result); - $this->assertEquals('Some text', $result[17]); - } - - /** - * @covers \FireflyIII\Import\Specifics\SnsDescription - */ - public function testRunQuotes(): void - { - $row = ['a', 'b', 'c', 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, '\'Some text\'']; - - $parser = new SnsDescription; - $result = $parser->run($row); - $this->assertEquals('Some text', $result[17]); - } - -} diff --git a/tests/Unit/Import/Storage/ImportArrayStorageTest.php b/tests/Unit/Import/Storage/ImportArrayStorageTest.php deleted file mode 100644 index 972c397134..0000000000 --- a/tests/Unit/Import/Storage/ImportArrayStorageTest.php +++ /dev/null @@ -1,1233 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace Tests\Unit\Import\Storage; - -use Amount; -use Event; -use FireflyIII\Exceptions\FireflyException; -use FireflyIII\Helpers\Collector\GroupCollectorInterface; -use FireflyIII\Import\Storage\ImportArrayStorage; -use FireflyIII\Models\ImportJob; -use FireflyIII\Models\Preference; -use FireflyIII\Models\Transaction; -use FireflyIII\Models\TransactionJournal; -use FireflyIII\Models\TransactionJournalMeta; -use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface; -use FireflyIII\Repositories\Journal\JournalRepositoryInterface; -use FireflyIII\Repositories\Rule\RuleRepositoryInterface; -use FireflyIII\Repositories\Tag\TagRepositoryInterface; -use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface; -use FireflyIII\Repositories\User\UserRepositoryInterface; -use FireflyIII\TransactionRules\Processor; -use FireflyIII\Transformers\TransactionGroupTransformer; -use Illuminate\Support\Collection; -use Log; -use Mockery; -use Preferences; -use Tests\TestCase; - -/** - * Class ImportArrayStorageTest - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - * @SuppressWarnings(PHPMD.ExcessiveClassLength) - * - */ -class ImportArrayStorageTest extends TestCase -{ - /** - * - */ - public function setUp(): void - { - parent::setUp(); - Log::info(sprintf('Now in %s.', get_class($this))); - } - - - /** - * Very basic storage routine. Doesn't call store() - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - */ - public function testBasic(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // mock stuff - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - - $this->mock(TransactionGroupTransformer::class); - $this->mock(UserRepositoryInterface::class); - $this->mock(TagRepositoryInterface::class); - $this->mock(Processor::class); - $this->mock(RuleRepositoryInterface::class); - $this->mock(GroupCollectorInterface::class); - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn([]); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * Same as testBasic but submits the minimum amount of data required to store a transaction. - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - * - */ - public function testSimple(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // data to submit: - $transactions = [ - $this->singleImportWithdrawal(), - ]; - - // data that is returned: - $withdrawalGroup = $this->getRandomWithdrawalGroup(); - $tag = $this->getRandomTag(); - - // mock stuff - $userRepos = $this->mock(UserRepositoryInterface::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - $tagRepos = $this->mock(TagRepositoryInterface::class); - $transformer = $this->mock(TransactionGroupTransformer::class); - - $this->mock(Processor::class); - $this->mock(RuleRepositoryInterface::class); - $this->mock(GroupCollectorInterface::class); - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - $tagRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn($transactions); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - - // calls to validate and import transactions: - $journalRepos->shouldReceive('findByHash')->withArgs([Mockery::any()])->atLeast()->once()->andReturnNull(); - $groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($withdrawalGroup); - $tagRepos->shouldReceive('store')->atLeast()->once()->andReturn($tag); - $repository->shouldReceive('setTag')->atLeast()->once()->andReturn($job); - - // fake the event. - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * Same as testBasic but submits the minimum amount of data required to store a transaction. - * - * Also applies the rules, but there are none. - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - * - */ - public function testSimpleApplyNoRules(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // data to submit: - $transactions = [ - $this->singleImportWithdrawal(), - ]; - - // data that is returned: - $withdrawalGroup = $this->getRandomWithdrawalGroup(); - $tag = $this->getRandomTag(); - - // mock stuff - $userRepos = $this->mock(UserRepositoryInterface::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - $ruleRepos = $this->mock(RuleRepositoryInterface::class); - $tagRepos = $this->mock(TagRepositoryInterface::class); - $transformer = $this->mock(TransactionGroupTransformer::class); - - $this->mock(Processor::class); - - $this->mock(GroupCollectorInterface::class); - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = [ - 'apply-rules' => true, - ]; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - $tagRepos->shouldReceive('setUser')->atLeast()->once(); - $ruleRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn($transactions); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'applying_rules']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'rules_applied']); - - - // calls to validate and import transactions: - $journalRepos->shouldReceive('findByHash')->withArgs([Mockery::any()])->atLeast()->once()->andReturnNull(); - $groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($withdrawalGroup); - $tagRepos->shouldReceive('store')->atLeast()->once()->andReturn($tag); - $repository->shouldReceive('setTag')->atLeast()->once()->andReturn($job); - - // calls for application of rules, but returns NO rules. - $ruleRepos->shouldReceive('getForImport')->once()->andReturn(new Collection); - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * Same as testBasic but submits the minimum amount of data required to store a transaction. - * - * Also applies the rules, but there are none. - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - * - */ - public function testSimpleApplyOneRules(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // data to submit: - $transactions = [ - $this->singleImportWithdrawal(), - ]; - - // data that is returned: - $withdrawalGroup = $this->getRandomWithdrawalGroup(); - $tag = $this->getRandomTag(); - $rule = $this->getRandomRule(); - - // mock stuff - $userRepos = $this->mock(UserRepositoryInterface::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - $ruleRepos = $this->mock(RuleRepositoryInterface::class); - $tagRepos = $this->mock(TagRepositoryInterface::class); - $processor = $this->mock(Processor::class); - $transformer = $this->mock(TransactionGroupTransformer::class); - - $this->mock(GroupCollectorInterface::class); - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = [ - 'apply-rules' => true, - ]; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - $tagRepos->shouldReceive('setUser')->atLeast()->once(); - $ruleRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn($transactions); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'applying_rules']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'rules_applied']); - - - // calls to validate and import transactions: - $journalRepos->shouldReceive('findByHash')->withArgs([Mockery::any()])->atLeast()->once()->andReturnNull(); - $groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($withdrawalGroup); - $tagRepos->shouldReceive('store')->atLeast()->once()->andReturn($tag); - $repository->shouldReceive('setTag')->atLeast()->once()->andReturn($job); - - // calls for application of rules, but returns 1 rules. - $ruleRepos->shouldReceive('getForImport')->once()->andReturn(new Collection([$rule])); - $processor->shouldReceive('make')->atLeast()->once(); - $processor->shouldReceive('handleTransactionJournal')->atLeast()->once(); - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * Same as testBasic but submits the minimum amount of data required to store a transaction. - * - * The one journal in the list is a duplicate. - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - * - */ - public function testSimpleDuplicate(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // data to submit: - $transactions = [ - $this->singleImportWithdrawal(), - ]; - - // mock stuff - $userRepos = $this->mock(UserRepositoryInterface::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - $transformer = $this->mock(TransactionGroupTransformer::class); - - $this->mock(TagRepositoryInterface::class); - $this->mock(Processor::class); - $this->mock(RuleRepositoryInterface::class); - $this->mock(GroupCollectorInterface::class); - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - $meta = new TransactionJournalMeta; - $meta->transaction_journal_id = 1; - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn($transactions); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - - // calls to validate and import transactions: - $journalRepos->shouldReceive('findByHash')->withArgs([Mockery::any()])->atLeast()->once()->andReturn($meta); - - // errors because of duplicate: - $repository->shouldReceive('addErrorMessage')->atLeast()->once() - ->withArgs([Mockery::any(), 'Row #0 ("") could not be imported. It already exists.']); - - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * Submit a transfer. Mark it as not duplicate. - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - * - */ - public function testTransfer(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // data to submit: - $transactions = [ - $this->singleImportTransfer(), - ]; - - // data that is returned: - $withdrawalGroup = $this->getRandomWithdrawalGroup(); - $tag = $this->getRandomTag(); - $transfer = $this->getRandomTransferAsArray(); - - // mock stuff - $userRepos = $this->mock(UserRepositoryInterface::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - $tagRepos = $this->mock(TagRepositoryInterface::class); - $collector = $this->mock(GroupCollectorInterface::class); - $transformer = $this->mock(TransactionGroupTransformer::class); - $this->mock(Processor::class); - $this->mock(RuleRepositoryInterface::class); - - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - $tagRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn($transactions); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - - // calls to validate and import transactions: - $journalRepos->shouldReceive('findByHash')->withArgs([Mockery::any()])->atLeast()->once()->andReturnNull(); - $groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($withdrawalGroup); - $tagRepos->shouldReceive('store')->atLeast()->once()->andReturn($tag); - $repository->shouldReceive('setTag')->atLeast()->once()->andReturn($job); - - // also mocks collector: - $collector->shouldReceive('setUser')->atLeast()->once(); - $collector->shouldReceive('setTypes')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setLimit')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setPage')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setGroup')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('withAccountInformation')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('getExtractedJournals')->atLeast()->once()->andReturn([$transfer]); - - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * Submit a transfer, and its not duplicate. - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - * - */ - public function testTransferNotDuplicate(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // data to submit: - $transactions = [ - $this->singleImportTransfer(), - ]; - - // data that is returned: - $transferGroup = $this->getRandomTransferGroup(); - $tag = $this->getRandomTag(); - $transfer = $this->getRandomTransferAsArray(); - - // make sure the right fields of the transfergroup and the transactions - // are equal, so the duplicate detector is triggered. - - // mock stuff - $userRepos = $this->mock(UserRepositoryInterface::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - $tagRepos = $this->mock(TagRepositoryInterface::class); - $collector = $this->mock(GroupCollectorInterface::class); - $transformer = $this->mock(TransactionGroupTransformer::class); - $this->mock(Processor::class); - $this->mock(RuleRepositoryInterface::class); - - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - $tagRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn($transactions); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - - // calls to validate and import transactions: - $journalRepos->shouldReceive('findByHash')->withArgs([Mockery::any()])->atLeast()->once()->andReturnNull(); - $groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($transferGroup); - $tagRepos->shouldReceive('store')->atLeast()->once()->andReturn($tag); - $repository->shouldReceive('setTag')->atLeast()->once()->andReturn($job); - - // also mocks collector: - $collector->shouldReceive('setUser')->atLeast()->once(); - $collector->shouldReceive('setTypes')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setLimit')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setPage')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setGroup')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('withAccountInformation')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('getExtractedJournals')->atLeast()->once()->andReturn([$transfer]); - - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * Submit a transfer, and the amounts match, and the description matches, - * and the date matches, and the accounts match, making it a duplicate. - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - * - */ - public function testTransferNotDuplicateAccounts(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // data to submit: - $transactions = [ - $this->singleImportTransfer(), - ]; - - // data that is returned: - $transferGroup = $this->getRandomTransferGroup(); - $tag = $this->getRandomTag(); - $transfer = $this->getRandomTransferAsArray(); - - // are equal, so the duplicate detector is triggered. - $transfer['amount'] = '56.78'; - $transfer['source_account_id'] = 0; - $transfer['source_account_name'] = 'x'; - $transfer['destination_account_id'] = 0; - $transfer['destination_account_name'] = 'x'; - $transactions[0]['transactions'][0]['amount'] = '56.78'; - $transactions[0]['transactions'][0]['description'] = $transfer['description']; - $transactions[0]['transactions'][0]['date'] = $transfer['date']->format('Y-m-d H:i:s'); - - - //$transferGroup['transactions']['amount'] = '12'; - /** @var TransactionJournal $journal */ - $journal = $transferGroup->transactionJournals->first(); - $journal->transactions->each( - static function (Transaction $t) { - if ($t->amount < 0) { - $t->amount = '-56.78'; - } - if ($t->amount > 0) { - $t->amount = '56.78'; - } - $t->save(); - } - ); - $transferGroup->refresh(); - - // mock stuff - $userRepos = $this->mock(UserRepositoryInterface::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - $collector = $this->mock(GroupCollectorInterface::class); - $transformer = $this->mock(TransactionGroupTransformer::class); - $this->mock(TagRepositoryInterface::class); - $this->mock(Processor::class); - $this->mock(RuleRepositoryInterface::class); - - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn($transactions); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - - // calls to validate and import transactions: - $journalRepos->shouldReceive('findByHash')->withArgs([Mockery::any()])->atLeast()->once()->andReturnNull(); - - // also mocks collector: - $collector->shouldReceive('setUser')->atLeast()->once(); - $collector->shouldReceive('setTypes')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setLimit')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setPage')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('withAccountInformation')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('getExtractedJournals')->atLeast()->once()->andReturn([$transfer]); - - // since a duplicate was found, must register error: - $repository->shouldReceive('addErrorMessage')->atLeast()->once()->withArgs( - [Mockery::any(), sprintf('Row #0 ("%s") could not be imported. It already exists.', $transfer['description'])] - ); - - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * Submit a transfer, and the amounts match, but the rest doesn't. - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - * - */ - public function testTransferNotDuplicateAmount(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // data to submit: - $transactions = [ - $this->singleImportTransfer(), - ]; - - // data that is returned: - $transferGroup = $this->getRandomTransferGroup(); - $tag = $this->getRandomTag(); - $transfer = $this->getRandomTransferAsArray(); - - // are equal, so the duplicate detector is triggered. - $transactions[0]['transactions'][0]['amount'] = '56.78'; - $transfer['amount'] = '56.78'; - //$transferGroup['transactions']['amount'] = '12'; - /** @var TransactionJournal $journal */ - $journal = $transferGroup->transactionJournals->first(); - $journal->transactions->each( - static function (Transaction $t) { - if ($t->amount < 0) { - $t->amount = '-56.78'; - } - if ($t->amount > 0) { - $t->amount = '56.78'; - } - $t->save(); - } - ); - $transferGroup->refresh(); - - // mock stuff - $userRepos = $this->mock(UserRepositoryInterface::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - $tagRepos = $this->mock(TagRepositoryInterface::class); - $collector = $this->mock(GroupCollectorInterface::class); - $transformer = $this->mock(TransactionGroupTransformer::class); - $this->mock(Processor::class); - $this->mock(RuleRepositoryInterface::class); - - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - $tagRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn($transactions); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - - // calls to validate and import transactions: - $journalRepos->shouldReceive('findByHash')->withArgs([Mockery::any()])->atLeast()->once()->andReturnNull(); - $groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($transferGroup); - $tagRepos->shouldReceive('store')->atLeast()->once()->andReturn($tag); - $repository->shouldReceive('setTag')->atLeast()->once()->andReturn($job); - - // also mocks collector: - $collector->shouldReceive('setUser')->atLeast()->once(); - $collector->shouldReceive('setTypes')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setLimit')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setPage')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setGroup')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('withAccountInformation')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('getExtractedJournals')->atLeast()->once()->andReturn([$transfer]); - - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * Submit a transfer, and the amounts match, and the description matches, - * and the date matches, but the rest doesn't - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - * - */ - public function testTransferNotDuplicateDate(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // data to submit: - $transactions = [ - $this->singleImportTransfer(), - ]; - - // data that is returned: - $transferGroup = $this->getRandomTransferGroup(); - $tag = $this->getRandomTag(); - $transfer = $this->getRandomTransferAsArray(); - - // are equal, so the duplicate detector is triggered. - $transactions[0]['transactions'][0]['amount'] = '56.78'; - $transfer['amount'] = '56.78'; - $transactions[0]['transactions'][0]['description'] = $transfer['description']; - $transactions[0]['transactions'][0]['date'] = $transfer['date']->format('Y-m-d H:i:s'); - - - //$transferGroup['transactions']['amount'] = '12'; - /** @var TransactionJournal $journal */ - $journal = $transferGroup->transactionJournals->first(); - $journal->transactions->each( - static function (Transaction $t) { - if ($t->amount < 0) { - $t->amount = '-56.78'; - } - if ($t->amount > 0) { - $t->amount = '56.78'; - } - $t->save(); - } - ); - $transferGroup->refresh(); - - // mock stuff - $userRepos = $this->mock(UserRepositoryInterface::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - $tagRepos = $this->mock(TagRepositoryInterface::class); - $collector = $this->mock(GroupCollectorInterface::class); - $transformer = $this->mock(TransactionGroupTransformer::class); - $this->mock(Processor::class); - $this->mock(RuleRepositoryInterface::class); - - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - $tagRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn($transactions); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - - // calls to validate and import transactions: - $journalRepos->shouldReceive('findByHash')->withArgs([Mockery::any()])->atLeast()->once()->andReturnNull(); - $groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($transferGroup); - $tagRepos->shouldReceive('store')->atLeast()->once()->andReturn($tag); - $repository->shouldReceive('setTag')->atLeast()->once()->andReturn($job); - - // also mocks collector: - $collector->shouldReceive('setUser')->atLeast()->once(); - $collector->shouldReceive('setTypes')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setLimit')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setPage')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setGroup')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('withAccountInformation')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('getExtractedJournals')->atLeast()->once()->andReturn([$transfer]); - - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * Submit a transfer, and the amounts match, and the description matches, but the rest doesn't - * - * @covers \FireflyIII\Import\Storage\ImportArrayStorage - * - */ - public function testTransferNotDuplicateDescr(): void - { - Event::fake(); - Log::info(sprintf('Now in test %s', __METHOD__)); - // data to submit: - $transactions = [ - $this->singleImportTransfer(), - ]; - - // data that is returned: - $transferGroup = $this->getRandomTransferGroup(); - $tag = $this->getRandomTag(); - $transfer = $this->getRandomTransferAsArray(); - - // are equal, so the duplicate detector is triggered. - $transactions[0]['transactions'][0]['amount'] = '56.78'; - $transfer['amount'] = '56.78'; - $transactions[0]['transactions'][0]['description'] = $transfer['description']; - - - //$transferGroup['transactions']['amount'] = '12'; - /** @var TransactionJournal $journal */ - $journal = $transferGroup->transactionJournals->first(); - $journal->transactions->each( - static function (Transaction $t) { - if ($t->amount < 0) { - $t->amount = '-56.78'; - } - if ($t->amount > 0) { - $t->amount = '56.78'; - } - $t->save(); - } - ); - $transferGroup->refresh(); - - // mock stuff - $userRepos = $this->mock(UserRepositoryInterface::class); - $repository = $this->mock(ImportJobRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $groupRepos = $this->mock(TransactionGroupRepositoryInterface::class); - $tagRepos = $this->mock(TagRepositoryInterface::class); - $collector = $this->mock(GroupCollectorInterface::class); - $transformer = $this->mock(TransactionGroupTransformer::class); - $this->mock(Processor::class); - $this->mock(RuleRepositoryInterface::class); - - Amount::shouldReceive('something'); - - $language = new Preference; - $language->data = 'en_US'; - Preferences::shouldReceive('getForUser')->withArgs([Mockery::any(), 'language', 'en_US'])->andReturn($language)->atLeast()->once(); - - - // make fake job - $job = new ImportJob; - $job->user()->associate($this->user()); - $job->key = 'a_storage' . $this->randomInt(); - $job->status = 'new'; - $job->stage = 'new'; - $job->provider = 'fake'; - $job->file_type = ''; - $job->configuration = []; - $job->transactions = []; - $job->save(); - - - // mock user calls - $repository->shouldReceive('setUser')->atLeast()->once(); - $journalRepos->shouldReceive('setUser')->atLeast()->once(); - $groupRepos->shouldReceive('setUser')->atLeast()->once(); - $tagRepos->shouldReceive('setUser')->atLeast()->once(); - - // mock other calls. - $repository->shouldReceive('getTransactions')->atLeast()->once()->andReturn($transactions); - Preferences::shouldReceive('mark')->atLeast()->once()->withNoArgs(); - - // status changes of the job. - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'storing_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'stored_data']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linking_to_tag']); - $repository->shouldReceive('setStatus')->atLeast()->once()->withArgs([Mockery::any(), 'linked_to_tag']); - - // calls to validate and import transactions: - $journalRepos->shouldReceive('findByHash')->withArgs([Mockery::any()])->atLeast()->once()->andReturnNull(); - $groupRepos->shouldReceive('store')->atLeast()->once()->andReturn($transferGroup); - $tagRepos->shouldReceive('store')->atLeast()->once()->andReturn($tag); - $repository->shouldReceive('setTag')->atLeast()->once()->andReturn($job); - - // also mocks collector: - $collector->shouldReceive('setUser')->atLeast()->once(); - $collector->shouldReceive('setTypes')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setLimit')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setPage')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('setGroup')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('withAccountInformation')->atLeast()->once()->andReturnSelf(); - $collector->shouldReceive('getExtractedJournals')->atLeast()->once()->andReturn([$transfer]); - - - $storage = new ImportArrayStorage; - $storage->setImportJob($job); - try { - $storage->store(); - } catch (FireflyException $e) { - $this->assertTrue(false, $e->getMessage()); - } - } - - /** - * @return array - */ - private function singleImportTransfer(): array - { - return - [ - 'type' => 'transfer', - 'tags' => '', - 'user' => $this->user()->id, - - // all custom fields: - 'internal_reference' => null, - 'notes' => null, - - // journal data: - 'description' => 'Some TEST transfer #1', - 'piggy_bank_id' => null, - 'piggy_bank_name' => null, - 'bill_id' => null, - 'bill_name' => null, - - // transaction data: - 'transactions' => [ - [ - 'date' => '2019-01-01', - 'type' => 'transfer', - 'currency_id' => null, - 'currency_code' => 'EUR', - 'description' => null, - 'amount' => '12.34', - 'budget_id' => null, - 'budget_name' => null, - 'category_id' => null, - 'category_name' => null, - 'source_id' => null, - 'source_name' => 'Checking Account', - 'destination_id' => null, - 'destination_name' => 'Random TEST expense account #2', - 'foreign_currency_id' => null, - 'foreign_currency_code' => null, - 'foreign_amount' => null, - 'reconciled' => false, - 'identifier' => 0, - ], - ], - ]; - } - - /** - * @return array - */ - private function singleImportWithdrawal(): array - { - return - [ - 'type' => 'withdrawal', - 'tags' => '', - 'user' => $this->user()->id, - - // all custom fields: - 'internal_reference' => null, - 'notes' => null, - - // journal data: - 'description' => 'Some TEST withdrawal #1', - 'piggy_bank_id' => null, - 'piggy_bank_name' => null, - 'bill_id' => null, - 'bill_name' => null, - - // transaction data: - 'transactions' => [ - [ - 'date' => '2019-01-01', - 'type' => 'withdrawal', - 'currency_id' => null, - 'currency_code' => 'EUR', - 'description' => null, - 'amount' => '12.34', - 'budget_id' => null, - 'budget_name' => null, - 'category_id' => null, - 'category_name' => null, - 'source_id' => null, - 'source_name' => 'Checking Account', - 'destination_id' => null, - 'destination_name' => 'Random TEST expense account #2', - 'foreign_currency_id' => null, - 'foreign_currency_code' => null, - 'foreign_amount' => null, - 'reconciled' => false, - 'identifier' => 0, - ], - ], - ]; - } -}