From f10f5d30bfbb5ba58fd9db0e771d62b2963df7d9 Mon Sep 17 00:00:00 2001 From: James Cole Date: Tue, 7 Apr 2015 18:48:34 +0200 Subject: [PATCH] Mock previously unmocked calls. --- .../Account/AccountRepository.php | 2 +- .../Account/AccountRepositoryInterface.php | 3 +- tests/controllers/AccountControllerTest.php | 11 +++- tests/controllers/BillControllerTest.php | 3 + tests/controllers/BudgetControllerTest.php | 5 +- tests/controllers/CategoryControllerTest.php | 58 ++++++++++++++----- tests/factories/all.php | 10 +++- 7 files changed, 69 insertions(+), 23 deletions(-) diff --git a/app/Repositories/Account/AccountRepository.php b/app/Repositories/Account/AccountRepository.php index 46e837d9e9..ff4474635c 100644 --- a/app/Repositories/Account/AccountRepository.php +++ b/app/Repositories/Account/AccountRepository.php @@ -155,7 +155,7 @@ class AccountRepository implements AccountRepositoryInterface * @param Account $account * @param int $page * - * @return mixed + * @return LengthAwarePaginator */ public function getJournals(Account $account, $page) { diff --git a/app/Repositories/Account/AccountRepositoryInterface.php b/app/Repositories/Account/AccountRepositoryInterface.php index 280cf41a21..7040e9ff9b 100644 --- a/app/Repositories/Account/AccountRepositoryInterface.php +++ b/app/Repositories/Account/AccountRepositoryInterface.php @@ -7,6 +7,7 @@ use FireflyIII\Models\Account; use FireflyIII\Models\Preference; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionJournal; +use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Collection; /** @@ -82,7 +83,7 @@ interface AccountRepositoryInterface * @param Account $account * @param string $range * - * @return mixed + * @return LengthAwarePaginator */ public function getJournals(Account $account, $page); diff --git a/tests/controllers/AccountControllerTest.php b/tests/controllers/AccountControllerTest.php index be21d77d87..63af83b215 100644 --- a/tests/controllers/AccountControllerTest.php +++ b/tests/controllers/AccountControllerTest.php @@ -4,6 +4,7 @@ use FireflyIII\Models\Account; use FireflyIII\Models\AccountType; use FireflyIII\Models\Preference; use FireflyIII\Models\TransactionCurrency; +use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Collection; use League\FactoryMuffin\Facade as FactoryMuffin; @@ -95,12 +96,15 @@ class AccountControllerTest extends TestCase $account = FactoryMuffin::create('FireflyIII\Models\Account'); $this->be($account->user); - $this->assertCount(1, DB::table('accounts')->where('id', $account->id)->whereNull('deleted_at')->get()); + + // mock: + $repository = $this->mock('FireflyIII\Repositories\Account\AccountRepositoryInterface'); + $repository->shouldReceive('destroy')->andReturn(true); // post it! $this->call('POST', '/accounts/destroy/' . $account->id, ['_token' => 'replaceme']); $this->assertSessionHas('success'); - $this->assertCount(0, DB::table('accounts')->where('id', $account->id)->whereNull('deleted_at')->get()); + $this->assertResponseStatus(302); } public function testEdit() @@ -167,7 +171,10 @@ class AccountControllerTest extends TestCase // an account: $this->be($this->account->user); + // mock! Amount::shouldReceive('getCurrencyCode')->once()->andReturn('A'); + $repository = $this->mock('FireflyIII\Repositories\Account\AccountRepositoryInterface'); + $repository->shouldReceive('getJournals')->andReturn(new LengthAwarePaginator([],0,10)); // get edit page: $this->call('GET', '/accounts/show/' . $this->account->id); diff --git a/tests/controllers/BillControllerTest.php b/tests/controllers/BillControllerTest.php index aa24ff040d..eab8b1c0f6 100644 --- a/tests/controllers/BillControllerTest.php +++ b/tests/controllers/BillControllerTest.php @@ -93,6 +93,9 @@ class BillControllerTest extends TestCase $bill = FactoryMuffin::create('FireflyIII\Models\Bill'); $this->be($bill->user); + $repository = $this->mock('FireflyIII\Repositories\Bill\BillRepositoryInterface'); + $repository->shouldReceive('destroy')->andReturn(true); + $this->call('POST', '/bills/destroy/' . $bill->id, ['_token' => 'replaceMe']); $this->assertSessionHas('success', 'The bill was deleted.'); diff --git a/tests/controllers/BudgetControllerTest.php b/tests/controllers/BudgetControllerTest.php index 0a89b99076..50ea295ca7 100644 --- a/tests/controllers/BudgetControllerTest.php +++ b/tests/controllers/BudgetControllerTest.php @@ -78,12 +78,13 @@ class BudgetControllerTest extends TestCase $budget = FactoryMuffin::create('FireflyIII\Models\Budget'); $this->be($budget->user); - $this->assertCount(1, DB::table('budgets')->where('id', $budget->id)->get()); + $repository = $this->mock('FireflyIII\Repositories\Budget\BudgetRepositoryInterface'); + $repository->shouldReceive('destroy')->andReturn(true); $this->call('POST', '/budgets/destroy/' . $budget->id, ['_token' => 'replaceme']); $this->assertSessionHas('success', 'The budget "' . e($budget->name) . '" was deleted.'); - $this->assertCount(0, DB::table('budgets')->wherenull('deleted_at')->where('id', $budget->id)->get()); + } public function testEdit() diff --git a/tests/controllers/CategoryControllerTest.php b/tests/controllers/CategoryControllerTest.php index 33119cc388..0a13d671d6 100644 --- a/tests/controllers/CategoryControllerTest.php +++ b/tests/controllers/CategoryControllerTest.php @@ -146,12 +146,18 @@ class CategoryControllerTest extends TestCase public function testStore() { - $category = FactoryMuffin::create('FireflyIII\Models\Category'); - $repository = $this->mock('FireflyIII\Repositories\Category\CategoryRepositoryInterface'); - - $repository->shouldReceive('store')->andReturn($category); + // create + $category = FactoryMuffin::create('FireflyIII\Models\Category'); $this->be($category->user); + // mock + $repository = $this->mock('FireflyIII\Repositories\Category\CategoryRepositoryInterface'); + $request = $this->mock('FireflyIII\Http\Requests\CategoryFormRequest'); + + // expect + $repository->shouldReceive('store')->andReturn($category); + $request->shouldReceive('input')->andReturn(''); + $this->call('POST', '/categories/store', ['_token' => 'replaceMe', 'name' => 'Bla bla #' . rand(1, 1000)]); $this->assertResponseStatus(302); $this->assertSessionHas('success', 'New category "' . $category->name . '" stored!'); @@ -160,12 +166,19 @@ class CategoryControllerTest extends TestCase // public function testStoreAndRedirect() { - $category = FactoryMuffin::create('FireflyIII\Models\Category'); - $repository = $this->mock('FireflyIII\Repositories\Category\CategoryRepositoryInterface'); - - $repository->shouldReceive('store')->andReturn($category); + // create + $category = FactoryMuffin::create('FireflyIII\Models\Category'); $this->be($category->user); + // mock: + $repository = $this->mock('FireflyIII\Repositories\Category\CategoryRepositoryInterface'); + $request = $this->mock('FireflyIII\Http\Requests\CategoryFormRequest'); + + // fake: + $repository->shouldReceive('store')->andReturn($category); + $request->shouldReceive('input')->andReturn(''); + + $this->call('POST', '/categories/store', ['_token' => 'replaceMe', 'create_another' => 1, 'name' => 'Bla bla #' . rand(1, 1000)]); $this->assertResponseStatus(302); $this->assertSessionHas('success', 'New category "' . $category->name . '" stored!'); @@ -173,12 +186,18 @@ class CategoryControllerTest extends TestCase public function testUpdate() { - $category = FactoryMuffin::create('FireflyIII\Models\Category'); - $repository = $this->mock('FireflyIII\Repositories\Category\CategoryRepositoryInterface'); - - $repository->shouldReceive('update')->andReturn($category); + // create + $category = FactoryMuffin::create('FireflyIII\Models\Category'); $this->be($category->user); + // mock + $repository = $this->mock('FireflyIII\Repositories\Category\CategoryRepositoryInterface'); + $request = $this->mock('FireflyIII\Http\Requests\CategoryFormRequest'); + + // expect + $repository->shouldReceive('update')->andReturn($category); + $request->shouldReceive('input')->andReturn(''); + $this->call('POST', '/categories/update/' . $category->id, ['_token' => 'replaceMe', 'name' => 'Bla bla #' . rand(1, 1000)]); $this->assertResponseStatus(302); $this->assertSessionHas('success', 'Category "' . $category->name . '" updated.'); @@ -186,12 +205,19 @@ class CategoryControllerTest extends TestCase public function testUpdateAndRedirect() { - $category = FactoryMuffin::create('FireflyIII\Models\Category'); - $repository = $this->mock('FireflyIII\Repositories\Category\CategoryRepositoryInterface'); - - $repository->shouldReceive('update')->andReturn($category); + // create + $category = FactoryMuffin::create('FireflyIII\Models\Category'); $this->be($category->user); + // mock + $repository = $this->mock('FireflyIII\Repositories\Category\CategoryRepositoryInterface'); + $request = $this->mock('FireflyIII\Http\Requests\CategoryFormRequest'); + + // expect + $request->shouldReceive('input')->andReturn(''); + $repository->shouldReceive('update')->andReturn($category); + + $this->call('POST', '/categories/update/' . $category->id, ['_token' => 'replaceMe', 'return_to_edit' => 1, 'name' => 'Bla bla #' . rand(1, 1000)]); $this->assertResponseStatus(302); $this->assertSessionHas('success', 'Category "' . $category->name . '" updated.'); diff --git a/tests/factories/all.php b/tests/factories/all.php index 16d2b9ee74..0a6d507a1a 100644 --- a/tests/factories/all.php +++ b/tests/factories/all.php @@ -177,7 +177,15 @@ FactoryMuffin::define( FactoryMuffin::define( 'FireflyIII\Models\TransactionType', [ - 'type' => 'word', + 'type' => function () { + $types = ['Withdrawal', 'Deposit', 'Transfer']; + $count = DB::table('transaction_types')->count(); + if ($count < 3) { + return $types[$count]; + } else { + return RandomString::generateRandomString(10); + } + } ] );