Improve tests for transaction rules.

This commit is contained in:
James Cole
2018-03-04 16:42:29 +01:00
parent 04b8552d27
commit d22fb9f438
5 changed files with 35 additions and 3 deletions

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use Log;
@@ -55,6 +56,13 @@ class ClearBudget implements ActionInterface
{
$journal->budgets()->detach();
$journal->touch();
// also remove categories from transactions:
/** @var Transaction $transaction */
foreach($journal->transactions as $transaction) {
$transaction->budgets()->detach();
}
Log::debug(sprintf('RuleAction ClearBudget removed all budgets from journal %d.', $journal->id));
return true;

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use Log;
@@ -55,6 +56,13 @@ class ClearCategory implements ActionInterface
{
$journal->categories()->detach();
$journal->touch();
// also remove categories from transactions:
/** @var Transaction $transaction */
foreach($journal->transactions as $transaction) {
$transaction->categories()->detach();
}
Log::debug(sprintf('RuleAction ClearCategory removed all categories from journal %d.', $journal->id));
return true;

View File

@@ -24,6 +24,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Models\Budget;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
@@ -87,7 +88,12 @@ class SetBudget implements ActionInterface
Log::debug(sprintf('RuleAction SetBudget set the budget of journal #%d to budget #%d ("%s").', $journal->id, $budget->id, $budget->name));
$journal->budgets()->sync([$budget->id]);
$journal->budgets()->detach();
// set budget on transactions:
/** @var Transaction $transaction */
foreach ($journal->transaction as $transaction) {
$transaction->budgets()->sync([$budget->id]);
}
$journal->touch();
return true;

View File

@@ -24,6 +24,7 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Models\Category;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use Log;
@@ -56,7 +57,16 @@ class SetCategory implements ActionInterface
{
$name = $this->action->action_value;
$category = Category::firstOrCreateEncrypted(['name' => $name, 'user_id' => $journal->user->id]);
$journal->categories()->sync([$category->id]);
$journal->categories()->detach();
// set category on transactions:
/** @var Transaction $transaction */
foreach ($journal->transaction as $transaction) {
$transaction->categories()->sync([$category->id]);
}
$journal->touch();
$journal->touch();
Log::debug(sprintf('RuleAction SetCategory set the category of journal #%d to budget #%d ("%s").', $journal->id, $category->id, $category->name));

View File

@@ -41,7 +41,7 @@ class ClearCategoryTest extends TestCase
// associate budget with journal:
$journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first();
$category = $journal->user->categories()->first();
$journal->budgets()->save($category);
$journal->categories()->save($category);
$this->assertGreaterThan(0, $journal->categories()->count());
// fire the action: