From ed8e3926161def32c31a6804099217f66bf45903 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 5 Apr 2015 15:53:03 +0200 Subject: [PATCH] Fixed budget controller tests. --- tests/ExampleTest.php | 19 --- tests/controllers/BudgetControllerTest.php | 135 ++++++++++++++++++++- tests/factories/all.php | 2 +- 3 files changed, 133 insertions(+), 23 deletions(-) delete mode 100644 tests/ExampleTest.php diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php deleted file mode 100644 index 6a06d11115..0000000000 --- a/tests/ExampleTest.php +++ /dev/null @@ -1,19 +0,0 @@ -assertTrue(true); - } - -} diff --git a/tests/controllers/BudgetControllerTest.php b/tests/controllers/BudgetControllerTest.php index 10155ba108..0a89b99076 100644 --- a/tests/controllers/BudgetControllerTest.php +++ b/tests/controllers/BudgetControllerTest.php @@ -165,18 +165,147 @@ class BudgetControllerTest extends TestCase } + public function testShowInvalidRepetition() + { + + $repetition = FactoryMuffin::create('FireflyIII\Models\LimitRepetition'); + $budget = $repetition->budgetLimit->budget; + $otherBudget = FactoryMuffin::create('FireflyIII\Models\Budget'); + $otherBudget->user_id = $budget->user_id; + $otherBudget->save(); + + $repository = $this->mock('FireflyIII\Repositories\Budget\BudgetRepositoryInterface'); + $this->be($otherBudget->user); + + Amount::shouldReceive('getCurrencyCode')->andReturn('x'); + Amount::shouldReceive('format')->andReturn('x'); + $repository->shouldReceive('getJournals')->andReturn(new Collection); + $repository->shouldReceive('getBudgetLimits')->andReturn(new Collection); + + + $this->call('GET', '/budgets/show/' . $otherBudget->id . '/' . $repetition->id); + $this->assertResponseOk(); + $this->assertViewHas('message', 'Invalid selection.'); + + } + public function testStore() { - $this->markTestIncomplete(); + // a budget: + $budget = FactoryMuffin::create('FireflyIII\Models\Budget'); + $this->be($budget->user); + + $data = [ + 'name' => 'New test budget ' . rand(1, 1000), + '_token' => 'replaceme' + ]; + + // fake validation routine: + $request = $this->mock('FireflyIII\Http\Requests\BudgetFormRequest'); + $request->shouldReceive('input')->andReturn(''); + + // fake store routine: + $repository = $this->mock('FireflyIII\Repositories\Budget\BudgetRepositoryInterface'); + $repository->shouldReceive('store')->andReturn($budget); + + $this->call('POST', '/budgets/store', $data); + $this->assertResponseStatus(302); + $this->assertSessionHas('success'); + + } + + public function testStoreAndRedirect() + { + // a budget: + $budget = FactoryMuffin::create('FireflyIII\Models\Budget'); + $this->be($budget->user); + + $data = [ + 'name' => 'New test budget ' . rand(1, 1000), + '_token' => 'replaceme', + 'create_another' => 1, + ]; + + // fake validation routine: + $request = $this->mock('FireflyIII\Http\Requests\BudgetFormRequest'); + $request->shouldReceive('input')->andReturn(''); + + // fake store routine: + $repository = $this->mock('FireflyIII\Repositories\Budget\BudgetRepositoryInterface'); + $repository->shouldReceive('store')->andReturn($budget); + + $this->call('POST', '/budgets/store', $data); + $this->assertResponseStatus(302); + $this->assertSessionHas('success'); + } public function testUpdate() { - $this->markTestIncomplete(); + + // a budget: + $budget = FactoryMuffin::create('FireflyIII\Models\Budget'); + $this->be($budget->user); + + $data = [ + 'name' => 'Edited test account ' . rand(1, 1000), + 'active' => 1, + '_token' => 'replaceme' + ]; + + // fake validation routine: + $request = $this->mock('FireflyIII\Http\Requests\BudgetFormRequest'); + $request->shouldReceive('input')->andReturn(''); + + // fake update routine: + $repository = $this->mock('FireflyIII\Repositories\Budget\BudgetRepositoryInterface'); + $repository->shouldReceive('update')->andReturn($budget); + + $this->call('POST', '/budgets/update/' . $budget->id, $data); + $this->assertResponseStatus(302); + $this->assertSessionHas('success'); + } + + public function testUpdateAndRedirect() + { + + // a budget: + $budget = FactoryMuffin::create('FireflyIII\Models\Budget'); + $this->be($budget->user); + + $data = [ + 'name' => 'Edited test account ' . rand(1, 1000), + 'active' => 1, + '_token' => 'replaceme', + 'return_to_edit' => 1, + ]; + + // fake validation routine: + $request = $this->mock('FireflyIII\Http\Requests\BudgetFormRequest'); + $request->shouldReceive('input')->andReturn(''); + + // fake update routine: + $repository = $this->mock('FireflyIII\Repositories\Budget\BudgetRepositoryInterface'); + $repository->shouldReceive('update')->andReturn($budget); + + $this->call('POST', '/budgets/update/' . $budget->id, $data); + $this->assertResponseStatus(302); + $this->assertSessionHas('success'); } public function testUpdateIncome() { - $this->markTestIncomplete(); + + // a budget: + $budget = FactoryMuffin::create('FireflyIII\Models\Budget'); + $this->be($budget->user); + $date = Carbon::now()->format('FY'); + $pref = FactoryMuffin::create('FireflyIII\Models\Preference'); + Preferences::shouldReceive('get')->withArgs(['budgetIncomeTotal' . $date, 1000])->andReturn($pref); + Amount::shouldReceive('format')->andReturn('xx'); + + $this->call('GET', '/budgets/income'); + $this->assertResponseOk(); + $this->assertViewHas('amount'); } } \ No newline at end of file diff --git a/tests/factories/all.php b/tests/factories/all.php index 99572f38e1..74b3792ce3 100644 --- a/tests/factories/all.php +++ b/tests/factories/all.php @@ -41,7 +41,7 @@ FactoryMuffin::define( FactoryMuffin::define( 'FireflyIII\Models\Budget', [ 'user_id' => 'factory|FireflyIII\User', - 'name' => 'word', + 'name' => 'sentence', 'active' => 'boolean', 'encrypted' => 1, ]