mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
New unit tests.
This commit is contained in:
parent
6770b8396a
commit
c17a278e57
@ -12,6 +12,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\TransactionRules\Actions;
|
||||
|
||||
use FireflyIII\Models\Note;
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use Log;
|
||||
@ -45,8 +46,11 @@ class ClearNotes implements ActionInterface
|
||||
public function act(TransactionJournal $journal): bool
|
||||
{
|
||||
Log::debug(sprintf('RuleAction ClearNotes removed all notes.'));
|
||||
$journal->deleteMeta('notes');
|
||||
$journal->save();
|
||||
$notes = $journal->notes()->get();
|
||||
/** @var Note $note */
|
||||
foreach ($notes as $note) {
|
||||
$note->delete();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -45,8 +45,7 @@ class SetDescription implements ActionInterface
|
||||
*/
|
||||
public function act(TransactionJournal $journal): bool
|
||||
{
|
||||
$oldDescription = $journal->description;
|
||||
|
||||
$oldDescription = $journal->description;
|
||||
$journal->description = $this->action->action_value;
|
||||
$journal->save();
|
||||
|
||||
|
@ -66,7 +66,7 @@ class SetDestinationAccount implements ActionInterface
|
||||
if ($count > 2) {
|
||||
Log::error(sprintf('Cannot change destination account of journal #%d because it is a split journal.', $journal->id));
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// journal type:
|
||||
@ -81,7 +81,7 @@ class SetDestinationAccount implements ActionInterface
|
||||
)
|
||||
);
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// if this is a withdrawal, the new destination account must be a expense account and may be created:
|
||||
|
@ -66,7 +66,7 @@ class SetSourceAccount implements ActionInterface
|
||||
if ($count > 2) {
|
||||
Log::error(sprintf('Cannot change source account of journal #%d because it is a split journal.', $journal->id));
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// journal type:
|
||||
@ -80,7 +80,7 @@ class SetSourceAccount implements ActionInterface
|
||||
)
|
||||
);
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// if this is a deposit, the new source account must be a revenue account and may be created:
|
||||
|
84
tests/Unit/TransactionRules/Actions/AppendNotesTest.php
Normal file
84
tests/Unit/TransactionRules/Actions/AppendNotesTest.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/**
|
||||
* AppendNotesTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
|
||||
use FireflyIII\Models\Note;
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\AppendNotes;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class AppendNotesTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class AppendNotesTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\AppendNotes::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\AppendNotes::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// give journal some notes.
|
||||
$journal = TransactionJournal::find(3);
|
||||
$note = $journal->notes()->first();
|
||||
$start = 'Default note text';
|
||||
$toAppend = 'This is appended';
|
||||
if (is_null($note)) {
|
||||
$note = new Note();
|
||||
$note->noteable()->associate($journal);
|
||||
}
|
||||
$note->text = $start;
|
||||
$note->save();
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $toAppend;
|
||||
$action = new AppendNotes($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
$newNote = $journal->notes()->first();
|
||||
$this->assertEquals($start . $toAppend, $newNote->text);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\AppendNotes::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\AppendNotes::act()
|
||||
*/
|
||||
public function testActNewNote()
|
||||
{
|
||||
// give journal some notes.
|
||||
$journal = TransactionJournal::find(4);
|
||||
$note = $journal->notes()->first();
|
||||
if (!is_null($note)) {
|
||||
$note->forceDelete();
|
||||
}
|
||||
$toAppend = 'This is appended';
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $toAppend;
|
||||
$action = new AppendNotes($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
$newNote = $journal->notes()->first();
|
||||
$this->assertEquals($toAppend, $newNote->text);
|
||||
|
||||
}
|
||||
}
|
51
tests/Unit/TransactionRules/Actions/ClearBudgetTest.php
Normal file
51
tests/Unit/TransactionRules/Actions/ClearBudgetTest.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
* ClearBudgetTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\ClearBudget;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class ClearBudgetTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class ClearBudgetTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\ClearBudget::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\ClearBudget::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// associate budget with journal:
|
||||
$journal = TransactionJournal::find(5);
|
||||
$budget = $journal->user->budgets()->first();
|
||||
$journal->budgets()->save($budget);
|
||||
$this->assertGreaterThan(0, $journal->budgets()->count());
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = null;
|
||||
$action = new ClearBudget($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// assert result
|
||||
$this->assertEquals(0, $journal->budgets()->count());
|
||||
|
||||
}
|
||||
}
|
49
tests/Unit/TransactionRules/Actions/ClearCategoryTest.php
Normal file
49
tests/Unit/TransactionRules/Actions/ClearCategoryTest.php
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* ClearCategoryTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\ClearCategory;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class ClearCategoryTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class ClearCategoryTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\ClearCategory::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\ClearCategory::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// associate budget with journal:
|
||||
$journal = TransactionJournal::find(5);
|
||||
$category = $journal->user->categories()->first();
|
||||
$journal->budgets()->save($category);
|
||||
$this->assertGreaterThan(0, $journal->categories()->count());
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = null;
|
||||
$action = new ClearCategory($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// assert result
|
||||
$this->assertEquals(0, $journal->categories()->count());
|
||||
|
||||
}
|
||||
}
|
57
tests/Unit/TransactionRules/Actions/ClearNotesTest.php
Normal file
57
tests/Unit/TransactionRules/Actions/ClearNotesTest.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* ClearNotesTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
|
||||
use FireflyIII\Models\Note;
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\ClearNotes;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class ClearNotesTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class ClearNotesTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\ClearNotes::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\ClearNotes::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// give journal a note:
|
||||
$journal = TransactionJournal::find(6);
|
||||
$note = $journal->notes()->first();
|
||||
if (is_null($note)) {
|
||||
$note = new Note;
|
||||
$note->noteable()->associate($journal);
|
||||
}
|
||||
$note->text = 'Hello test note';
|
||||
$note->save();
|
||||
$this->assertEquals(1, $journal->notes()->count());
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = null;
|
||||
$action = new ClearNotes($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// assert result
|
||||
$this->assertEquals(0, $journal->notes()->count());
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/**
|
||||
* PrependDescriptionTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\PrependDescription;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class PrependDescriptionTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class PrependDescriptionTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\PrependDescription::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\PrependDescription::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// get journal, give fixed description
|
||||
$description = 'text' . rand(1, 1000);
|
||||
$prepend = 'prepend' . rand(1, 1234);
|
||||
$journal = TransactionJournal::find(7);
|
||||
$journal->description = $description;
|
||||
$journal->save();
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $prepend;
|
||||
$action = new PrependDescription($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
$journal = TransactionJournal::find(7);
|
||||
|
||||
// assert result
|
||||
$this->assertEquals($prepend.$description, $journal->description);
|
||||
|
||||
}
|
||||
}
|
84
tests/Unit/TransactionRules/Actions/PrependNotesTest.php
Normal file
84
tests/Unit/TransactionRules/Actions/PrependNotesTest.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/**
|
||||
* PrependNotesTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
|
||||
use FireflyIII\Models\Note;
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\PrependNotes;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class PrependNotesTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class PrependNotesTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\PrependNotes::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\PrependNotes::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// give journal some notes.
|
||||
$journal = TransactionJournal::find(8);
|
||||
$note = $journal->notes()->first();
|
||||
$start = 'Default note text';
|
||||
$toPrepend = 'This is prepended';
|
||||
if (is_null($note)) {
|
||||
$note = new Note();
|
||||
$note->noteable()->associate($journal);
|
||||
}
|
||||
$note->text = $start;
|
||||
$note->save();
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $toPrepend;
|
||||
$action = new PrependNotes($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
$newNote = $journal->notes()->first();
|
||||
$this->assertEquals($toPrepend . $start, $newNote->text);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\PrependNotes::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\PrependNotes::act()
|
||||
*/
|
||||
public function testActNewNote()
|
||||
{
|
||||
// give journal some notes.
|
||||
$journal = TransactionJournal::find(4);
|
||||
$note = $journal->notes()->first();
|
||||
if (!is_null($note)) {
|
||||
$note->forceDelete();
|
||||
}
|
||||
$toPrepend = 'This is appended';
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $toPrepend;
|
||||
$action = new PrependNotes($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
$newNote = $journal->notes()->first();
|
||||
$this->assertEquals($toPrepend, $newNote->text);
|
||||
|
||||
}
|
||||
}
|
52
tests/Unit/TransactionRules/Actions/RemoveAllTagsTest.php
Normal file
52
tests/Unit/TransactionRules/Actions/RemoveAllTagsTest.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
/**
|
||||
* RemoveAllTagsTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\RemoveAllTags;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class RemoveAllTagsTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class RemoveAllTagsTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\RemoveAllTags::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\RemoveAllTags::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// get journal, link al tags:
|
||||
$journal = TransactionJournal::find(9);
|
||||
$tags = $journal->user->tags()->get();
|
||||
foreach ($tags as $tag) {
|
||||
$journal->tags()->save($tag);
|
||||
$journal->save();
|
||||
}
|
||||
$this->assertEquals($tags->count(), $journal->tags()->count());
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = null;
|
||||
$action = new RemoveAllTags($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
$this->assertEquals(0, $journal->tags()->count());
|
||||
}
|
||||
}
|
79
tests/Unit/TransactionRules/Actions/RemoveTagTest.php
Normal file
79
tests/Unit/TransactionRules/Actions/RemoveTagTest.php
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
/**
|
||||
* RemoveTagTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\RemoveTag;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class RemoveTagTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class RemoveTagTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\RemoveTag::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\RemoveTag::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// get journal, link al tags:
|
||||
$journal = TransactionJournal::find(10);
|
||||
$tags = $journal->user->tags()->get();
|
||||
foreach ($tags as $tag) {
|
||||
$journal->tags()->save($tag);
|
||||
$journal->save();
|
||||
}
|
||||
$firstTag = $tags->first();
|
||||
$this->assertEquals($tags->count(), $journal->tags()->count());
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $firstTag->tag;
|
||||
$action = new RemoveTag($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
foreach ($journal->tags()->get() as $tag) {
|
||||
$this->assertNotEquals($firstTag->id, $tag->id);
|
||||
}
|
||||
$this->assertEquals(($tags->count() - 1), $journal->tags()->count());
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\RemoveTag::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\RemoveTag::act()
|
||||
*/
|
||||
public function testActNoTag()
|
||||
{
|
||||
// get journal, link al tags:
|
||||
$journal = TransactionJournal::find(11);
|
||||
$tags = $journal->user->tags()->get();
|
||||
foreach ($tags as $tag) {
|
||||
$journal->tags()->save($tag);
|
||||
$journal->save();
|
||||
}
|
||||
$this->assertEquals($tags->count(), $journal->tags()->count());
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = rand(1, 1234) . 'nosuchtag';
|
||||
$action = new RemoveTag($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals($tags->count(), $journal->tags()->count());
|
||||
}
|
||||
}
|
49
tests/Unit/TransactionRules/Actions/SetBudgetTest.php
Normal file
49
tests/Unit/TransactionRules/Actions/SetBudgetTest.php
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* SetBudgetTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\SetBudget;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class SetBudgetTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class SetBudgetTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetBudget::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetBudget::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// get journal, remove all budgets
|
||||
$journal = TransactionJournal::find(12);
|
||||
$budget = $journal->user->budgets()->first();
|
||||
$journal->budgets()->detach();
|
||||
$this->assertEquals(0, $journal->budgets()->count());
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $budget->name;
|
||||
$action = new SetBudget($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals(1, $journal->budgets()->count());
|
||||
$this->assertEquals($budget->name, $journal->budgets()->first()->name);
|
||||
}
|
||||
}
|
48
tests/Unit/TransactionRules/Actions/SetCategoryTest.php
Normal file
48
tests/Unit/TransactionRules/Actions/SetCategoryTest.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* SetCategoryTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\SetBudget;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class SetCategoryTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class SetCategoryTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetBudget::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetBudget::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// get journal, remove all budgets
|
||||
$journal = TransactionJournal::find(13);
|
||||
$category = $journal->user->categories()->first();
|
||||
$journal->categories()->detach();
|
||||
$this->assertEquals(0, $journal->categories()->count());
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $category->name;
|
||||
$action = new SetBudget($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
$this->assertEquals(1, $journal->categories()->count());
|
||||
$this->assertEquals($category->name, $journal->categories()->first()->name);
|
||||
}
|
||||
}
|
52
tests/Unit/TransactionRules/Actions/SetDescriptionTest.php
Normal file
52
tests/Unit/TransactionRules/Actions/SetDescriptionTest.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
/**
|
||||
* SetDescriptionTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\SetDescription;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class SetDescriptionTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class SetDescriptionTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDescription::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDescription::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// get journal, give fixed description
|
||||
$description = 'text' . rand(1, 1000);
|
||||
$newDescription = 'new description' . rand(1, 1234);
|
||||
$journal = TransactionJournal::find(14);
|
||||
$journal->description = $description;
|
||||
$journal->save();
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $newDescription;
|
||||
$action = new SetDescription($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
$journal = TransactionJournal::find(14);
|
||||
|
||||
// assert result
|
||||
$this->assertEquals($newDescription, $journal->description);
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,175 @@
|
||||
<?php
|
||||
/**
|
||||
* SetDestinationAccountTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
|
||||
use DB;
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use FireflyIII\TransactionRules\Actions\SetDestinationAccount;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Try split journal
|
||||
*
|
||||
* Class SetDestinationAccountTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class SetDestinationAccountTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* Give deposit existing asset account.
|
||||
*
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::act()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::findAssetAccount()
|
||||
*/
|
||||
public function testActDepositExisting()
|
||||
{
|
||||
$type = TransactionType::whereType(TransactionType::DEPOSIT)->first();
|
||||
$journal = TransactionJournal::where('transaction_type_id', $type->id)->first();
|
||||
$destinationTr = $journal->transactions()->where('amount', '>', 0)->first();
|
||||
$destination = $destinationTr->account;
|
||||
$user = $journal->user;
|
||||
$accountType = AccountType::whereType(AccountType::ASSET)->first();
|
||||
$account = $user->accounts()->where('account_type_id', $accountType->id)->where('id', '!=', $destination->id)->first();
|
||||
$this->assertNotEquals($destination->id, $account->id);
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $account->name;
|
||||
$action = new SetDestinationAccount($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// test journal for new account
|
||||
$journal = TransactionJournal::find($journal->id);
|
||||
$destinationTr = $journal->transactions()->where('amount', '>', 0)->first();
|
||||
$newDestination = $destinationTr->account;
|
||||
$this->assertNotEquals($destination->id, $newDestination->id);
|
||||
$this->assertEquals($newDestination->id, $account->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Give deposit new asset account (will fail)
|
||||
*
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::act()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::findAssetAccount()
|
||||
*/
|
||||
public function testActDepositNew()
|
||||
{
|
||||
$type = TransactionType::whereType(TransactionType::DEPOSIT)->first();
|
||||
$journal = TransactionJournal::where('transaction_type_id', $type->id)->first();
|
||||
$destinationTr = $journal->transactions()->where('amount', '>', 0)->first();
|
||||
$destination = $destinationTr->account;
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = 'Some new asset ' . rand(1, 1000);
|
||||
$action = new SetDestinationAccount($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertFalse($result);
|
||||
|
||||
// test journal for still having old account
|
||||
$journal = TransactionJournal::find($journal->id);
|
||||
$destinationTr = $journal->transactions()->where('amount', '>', 0)->first();
|
||||
$newDestination = $destinationTr->account;
|
||||
$this->assertEquals($destination->id, $newDestination->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Give withdrawal existing expense account.
|
||||
*
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::act()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::findExpenseAccount
|
||||
*/
|
||||
public function testActWithdrawalExisting()
|
||||
{
|
||||
$type = TransactionType::whereType(TransactionType::WITHDRAWAL)->first();
|
||||
$journal = TransactionJournal::where('transaction_type_id', $type->id)->first();
|
||||
$destinationTr = $journal->transactions()->where('amount', '>', 0)->first();
|
||||
$destination = $destinationTr->account;
|
||||
$user = $journal->user;
|
||||
$accountType = AccountType::whereType(AccountType::EXPENSE)->first();
|
||||
$account = $user->accounts()->where('account_type_id', $accountType->id)->where('id', '!=', $destination->id)->first();
|
||||
$this->assertNotEquals($destination->id, $account->id);
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $account->name;
|
||||
$action = new SetDestinationAccount($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// test journal for new account
|
||||
$journal = TransactionJournal::find($journal->id);
|
||||
$destinationTr = $journal->transactions()->where('amount', '>', 0)->first();
|
||||
$newDestination = $destinationTr->account;
|
||||
$this->assertNotEquals($destination->id, $newDestination->id);
|
||||
$this->assertEquals($newDestination->id, $account->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Give withdrawal new expense account.
|
||||
*
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::act()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::findExpenseAccount
|
||||
*/
|
||||
public function testActWithdrawalNew()
|
||||
{
|
||||
$type = TransactionType::whereType(TransactionType::WITHDRAWAL)->first();
|
||||
$journal = TransactionJournal::where('transaction_type_id', $type->id)->first();
|
||||
$destinationTr = $journal->transactions()->where('amount', '>', 0)->first();
|
||||
$destination = $destinationTr->account;
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = 'Some new expense ' . rand(1, 1000);
|
||||
$action = new SetDestinationAccount($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// test journal for new account
|
||||
$journal = TransactionJournal::find($journal->id);
|
||||
$destinationTr = $journal->transactions()->where('amount', '>', 0)->first();
|
||||
$newDestination = $destinationTr->account;
|
||||
$this->assertNotEquals($destination->id, $newDestination->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test this on a split journal.
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetDestinationAccount::act()
|
||||
*/
|
||||
public function testSplitJournal()
|
||||
{
|
||||
$transaction = Transaction::orderBy('count', 'DESC')->groupBy('transaction_journal_id')
|
||||
->get(['transaction_journal_id', DB::raw('COUNT(transaction_journal_id) as count')])
|
||||
->first();
|
||||
$journal = TransactionJournal::find($transaction->transaction_journal_id);
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = 'Some new asset ' . rand(1, 1000);
|
||||
$action = new SetDestinationAccount($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertFalse($result);
|
||||
}
|
||||
|
||||
}
|
81
tests/Unit/TransactionRules/Actions/SetNotesTest.php
Normal file
81
tests/Unit/TransactionRules/Actions/SetNotesTest.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
/**
|
||||
* SetNotesTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
|
||||
use FireflyIII\Models\Note;
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\TransactionRules\Actions\ClearNotes;
|
||||
use FireflyIII\TransactionRules\Actions\SetNotes;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class SetNotesTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class SetNotesTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetNotes::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetNotes::act()
|
||||
*/
|
||||
public function testAct()
|
||||
{
|
||||
// give journal a note:
|
||||
$journal = TransactionJournal::find(15);
|
||||
$note = $journal->notes()->first();
|
||||
if (is_null($note)) {
|
||||
$note = new Note;
|
||||
$note->noteable()->associate($journal);
|
||||
}
|
||||
$note->text = 'Hello test note';
|
||||
$note->save();
|
||||
$this->assertEquals(1, $journal->notes()->count());
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = 'These are new notes ' . rand(1, 1234);
|
||||
$action = new SetNotes($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// assert result
|
||||
$this->assertEquals(1, $journal->notes()->count());
|
||||
$this->assertEquals($note->id, $journal->notes()->first()->id);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetNotes::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetNotes::act()
|
||||
*/
|
||||
public function testActNoNotes()
|
||||
{
|
||||
// give journal a note:
|
||||
$journal = TransactionJournal::find(16);
|
||||
$journal->notes()->forceDelete();
|
||||
$this->assertEquals(0, $journal->notes()->count());
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = 'These are new notes ' . rand(1, 1234);
|
||||
$action = new SetNotes($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// assert result
|
||||
$this->assertEquals(1, $journal->notes()->count());
|
||||
}
|
||||
}
|
173
tests/Unit/TransactionRules/Actions/SetSourceAccountTest.php
Normal file
173
tests/Unit/TransactionRules/Actions/SetSourceAccountTest.php
Normal file
@ -0,0 +1,173 @@
|
||||
<?php
|
||||
/**
|
||||
* SetSourceAccountTest.php
|
||||
* Copyright (c) 2017 thegrumpydictator@gmail.com
|
||||
* This software may be modified and distributed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International License.
|
||||
*
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\TransactionRules\Actions;
|
||||
|
||||
use DB;
|
||||
use FireflyIII\Models\AccountType;
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\Transaction;
|
||||
use FireflyIII\Models\TransactionJournal;
|
||||
use FireflyIII\Models\TransactionType;
|
||||
use FireflyIII\TransactionRules\Actions\SetSourceAccount;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class SetSourceAccountTest
|
||||
*
|
||||
* @package Tests\Unit\TransactionRules\Actions
|
||||
*/
|
||||
class SetSourceAccountTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* Give deposit existing revenue account.
|
||||
*
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::act()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::findRevenueAccount()
|
||||
*/
|
||||
public function testActDepositExistingUpdated()
|
||||
{
|
||||
$type = TransactionType::whereType(TransactionType::DEPOSIT)->first();
|
||||
$journal = TransactionJournal::where('transaction_type_id', $type->id)->first();
|
||||
$sourceTr = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$source = $sourceTr->account;
|
||||
$user = $journal->user;
|
||||
$accountType = AccountType::whereType(AccountType::REVENUE)->first();
|
||||
$account = $user->accounts()->where('account_type_id', $accountType->id)->where('id', '!=', $source->id)->first();
|
||||
$this->assertNotEquals($source->id, $account->id);
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $account->name;
|
||||
$action = new SetSourceAccount($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// test journal for new account
|
||||
$journal = TransactionJournal::find($journal->id);
|
||||
$sourceTr = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$newSource = $sourceTr->account;
|
||||
$this->assertNotEquals($source->id, $newSource->id);
|
||||
$this->assertEquals($newSource->id, $account->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Give deposit new revenue account.
|
||||
*
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::act()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::findRevenueAccount
|
||||
*/
|
||||
public function testActDepositNewUpdated()
|
||||
{
|
||||
$type = TransactionType::whereType(TransactionType::DEPOSIT)->first();
|
||||
$journal = TransactionJournal::where('transaction_type_id', $type->id)->first();
|
||||
$sourceTr = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$source = $sourceTr->account;
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = 'Some new revenue ' . rand(1, 1000);
|
||||
$action = new SetSourceAccount($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// test journal for new account
|
||||
$journal = TransactionJournal::find($journal->id);
|
||||
$sourceTr = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$newSource = $sourceTr->account;
|
||||
$this->assertNotEquals($source->id, $newSource->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Give withdrawal existing asset account.
|
||||
*
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::act()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::findAssetAccount()
|
||||
*/
|
||||
public function testActWithdrawalExistingUpdated()
|
||||
{
|
||||
$type = TransactionType::whereType(TransactionType::WITHDRAWAL)->first();
|
||||
$journal = TransactionJournal::where('transaction_type_id', $type->id)->first();
|
||||
$sourceTr = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$source = $sourceTr->account;
|
||||
$user = $journal->user;
|
||||
$accountType = AccountType::whereType(AccountType::ASSET)->first();
|
||||
$account = $user->accounts()->where('account_type_id', $accountType->id)->where('id', '!=', $source->id)->first();
|
||||
$this->assertNotEquals($source->id, $account->id);
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = $account->name;
|
||||
$action = new SetSourceAccount($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertTrue($result);
|
||||
|
||||
// test journal for new account
|
||||
$journal = TransactionJournal::find($journal->id);
|
||||
$sourceTr = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$newSource = $sourceTr->account;
|
||||
$this->assertNotEquals($source->id, $newSource->id);
|
||||
$this->assertEquals($newSource->id, $account->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Give withdrawal new asset account (will fail)
|
||||
*
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::act()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::findAssetAccount()
|
||||
*/
|
||||
public function testActWithdrawalNew()
|
||||
{
|
||||
$type = TransactionType::whereType(TransactionType::WITHDRAWAL)->first();
|
||||
$journal = TransactionJournal::where('transaction_type_id', $type->id)->first();
|
||||
$sourceTr = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$source = $sourceTr->account;
|
||||
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = 'Some new asset ' . rand(1, 1000);
|
||||
$action = new SetSourceAccount($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertFalse($result);
|
||||
|
||||
// test journal for still having old account
|
||||
$journal = TransactionJournal::find($journal->id);
|
||||
$sourceTr = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
$newSource = $sourceTr->account;
|
||||
$this->assertEquals($source->id, $newSource->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test this on a split journal.
|
||||
*
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::__construct()
|
||||
* @covers \FireflyIII\TransactionRules\Actions\SetSourceAccount::act()
|
||||
*/
|
||||
public function testSplitJournal()
|
||||
{
|
||||
$transaction = Transaction::orderBy('count', 'DESC')->groupBy('transaction_journal_id')
|
||||
->get(['transaction_journal_id', DB::raw('COUNT(transaction_journal_id) as count')])
|
||||
->first();
|
||||
$journal = TransactionJournal::find($transaction->transaction_journal_id);
|
||||
// fire the action:
|
||||
$ruleAction = new RuleAction;
|
||||
$ruleAction->action_value = 'Some new asset ' . rand(1, 1000);
|
||||
$action = new SetSourceAccount($ruleAction);
|
||||
$result = $action->act($journal);
|
||||
$this->assertFalse($result);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user