Improve test coverage.

This commit is contained in:
James Cole
2019-08-01 06:21:44 +02:00
parent 9b574ce7ad
commit b049ca27f1
45 changed files with 336 additions and 251 deletions

View File

@@ -24,7 +24,6 @@ namespace Tests\Unit\TransactionRules\Actions;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\TransactionRules\Actions\SetBudget;
use Illuminate\Support\Collection;
@@ -41,8 +40,57 @@ class SetBudgetTest extends TestCase
public function testAct(): void
{
// get journal, remove all budgets
$journal = TransactionJournal::inRandomOrder()->where('transaction_type_id', 1)->whereNull('deleted_at')->first();
$budget = $journal->user->budgets()->first();
$journal = $this->getRandomWithdrawal();
$budget = $this->getRandomBudget();
$budgetRepos = $this->mock(BudgetRepositoryInterface::class);
$budgetRepos->shouldReceive('setUser');
$budgetRepos->shouldReceive('getActiveBudgets')->andReturn(new Collection([$budget]));
$journal->budgets()->sync([]);
$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());
}
/**
* @covers \FireflyIII\TransactionRules\Actions\SetBudget
*/
public function testActNull(): void
{
// get journal, remove all budgets
$journal = $this->getRandomWithdrawal();
$budget = $this->getRandomBudget();
$budgetRepos = $this->mock(BudgetRepositoryInterface::class);
$budgetRepos->shouldReceive('setUser');
$budgetRepos->shouldReceive('getActiveBudgets')->andReturn(new Collection);
$journal->budgets()->sync([]);
$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->assertFalse($result);
$this->assertEquals(0, $journal->budgets()->count());
}
/**
* @covers \FireflyIII\TransactionRules\Actions\SetBudget
*/
public function testActDeposit(): void
{
// get journal, remove all budgets
$journal = $this->getRandomDeposit();
$budget = $this->getRandomBudget();
$budgetRepos = $this->mock(BudgetRepositoryInterface::class);
$budgetRepos->shouldReceive('setUser');
$budgetRepos->shouldReceive('getActiveBudgets')->andReturn(new Collection([$budget]));
@@ -56,10 +104,6 @@ class SetBudgetTest extends TestCase
$action = new SetBudget($ruleAction);
$result = $action->act($journal);
$this->assertTrue($result);
/** @var Transaction $transaction */
foreach ($journal->transactions as $transaction) {
$this->assertEquals(1, $transaction->budgets()->count());
$this->assertEquals($budget->name, $transaction->budgets()->first()->name);
}
$this->assertEquals(0, $journal->budgets()->count());
}
}