. */ declare(strict_types=1); namespace Tests\Unit\Factory; use Carbon\Carbon; use FireflyIII\Factory\TransactionJournalMetaFactory; use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournalMeta; use Log; use Tests\TestCase; /** * Class TransactionJournalMetaFactoryTest */ class TransactionJournalMetaFactoryTest extends TestCase { /** * */ public function setUp(): void { parent::setUp(); Log::info(sprintf('Now in %s.', get_class($this))); } /** * @covers \FireflyIII\Factory\TransactionJournalMetaFactory */ public function testUpdateOrCreateBasic(): void { $this->markTestIncomplete('Needs to be rewritten for v4.8.0'); return; /** @var TransactionJournal $journal */ $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); $journal->transactionJournalMeta()->delete(); $set = [ 'journal' => $journal, 'name' => 'hello', 'data' => 'bye!', ]; /** @var TransactionJournalMetaFactory $factory */ $factory = app(TransactionJournalMetaFactory::class); $result = $factory->updateOrCreate($set); $this->assertEquals(1, $journal->transactionJournalMeta()->count()); $this->assertEquals($set['data'], $result->data); } /** * @covers \FireflyIII\Factory\TransactionJournalMetaFactory */ public function testUpdateOrCreateDate(): void { $this->markTestIncomplete('Needs to be rewritten for v4.8.0'); return; /** @var TransactionJournal $journal */ $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); $journal->transactionJournalMeta()->delete(); $set = [ 'journal' => $journal, 'name' => 'hello', 'data' => new Carbon('2012-01-01'), ]; /** @var TransactionJournalMetaFactory $factory */ $factory = app(TransactionJournalMetaFactory::class); $result = $factory->updateOrCreate($set); $this->assertEquals(1, $journal->transactionJournalMeta()->count()); $this->assertEquals($set['data']->toW3cString(), $result->data); } /** * @covers \FireflyIII\Factory\TransactionJournalMetaFactory */ public function testUpdateOrCreateDeleteExisting(): void { $this->markTestIncomplete('Needs to be rewritten for v4.8.0'); return; /** @var TransactionJournal $journal */ $journal = $this->user()->transactionJournals()->where('transaction_type_id', 3)->first(); $meta = TransactionJournalMeta::create( [ 'transaction_journal_id' => $journal->id, 'name' => 'hello', 'data' => 'bye!', ] ); $count = $journal->transactionJournalMeta()->count(); $set = [ 'journal' => $journal, 'name' => 'hello', 'data' => null, ]; /** @var TransactionJournalMetaFactory $factory */ $factory = app(TransactionJournalMetaFactory::class); $factory->updateOrCreate($set); $this->assertEquals($count - 1, $journal->transactionJournalMeta()->count()); } /** * @covers \FireflyIII\Factory\TransactionJournalMetaFactory */ public function testUpdateOrCreateEmpty(): void { $this->markTestIncomplete('Needs to be rewritten for v4.8.0'); return; /** @var TransactionJournal $journal */ $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); $journal->transactionJournalMeta()->delete(); $set = [ 'journal' => $journal, 'name' => 'hello', 'data' => '', ]; /** @var TransactionJournalMetaFactory $factory */ $factory = app(TransactionJournalMetaFactory::class); $result = $factory->updateOrCreate($set); $this->assertEquals(0, $journal->transactionJournalMeta()->count()); $this->assertNull($result); } /** * @covers \FireflyIII\Factory\TransactionJournalMetaFactory */ public function testUpdateOrCreateExistingEmpty(): void { $this->markTestIncomplete('Needs to be rewritten for v4.8.0'); return; /** @var TransactionJournal $journal */ $journal = $this->user()->transactionJournals()->inRandomOrder()->first(); $journal->transactionJournalMeta()->delete(); $set = [ 'journal' => $journal, 'name' => 'hello', 'data' => 'SomeData', ]; /** @var TransactionJournalMetaFactory $factory */ $factory = app(TransactionJournalMetaFactory::class); $result = $factory->updateOrCreate($set); $this->assertEquals(1, $journal->transactionJournalMeta()->count()); $this->assertNotNull($result); // overrule with empty entry: $set = [ 'journal' => $journal, 'name' => 'hello', 'data' => '', ]; /** @var TransactionJournalMetaFactory $factory */ $factory = app(TransactionJournalMetaFactory::class); $result = $factory->updateOrCreate($set); $this->assertEquals(0, $journal->transactionJournalMeta()->count()); $this->assertNull($result); } }