. */ declare(strict_types=1); namespace Tests\Unit\Support\FinTS; use Fhp\Model\StatementOfAccount\Transaction as FinTSTransaction; use FireflyIII\Support\FinTS\MetadataParser; use Illuminate\Support\Facades\Log; use Tests\TestCase; /** * * Class MetadataParserTest * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.TooManyPublicMethods) */ class MetadataParserTest extends TestCase { /** @var MetadataParser */ private $metadataParser; /** * */ public function setUp(): void { parent::setUp(); Log::info(sprintf('Now in %s.', get_class($this))); $this->metadataParser = new MetadataParser(); } /** * @covers \FireflyIII\Support\FinTS\MetadataParser */ public function testDescriptionIsCorrectlyExtractedFromBeginning(): void { $transaction = $this->createTransactionWithDescription1('SVWZ+DescriptionABWA+xxx'); $this->assertEquals('Description', $this->metadataParser->getDescription($transaction)); } /** * @covers \FireflyIII\Support\FinTS\MetadataParser */ public function testDescriptionIsCorrectlyExtractedFromEnd(): void { $transaction = $this->createTransactionWithDescription1('EREF+AbcCRED+DE123SVWZ+Description'); $this->assertEquals('Description', $this->metadataParser->getDescription($transaction)); } /** * @covers \FireflyIII\Support\FinTS\MetadataParser */ public function testDescriptionIsCorrectlyExtractedFromMiddle(): void { $transaction = $this->createTransactionWithDescription1('EREF+AbcCRED+DE123SVWZ+DescriptionABWA+Ghi'); $this->assertEquals('Description', $this->metadataParser->getDescription($transaction)); } /** * @param string $description1 * * @return FinTSTransaction */ private function createTransactionWithDescription1(string $description1): FinTSTransaction { $transaction = $this->mock(FinTSTransaction::class); $transaction->shouldReceive('getDescription1')->atLeast()->once()->andReturn($description1); return $transaction; } }