diff --git a/composer.json b/composer.json index c158569..bcc8af4 100644 --- a/composer.json +++ b/composer.json @@ -15,11 +15,11 @@ } ], "require": { - "php": ">=7", + "php": ">=8", "ext-json": "*" }, "require-dev": { - "phpunit/phpunit": "4.4.*" + "phpunit/phpunit": "^9.5" }, "autoload": { "psr-4": { diff --git a/src/Banking/Statement.php b/src/Banking/Statement.php index d4643f6..f83e970 100644 --- a/src/Banking/Statement.php +++ b/src/Banking/Statement.php @@ -12,6 +12,10 @@ class Statement implements \JsonSerializable { private $bank = ''; private $account = ''; + private $bankCode = ''; + private $accountNumber = ''; + private $iban = ''; + private $swiftCode = ''; private $transactions = []; private $startPrice = 0.0; private $endPrice = 0.0; @@ -44,6 +48,22 @@ public function setAccount($var) $this->account = (string)$var; } + /** + * @param string $bankCode + */ + public function setBankCode(string $bankCode): void + { + $this->bankCode = $bankCode; + } + + /** + * @param string $iban + */ + public function setIban(string $iban): void + { + $this->iban = $iban; + } + /** * @param Transaction[] $transactions */ @@ -220,4 +240,52 @@ public function getDeltaPrice() { return $this->getStartPrice() - $this->getEndPrice(); } + + /** + * @return string + */ + public function getBankCode(): string + { + return $this->bankCode; + } + + /** + * @return string + */ + public function getIban(): string + { + return $this->iban; + } + + /** + * @return string + */ + public function getSwiftCode(): string + { + return $this->swiftCode; + } + + /** + * @param string $swiftCode + */ + public function setSwiftCode(string $swiftCode): void + { + $this->swiftCode = $swiftCode; + } + + /** + * @return string + */ + public function getAccountNumber(): string + { + return $this->accountNumber; + } + + /** + * @param string $accountNumber + */ + public function setAccountNumber(string $accountNumber): void + { + $this->accountNumber = $accountNumber; + } } diff --git a/src/Banking/Transaction.php b/src/Banking/Transaction.php index bea9951..c351eb8 100644 --- a/src/Banking/Transaction.php +++ b/src/Banking/Transaction.php @@ -22,6 +22,7 @@ class Transaction implements \JsonSerializable private $valueTimestamp = 0; private $entryTimestamp = 0; private $transactionCode = ''; + private $fingerprint = ''; /** * @return array @@ -203,4 +204,20 @@ public function isCancellation() { return $this->cancellation; } + + /** + * @return string + */ + public function getFingerprint(): string + { + return $this->fingerprint; + } + + /** + * @param string $fingerprint + */ + public function setFingerprint(string $fingerprint): void + { + $this->fingerprint = $fingerprint; + } } diff --git a/src/Parser/Banking/Mt940/Engine.php b/src/Parser/Banking/Mt940/Engine.php index c1405f1..756745f 100644 --- a/src/Parser/Banking/Mt940/Engine.php +++ b/src/Parser/Banking/Mt940/Engine.php @@ -110,8 +110,6 @@ private static function detectBank($string) } } - trigger_error('Unknown mt940 parser loaded, thus reverted to default'); - return new Engine\Unknown(); } @@ -141,6 +139,8 @@ public function parse() } $statement->setBank($this->parseStatementBank()); $statement->setAccount($this->parseStatementAccount()); + $statement->setBankCode($this->parseBankCode()); + $statement->setAccountNumber($this->parseAccountNumber()); $statement->setStartPrice($this->parseStatementStartPrice()); $statement->setEndPrice($this->parseStatementEndPrice()); $statement->setStartTimestamp($this->parseStatementStartTimestamp()); @@ -162,6 +162,7 @@ public function parse() $transaction->setValueTimestamp($this->parseTransactionValueTimestamp()); $transaction->setEntryTimestamp($this->parseTransactionEntryTimestamp()); $transaction->setTransactionCode($this->parseTransactionCode()); + $transaction->setFingerprint($this->calculateTransactionFingerprint()); $statement->addTransaction($transaction); } $results[] = $statement; @@ -266,6 +267,28 @@ protected function parseStatementAccount() return ''; } + protected function parseBankCode() + { + $results = []; + if (preg_match('/:25:([A-Z0-9]{8})\/([\d\.]+)*/', $this->getCurrentStatementData(), $results) + && !empty($results[1]) + ) { + return $results[1]; + } + return ''; + } + + protected function parseAccountNumber() + { + $results = []; + if (preg_match('/:25:([A-Z0-9]*)\/([\d\.]+)*/', $this->getCurrentStatementData(), $results) + && !empty($results[2]) + ) { + return ltrim($results[2], '0'); + } + return ''; + } + /** * uses field 60F to gather starting amount. * @@ -490,7 +513,20 @@ protected function parseTransactionDescription() */ protected function parseTransactionEntryTimestamp() { - return $this->parseTransactionTimestamp('61'); + $results = []; + if (preg_match('/^:61:(\d{2})((\d{2})\d{2})((\d{2})\d{2})[C|D]/', $this->getCurrentTransactionData(), $results) + && !empty($results[1]) + ) { + + list(, $valueDateY, $valueDateMD, $valueDateM, $entryDateMD, $entryDateM) = $results; + $entryDate = $valueDateY . $entryDateMD; + if ($valueDateMD !== $entryDateMD && $valueDateM > $entryDateM) { + $entryDate = ($valueDateY + 1) . $entryDateMD; + } + + return $this->sanitizeTimestamp($entryDate, 'ymd'); + } + return $this->parseTransactionValuta('61'); } /** @@ -500,7 +536,7 @@ protected function parseTransactionEntryTimestamp() */ protected function parseTransactionValueTimestamp() { - return $this->parseTransactionTimestamp('61'); + return $this->parseTransactionValuta('61'); } /** @@ -509,7 +545,7 @@ protected function parseTransactionValueTimestamp() * @param string $key * @return int */ - protected function parseTransactionTimestamp($key) + protected function parseTransactionValuta($key) { $results = []; if (preg_match('/^:' . $key . ':(\d{6})/', $this->getCurrentTransactionData(), $results) @@ -537,6 +573,29 @@ protected function parseTransactionCode() return ''; } + protected function getField(string $code) + { + $results = []; + if (preg_match("/:$code:(.*?):\d\d.?:/s", $this->getCurrentTransactionData(), $results) + && !empty($results[1]) + ) { + return trim($results[1]); + } + if (preg_match("/:$code:(.*)/s", $this->getCurrentTransactionData(), $results) + && !empty($results[1]) + ) { + return trim($results[1]); + } + throw new \InvalidArgumentException("could not get MTA940 field with code $code"); + } + + protected function calculateTransactionFingerprint() + { + $field86 = $this->getField('86'); + $field61 = $this->getField('61'); + return hash('sha256', $field61 . $field86); + } + /** * @param string $string * diff --git a/test/Banking/StatementTest.php b/test/Banking/StatementTest.php index 8d6642e..11fdd8e 100644 --- a/test/Banking/StatementTest.php +++ b/test/Banking/StatementTest.php @@ -2,10 +2,12 @@ namespace Kingsquare\Banking; +use PHPUnit\Framework\TestCase; + /** * */ -class StatementTest extends \PHPUnit_Framework_TestCase +class StatementTest extends TestCase { public function testBankAssesor() { @@ -151,52 +153,4 @@ public function testJsonSerialization() } $this->assertSame($expected, json_encode($statement)); } - - /** - * @depends testJsonSerialization - * @expectedException PHPUnit_Framework_Error_Deprecated - */ - public function testJsonSerializationWithTransactions() - { - $expected = '{"bank":"ABN","account":"62.90.64.393","transactions":[{"account":"123123","accountName":'. - '"Kingsquare BV","price":110,"debitcredit":"D","description":"test","valueTimestamp":1231,"entryTimestamp"'. - ':1234,"transactionCode":"13G"},{"account":"123123","accountName":"Kingsquare BV","price":110,"debitcredit"'. - ':"D","description":"test","valueTimestamp":1231,"entryTimestamp":1234,"transactionCode":"13G"}],'. - '"startPrice":16250,"endPrice":6250,"number":"2665487AAF"}'; - $params = [ - 'bank' => 'ABN', - 'account' => '62.90.64.393', - 'transactions' => [ - [ - 'account' => '123123', - 'accountName' => 'Kingsquare BV', - 'price' => 110.0, - 'debitcredit' => Transaction::DEBIT, - 'description' => 'test', - 'valueTimestamp' => 1231, - 'entryTimestamp' => 1234, - 'transactionCode' => '13G', - ], - [ - 'account' => '123123', - 'accountName' => 'Kingsquare BV', - 'price' => 110.0, - 'debitcredit' => Transaction::DEBIT, - 'description' => 'test', - 'valueTimestamp' => 1231, - 'entryTimestamp' => 1234, - 'transactionCode' => '13G', - ], - ], - 'startPrice' => 16250, - 'endPrice' => 6250, - 'timestamp' => 123, - 'number' => '2665487AAF', - ]; - $statement = new Statement(); - foreach ($params as $key => $value) { - $statement->{'set'.$key}($value); - } - $this->assertSame($expected, json_encode($statement)); - } } diff --git a/test/Banking/TransactionTest.php b/test/Banking/TransactionTest.php index 937ff7b..2df0534 100644 --- a/test/Banking/TransactionTest.php +++ b/test/Banking/TransactionTest.php @@ -2,11 +2,13 @@ namespace Kingsquare\Banking; +use PHPUnit\Framework\TestCase; + /** * @author Kingsquare (source@kingsquare.nl) * @copyright Copyright (c) Kingsquare BV (http://www.kingsquare.nl) */ -class TransactionTest extends \PHPUnit_Framework_TestCase +class TransactionTest extends TestCase { public function testAccountAssesor() { diff --git a/test/Parser/Banking/Mt940/CurrencyTest.php b/test/Parser/Banking/Mt940/CurrencyTest.php index cb0ef81..436f6f8 100644 --- a/test/Parser/Banking/Mt940/CurrencyTest.php +++ b/test/Parser/Banking/Mt940/CurrencyTest.php @@ -4,6 +4,7 @@ use Kingsquare\Banking\Statement; use Kingsquare\Parser\Banking\Mt940\Engine; +use PHPUnit\Framework\TestCase; class SingleStatementEngine extends Engine { @@ -16,7 +17,7 @@ protected function parseStatementData() /** * */ -class CurrencyTest extends \PHPUnit_Framework_TestCase +class CurrencyTest extends TestCase { /** * @dataProvider singleStatementProvider diff --git a/test/Parser/Banking/Mt940/DebitCreditTest.php b/test/Parser/Banking/Mt940/DebitCreditTest.php index 3733d15..a27b45e 100644 --- a/test/Parser/Banking/Mt940/DebitCreditTest.php +++ b/test/Parser/Banking/Mt940/DebitCreditTest.php @@ -2,10 +2,12 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine; +use PHPUnit\Framework\TestCase; + /** * */ -class DebitCreditTest extends \PHPUnit_Framework_TestCase +class DebitCreditTest extends TestCase { /** * @dataProvider statementProvider diff --git a/test/Parser/Banking/Mt940/Engine/Abn/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Abn/ParseTest.php index 92bbdbd..3af8e8c 100644 --- a/test/Parser/Banking/Mt940/Engine/Abn/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Abn/ParseTest.php @@ -3,18 +3,19 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Abn; use Kingsquare\Parser\Banking\Mt940\Engine\Abn; +use PHPUnit\Framework\TestCase; /** * */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** * @var Abn */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Abn(); $this->engine->loadString(file_get_contents(__DIR__.'/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Abn/issue48 b/test/Parser/Banking/Mt940/Engine/Abn/issue48 index fd604db..7bc0127 100644 --- a/test/Parser/Banking/Mt940/Engine/Abn/issue48 +++ b/test/Parser/Banking/Mt940/Engine/Abn/issue48 @@ -15,4 +15,4 @@ IDED 2.2016/IBAN/NL37DEUT0123456789/BIC/DEUTNL2AXXX/EREF/0123456789123 61000 :62F:C161215EUR1171,6 -- \ No newline at end of file +- diff --git a/test/Parser/Banking/Mt940/Engine/Asn/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Asn/ParseTest.php index 0293593..c48790a 100644 --- a/test/Parser/Banking/Mt940/Engine/Asn/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Asn/ParseTest.php @@ -3,15 +3,16 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Asn; use Kingsquare\Parser\Banking\Mt940\Engine\Asn; +use PHPUnit\Framework\TestCase; -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** * @var Asn */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Asn(); $this->engine->loadString(file_get_contents(__DIR__ . '/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Bunq/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Bunq/ParseTest.php index b189a6c..6c4f5a1 100644 --- a/test/Parser/Banking/Mt940/Engine/Bunq/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Bunq/ParseTest.php @@ -2,10 +2,11 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Bunq; use Kingsquare\Parser\Banking\Mt940\Engine\Bunq; +use PHPUnit\Framework\TestCase; /** */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** @@ -14,7 +15,7 @@ class ParseTest extends \PHPUnit_Framework_TestCase */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Bunq(); $this->engine->loadString(file_get_contents(__DIR__ . '/sample')); @@ -45,13 +46,14 @@ public function testParseTransactionEntryTimestamp() $transactions = reset($statements)->getTransactions(); // the first has no entryTimestamp $firstTransaction = reset($transactions); - $this->assertEquals('31-01-2019', $firstTransaction->getEntryTimestamp('d-m-Y')); + $this->assertEquals('30-01-2019', $firstTransaction->getEntryTimestamp('d-m-Y')); + $this->assertEquals('31-01-2019', $firstTransaction->getValueTimestamp('d-m-Y')); // the last does have an entryTimestamp (custom edited) $lastTransaction = end($transactions); $this->assertEquals('24-05-2019', $lastTransaction->getEntryTimestamp('d-m-Y')); } - + public function testParseTransactionDebitCredit() { $statements = $this->engine->parse(); @@ -60,7 +62,7 @@ public function testParseTransactionDebitCredit() $this->assertEquals('C', $firstTransaction->getDebitCredit()); } - + public function testParseTransactionPrice() { $statements = $this->engine->parse(); diff --git a/test/Parser/Banking/Mt940/Engine/Bunq/sample b/test/Parser/Banking/Mt940/Engine/Bunq/sample index f94833c..074d196 100644 --- a/test/Parser/Banking/Mt940/Engine/Bunq/sample +++ b/test/Parser/Banking/Mt940/Engine/Bunq/sample @@ -5,7 +5,7 @@ BUNQNL2A :25:NL10BUNQ2290325473 EUR :28:00001 :60F:C190131EUR32,33 -:61:1901310131C2,NTRFNONREF +:61:1901310130C2,NTRFNONREF :86:/IBAN/NL65BUNQ2206724936/NAME/P.C. Wacki/REMI/ :61:1901310131C0,3NTRFNONREF :86:/IBAN/NL69BUNQ2032180154/NAME/P.C. Wacki/REMI/ @@ -230,4 +230,4 @@ BUNQNL2A :61:1905240524D6,NTRFNONREF :86:/IBAN/NL93BUNQ2206727536/NAME/Test/REMI/ :62F:C190531EUR5,66 -- \ No newline at end of file +- diff --git a/test/Parser/Banking/Mt940/Engine/GetInstanceTest.php b/test/Parser/Banking/Mt940/Engine/GetInstanceTest.php index 6b993a4..e380e50 100644 --- a/test/Parser/Banking/Mt940/Engine/GetInstanceTest.php +++ b/test/Parser/Banking/Mt940/Engine/GetInstanceTest.php @@ -3,31 +3,14 @@ namespace Kingsquare\Parser\Banking\Mt940; use Kingsquare\Parser\Banking\Mt940\Engine\Unknown; +use PHPUnit\Framework\Error; +use PHPUnit\Framework\TestCase; /** * */ -class GetInstanceTest extends \PHPUnit_Framework_TestCase +class GetInstanceTest extends TestCase { - /** - * - */ - public function testUnknownEngineRaisesANotice() - { - $error_reporting = error_reporting(); - error_reporting(E_ALL); - try { - Engine::__getInstance('this is an unknown format :)'); - } catch (\PHPUnit_Framework_Error $exptected) { - error_reporting($error_reporting); - $this->assertInstanceOf('PHPUnit_Framework_Error', $exptected); - - return; - } - error_reporting($error_reporting); - $this->fail('Did not receive the notice'); - } - /** * @dataProvider enginesProvider * diff --git a/test/Parser/Banking/Mt940/Engine/Hsbc/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Hsbc/ParseTest.php index 37af77a..0b66676 100644 --- a/test/Parser/Banking/Mt940/Engine/Hsbc/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Hsbc/ParseTest.php @@ -3,18 +3,19 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Hsbc; use Kingsquare\Parser\Banking\Mt940\Engine\Hsbc; +use PHPUnit\Framework\TestCase; /** * */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** * @var Hsbc */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Hsbc(); $this->engine->loadString(file_get_contents(__DIR__ . '/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Ing/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Ing/ParseTest.php index abe9e1b..634f2c7 100644 --- a/test/Parser/Banking/Mt940/Engine/Ing/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Ing/ParseTest.php @@ -3,18 +3,19 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Ing; use Kingsquare\Parser\Banking\Mt940\Engine\Ing; +use PHPUnit\Framework\TestCase; /** * */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** * @var Ing */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Ing(); $this->engine->loadString(file_get_contents(__DIR__.'/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Kbs/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Kbs/ParseTest.php index 467a1cc..eccb3b6 100644 --- a/test/Parser/Banking/Mt940/Engine/Kbs/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Kbs/ParseTest.php @@ -3,15 +3,16 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Kbs; use Kingsquare\Parser\Banking\Mt940\Engine\Kbs; +use PHPUnit\Framework\TestCase; -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** * @var Kbs */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Kbs(); $this->engine->loadString(file_get_contents(__DIR__ . '/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php index 0d99763..78a6b73 100644 --- a/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php @@ -3,18 +3,19 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Knab; use Kingsquare\Parser\Banking\Mt940\Engine\Knab; +use PHPUnit\Framework\TestCase; /** * */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** * @var Knab */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Knab(); $this->engine->loadString(file_get_contents(__DIR__.'/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Kontist/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Kontist/ParseTest.php index 8034a22..6254536 100644 --- a/test/Parser/Banking/Mt940/Engine/Kontist/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Kontist/ParseTest.php @@ -3,10 +3,11 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Kontist; use Kingsquare\Parser\Banking\Mt940\Engine\Kontist; +use PHPUnit\Framework\TestCase; /** */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** @@ -15,7 +16,7 @@ class ParseTest extends \PHPUnit_Framework_TestCase */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Kontist(); $this->engine->loadString(file_get_contents(__DIR__ . '/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/ParseDescriptionTest.php b/test/Parser/Banking/Mt940/Engine/ParseDescriptionTest.php index 3cd0e7a..cfa0b41 100644 --- a/test/Parser/Banking/Mt940/Engine/ParseDescriptionTest.php +++ b/test/Parser/Banking/Mt940/Engine/ParseDescriptionTest.php @@ -2,10 +2,12 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine; +use PHPUnit\Framework\TestCase; + /** * */ -class ParseDescriptionTest extends \PHPUnit_Framework_TestCase +class ParseDescriptionTest extends TestCase { /** * @dataProvider statementProvider diff --git a/test/Parser/Banking/Mt940/Engine/ParseTransactionDebitCreditTest.php b/test/Parser/Banking/Mt940/Engine/ParseTransactionDebitCreditTest.php index b22dddc..b4afbd8 100644 --- a/test/Parser/Banking/Mt940/Engine/ParseTransactionDebitCreditTest.php +++ b/test/Parser/Banking/Mt940/Engine/ParseTransactionDebitCreditTest.php @@ -2,10 +2,12 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine; +use PHPUnit\Framework\TestCase; + /** * */ -class ParseTransactionDebitCreditTest extends \PHPUnit_Framework_TestCase +class ParseTransactionDebitCreditTest extends TestCase { /** @@ -37,4 +39,4 @@ public function getTransactions() 'issue-53-withMultiple-CD-chars' => [':61:1807300730D28,5N132000002018827922//B8G30PGA01UD901N', 'D'], ]; } -} \ No newline at end of file +} diff --git a/test/Parser/Banking/Mt940/Engine/ParseTransactionPriceTest.php b/test/Parser/Banking/Mt940/Engine/ParseTransactionPriceTest.php index 69914a2..cad00d6 100644 --- a/test/Parser/Banking/Mt940/Engine/ParseTransactionPriceTest.php +++ b/test/Parser/Banking/Mt940/Engine/ParseTransactionPriceTest.php @@ -2,10 +2,12 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine; +use PHPUnit\Framework\TestCase; + /** * */ -class ParseTransactionPriceTest extends \PHPUnit_Framework_TestCase +class ParseTransactionPriceTest extends TestCase { /** @@ -38,4 +40,4 @@ public function getTransactions() 'issue-53-withMultiple-CD-chars' => [':61:1807300730D28,5N132000002018827922//B8G30PGA01UD901N', 28.50], ]; } -} \ No newline at end of file +} diff --git a/test/Parser/Banking/Mt940/Engine/Penta/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Penta/ParseTest.php index 40a58f2..d335f08 100644 --- a/test/Parser/Banking/Mt940/Engine/Penta/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Penta/ParseTest.php @@ -3,10 +3,11 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Penta; use Kingsquare\Parser\Banking\Mt940\Engine\Penta; +use PHPUnit\Framework\TestCase; /** */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** @@ -15,7 +16,7 @@ class ParseTest extends \PHPUnit_Framework_TestCase */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Penta(); $this->engine->loadString(file_get_contents(__DIR__ . '/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Rabo/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Rabo/ParseTest.php index 2eb2bc2..02c8947 100644 --- a/test/Parser/Banking/Mt940/Engine/Rabo/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Rabo/ParseTest.php @@ -3,18 +3,19 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Rabo; use Kingsquare\Parser\Banking\Mt940\Engine\Rabo; +use PHPUnit\Framework\TestCase; /** * */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** * @var Rabo */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Rabo(); $this->engine->loadString(file_get_contents(__DIR__.'/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Spk/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Spk/ParseTest.php index 68b0cce..e3f52a7 100644 --- a/test/Parser/Banking/Mt940/Engine/Spk/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Spk/ParseTest.php @@ -4,18 +4,19 @@ use Kingsquare\Banking\Statement; use Kingsquare\Parser\Banking\Mt940\Engine\Spk; +use PHPUnit\Framework\TestCase; /** * */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** * @var Spk */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Spk(); $this->engine->loadString(file_get_contents(__DIR__.'/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Spk/ParseTransactionPriceTest.php b/test/Parser/Banking/Mt940/Engine/Spk/ParseTransactionPriceTest.php index f16a24b..e951f3e 100644 --- a/test/Parser/Banking/Mt940/Engine/Spk/ParseTransactionPriceTest.php +++ b/test/Parser/Banking/Mt940/Engine/Spk/ParseTransactionPriceTest.php @@ -3,11 +3,12 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Spk; use Kingsquare\Parser\Banking\Mt940\Engine\Spk; +use PHPUnit\Framework\TestCase; /** * */ -class ParseTransactionPriceTest extends \PHPUnit_Framework_TestCase +class ParseTransactionPriceTest extends TestCase { /** @@ -35,4 +36,4 @@ public function getTransactions() [':61:1002170217D16,68N0050000000000123122D123', 16.68], ]; } -} \ No newline at end of file +} diff --git a/test/Parser/Banking/Mt940/Engine/Triodos/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Triodos/ParseTest.php index 5668849..5c93ea6 100644 --- a/test/Parser/Banking/Mt940/Engine/Triodos/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Triodos/ParseTest.php @@ -4,18 +4,19 @@ use Kingsquare\Banking\Statement; use Kingsquare\Parser\Banking\Mt940\Engine\Triodos; +use PHPUnit\Framework\TestCase; /** * */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** * @var Statement[] */ private $statements; - protected function setUp() + protected function setUp(): void { $engine = new Triodos(); $engine->loadString(file_get_contents(__DIR__.'/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Triodos/TransactionTest.php b/test/Parser/Banking/Mt940/Engine/Triodos/TransactionTest.php index 7c556a1..7f8f674 100644 --- a/test/Parser/Banking/Mt940/Engine/Triodos/TransactionTest.php +++ b/test/Parser/Banking/Mt940/Engine/Triodos/TransactionTest.php @@ -5,18 +5,19 @@ use Kingsquare\Banking\Statement; use Kingsquare\Banking\Transaction; use Kingsquare\Parser\Banking\Mt940\Engine\Triodos; +use PHPUnit\Framework\TestCase; /** * */ -class TransactionTest extends \PHPUnit_Framework_TestCase +class TransactionTest extends TestCase { /** * @var Transaction[] */ private $transactions = []; - protected function setUp() + protected function setUp(): void { $engine = new Triodos(); $engine->loadString(file_get_contents(__DIR__.'/sample')); diff --git a/test/Parser/Banking/Mt940/Engine/Unknown/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Unknown/ParseTest.php index 4ba04f0..fdc23b3 100644 --- a/test/Parser/Banking/Mt940/Engine/Unknown/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Unknown/ParseTest.php @@ -2,16 +2,33 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine; +use Kingsquare\Banking\Statement; +use PHPUnit\Framework\TestCase; + /** * */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { + /** + * @var Statement[] + */ + private $statements; + + protected function setUp(): void + { + $engine = new Unknown(); + $engine->loadString(file_get_contents(__DIR__.'/sample')); + $this->statements = $engine->parse(); + } + /** * */ - public function testParse() + public function test() { - $this->markTestIncomplete('The unkonwn / default is still empty and reverts to engine'); + self::assertEquals('50092100', $this->statements[0]->getBankCode()); + self::assertEquals('1782002', $this->statements[0]->getAccountNumber()); + self::assertEquals('acfbc24843a9b17f3eb8d316ac10694d0787304202254c5d1bee62f537c18048', $this->statements[0]->getTransactions()[0]->getFingerprint()); } } diff --git a/test/Parser/Banking/Mt940/Engine/Unknown/sample b/test/Parser/Banking/Mt940/Engine/Unknown/sample new file mode 100644 index 0000000..4596d50 --- /dev/null +++ b/test/Parser/Banking/Mt940/Engine/Unknown/sample @@ -0,0 +1,13 @@ +unknown +:20:STARTUMS +:25:50092100/0001782002 +:28C:0 +:60F:C220106EUR47862,59 +:61:2201060106CR75,00NTRFKREF+ +:86:152?00DA-GUTSCHRIFT?10931 +?20KREF+2022010656422245907800 +?21000000000067PURP+RINP +?30GENODEF1S11 +?31DE99327719624505558948 +?32Volker Beck +:62F:C220106EUR48381,59 diff --git a/test/Parser/Banking/Mt940/Engine/Zetb/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Zetb/ParseTest.php index d199f61..5ef74cb 100644 --- a/test/Parser/Banking/Mt940/Engine/Zetb/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Zetb/ParseTest.php @@ -3,15 +3,16 @@ namespace Kingsquare\Parser\Banking\Mt940\Engine\Zetb; use Kingsquare\Parser\Banking\Mt940\Engine\Zetb; +use PHPUnit\Framework\TestCase; -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** * @var Zetb */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Zetb(); $this->engine->loadString(file_get_contents(__DIR__ . '/sample')); diff --git a/test/Parser/Banking/Mt940/ParseTest.php b/test/Parser/Banking/Mt940/ParseTest.php index 0a2edbf..e004743 100644 --- a/test/Parser/Banking/Mt940/ParseTest.php +++ b/test/Parser/Banking/Mt940/ParseTest.php @@ -2,10 +2,12 @@ namespace Kingsquare\Parser\Banking; +use PHPUnit\Framework\TestCase; + /** * */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends TestCase { /** *