New budget repository tests.

This commit is contained in:
James Cole
2015-05-09 09:05:37 +02:00
parent befdc05084
commit 49a65ebff4
2 changed files with 102 additions and 63 deletions

View File

@@ -25,21 +25,6 @@ class BudgetRepository implements BudgetRepositoryInterface
*/ */
public function cleanupBudgets() public function cleanupBudgets()
{ {
$limits = BudgetLimit::leftJoin('budgets', 'budgets.id', '=', 'budget_limits.budget_id')->get(['budget_limits.*']);
// loop budget limits:
$found = [];
/** @var BudgetLimit $limit */
foreach ($limits as $limit) {
$key = $limit->budget_id . '-' . $limit->startdate;
if (isset($found[$key])) {
$limit->delete();
} else {
$found[$key] = true;
}
unset($key);
}
// delete limits with amount 0: // delete limits with amount 0:
BudgetLimit::where('amount', 0)->delete(); BudgetLimit::where('amount', 0)->delete();

View File

@@ -1,5 +1,9 @@
<?php <?php
use Carbon\Carbon;
use FireflyIII\Models\Budget;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Repositories\Budget\BudgetRepository; use FireflyIII\Repositories\Budget\BudgetRepository;
use League\FactoryMuffin\Facade as FactoryMuffin;
/** /**
* Generated by PHPUnit_SkeletonGenerator on 2015-05-05 at 19:16:07. * Generated by PHPUnit_SkeletonGenerator on 2015-05-05 at 19:16:07.
@@ -32,14 +36,23 @@ class BudgetRepositoryTest extends TestCase
/** /**
* @covers FireflyIII\Repositories\Budget\BudgetRepository::cleanupBudgets * @covers FireflyIII\Repositories\Budget\BudgetRepository::cleanupBudgets
* @todo Implement testCleanupBudgets().
*/ */
public function testCleanupBudgets() public function testCleanupBudgets()
{ {
// Remove the following lines when you implement this test. // create some budgets:
$this->markTestIncomplete( for ($i = 0; $i < 3; $i++) {
'This test has not been implemented yet.' $budget = FactoryMuffin::create('FireflyIII\Models\Budget');
); $limit = FactoryMuffin::create('FireflyIII\Models\BudgetLimit');
$limit->budget_id = $budget->id;
$limit->amount = 0;
$limit->save();
}
$this->object->cleanupBudgets();
$this->assertCount(0, BudgetLimit::get());
} }
/** /**
@@ -48,10 +61,11 @@ class BudgetRepositoryTest extends TestCase
*/ */
public function testDestroy() public function testDestroy()
{ {
// Remove the following lines when you implement this test. $budget = FactoryMuffin::create('FireflyIII\Models\Budget');
$this->markTestIncomplete(
'This test has not been implemented yet.' $this->object->destroy($budget);
);
$this->assertCount(0, Budget::where('id', $budget->id)->whereNull('deleted_at')->get());
} }
/** /**
@@ -60,94 +74,134 @@ class BudgetRepositoryTest extends TestCase
*/ */
public function testExpensesOnDay() public function testExpensesOnDay()
{ {
// Remove the following lines when you implement this test. $budget = FactoryMuffin::create('FireflyIII\Models\Budget');
$this->markTestIncomplete(
'This test has not been implemented yet.' $result = $this->object->expensesOnDay($budget, new Carbon);
);
$this->assertEquals(0, $result);
} }
/** /**
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getActiveBudgets * @covers FireflyIII\Repositories\Budget\BudgetRepository::getActiveBudgets
* @todo Implement testGetActiveBudgets().
*/ */
public function testGetActiveBudgets() public function testGetActiveBudgets()
{ {
// Remove the following lines when you implement this test. $budget1 = FactoryMuffin::create('FireflyIII\Models\Budget');
$this->markTestIncomplete( $budget2 = FactoryMuffin::create('FireflyIII\Models\Budget');
'This test has not been implemented yet.' $budget1->active = 1;
); $budget2->active = 0;
$budget2->user_id = $budget1->user_id;
$budget1->save();
$budget2->save();
$this->be($budget1->user);
$set = $this->object->getActiveBudgets();
$this->assertCount(1, $set);
$this->assertEquals($set->first()->id, $budget1->id);
} }
/** /**
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getBudgetLimitRepetitions * @covers FireflyIII\Repositories\Budget\BudgetRepository::getBudgetLimitRepetitions
* @todo Implement testGetBudgetLimitRepetitions().
*/ */
public function testGetBudgetLimitRepetitions() public function testGetBudgetLimitRepetitions()
{ {
// Remove the following lines when you implement this test. $rep = FactoryMuffin::create('FireflyIII\Models\LimitRepetition');
$this->markTestIncomplete( $limit = $rep->budgetlimit;
'This test has not been implemented yet.' $limit->startdate = new Carbon('2015-02-02');
); $rep->startdate = new Carbon('2015-02-02');
$rep->enddate = new Carbon('2015-02-28');
$limit->save();
$rep->save();
$set = $this->object->getBudgetLimitRepetitions($rep->budgetlimit->budget, new Carbon('2015-02-01'), new Carbon('2015-02-28'));
$this->assertCount(2, $set);
} }
/** /**
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getBudgetLimits * @covers FireflyIII\Repositories\Budget\BudgetRepository::getBudgetLimits
* @todo Implement testGetBudgetLimits().
*/ */
public function testGetBudgetLimits() public function testGetBudgetLimits()
{ {
// Remove the following lines when you implement this test. /** @var Budget $budget */
$this->markTestIncomplete( $budget = FactoryMuffin::create('FireflyIII\Models\Budget');
'This test has not been implemented yet.' $set = $this->object->getBudgetLimits($budget);
);
$this->assertCount(0, $set);
} }
/** /**
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getBudgets * @covers FireflyIII\Repositories\Budget\BudgetRepository::getBudgets
* @todo Implement testGetBudgets().
*/ */
public function testGetBudgets() public function testGetBudgets()
{ {
// Remove the following lines when you implement this test. $budget1 = FactoryMuffin::create('FireflyIII\Models\Budget');
$this->markTestIncomplete( $budget2 = FactoryMuffin::create('FireflyIII\Models\Budget');
'This test has not been implemented yet.' $budget1->active = 1;
); $budget2->active = 0;
$budget2->user_id = $budget1->user_id;
$budget1->save();
$budget2->save();
$this->be($budget1->user);
$set = $this->object->getBudgets();
$this->assertCount(2, $set);
} }
/** /**
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getCurrentRepetition * @covers FireflyIII\Repositories\Budget\BudgetRepository::getCurrentRepetition
* @todo Implement testGetCurrentRepetition().
*/ */
public function testGetCurrentRepetition() public function testGetCurrentRepetition()
{ {
// Remove the following lines when you implement this test. /** @var Budget $budget */
$this->markTestIncomplete( $budget = FactoryMuffin::create('FireflyIII\Models\Budget');
'This test has not been implemented yet.' $rep = $this->object->getCurrentRepetition($budget, new Carbon);
); $this->assertNull($rep);
} }
/** /**
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getFirstBudgetLimitDate * @covers FireflyIII\Repositories\Budget\BudgetRepository::getFirstBudgetLimitDate
* @todo Implement testGetFirstBudgetLimitDate().
*/ */
public function testGetFirstBudgetLimitDate() public function testGetFirstBudgetLimitDate()
{ {
// Remove the following lines when you implement this test. /** @var BudgetLimit $budget */
$this->markTestIncomplete( $limit = FactoryMuffin::create('FireflyIII\Models\BudgetLimit');
'This test has not been implemented yet.' $date = $this->object->getFirstBudgetLimitDate($limit->budget);
); $this->assertEquals($date->format('Y-m-d'), $limit->startdate->format('Y-m-d'));
}
/**
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getFirstBudgetLimitDate
*/
public function testGetFirstBudgetLimitDateNull()
{
/** @var BudgetLimit $budget */
$budget = FactoryMuffin::create('FireflyIII\Models\Budget');
$date = $this->object->getFirstBudgetLimitDate($budget);
$this->assertNull($date);
} }
/** /**
* @covers FireflyIII\Repositories\Budget\BudgetRepository::getInactiveBudgets * @covers FireflyIII\Repositories\Budget\BudgetRepository::getInactiveBudgets
* @todo Implement testGetInactiveBudgets().
*/ */
public function testGetInactiveBudgets() public function testGetInactiveBudgets()
{ {
// Remove the following lines when you implement this test. $budget1 = FactoryMuffin::create('FireflyIII\Models\Budget');
$this->markTestIncomplete( $budget2 = FactoryMuffin::create('FireflyIII\Models\Budget');
'This test has not been implemented yet.' $budget1->active = 1;
); $budget2->active = 0;
$budget2->user_id = $budget1->user_id;
$budget1->save();
$budget2->save();
$this->be($budget1->user);
$set = $this->object->getInactiveBudgets();
$this->assertCount(1, $set);
$this->assertEquals($set->first()->id, $budget2->id);
} }
/** /**