From 5a57398f81250bcfbbec63293cbed9cbdad2fee8 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 18 Dec 2016 17:54:11 +0100 Subject: [PATCH 001/150] New tests. --- app/Http/Controllers/PiggyBankController.php | 4 + .../Controllers/PreferencesController.php | 2 +- app/Http/Controllers/ProfileController.php | 11 +- app/Http/Requests/PiggyBankFormRequest.php | 6 +- app/Http/breadcrumbs.php | 25 +++ app/Repositories/User/UserRepository.php | 12 ++ .../User/UserRepositoryInterface.php | 8 + resources/views/piggy-banks/add-mobile.twig | 2 +- .../views/piggy-banks/remove-mobile.twig | 2 +- routes/web.php | 1 + tests/TestCase.php | 9 + .../Controllers/NewUserControllerTest.php | 20 ++- .../Controllers/PiggyBankControllerTest.php | 160 ++++++++++-------- .../Controllers/PreferencesControllerTest.php | 54 +++--- .../Controllers/ProfileControllerTest.php | 59 ++++--- 15 files changed, 223 insertions(+), 152 deletions(-) diff --git a/app/Http/Controllers/PiggyBankController.php b/app/Http/Controllers/PiggyBankController.php index 7239ba309a..d1feb427eb 100644 --- a/app/Http/Controllers/PiggyBankController.php +++ b/app/Http/Controllers/PiggyBankController.php @@ -24,6 +24,7 @@ use Illuminate\Support\Collection; use Input; use Log; use Preferences; +use Response; use Session; use Steam; use URL; @@ -243,6 +244,8 @@ class PiggyBankController extends Controller /** * @param PiggyBankRepositoryInterface $repository + * + * @return \Illuminate\Http\JsonResponse */ public function order(PiggyBankRepositoryInterface $repository) { @@ -257,6 +260,7 @@ class PiggyBankController extends Controller $repository->setOrder(intval($id), ($order + 1)); } } + return Response::json(['result' => 'ok']); } /** diff --git a/app/Http/Controllers/PreferencesController.php b/app/Http/Controllers/PreferencesController.php index e8ddd70eb3..a3654bb031 100644 --- a/app/Http/Controllers/PreferencesController.php +++ b/app/Http/Controllers/PreferencesController.php @@ -150,7 +150,7 @@ class PreferencesController extends Controller // custom fiscal year $customFiscalYear = intval($request->get('customFiscalYear')) === 1; - $fiscalYearStart = date('m-d', strtotime($request->get('fiscalYearStart'))); + $fiscalYearStart = date('m-d', strtotime(strval($request->get('fiscalYearStart')))); Preferences::set('customFiscalYear', $customFiscalYear); Preferences::set('fiscalYearStart', $fiscalYearStart); diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 8f8fbc6b07..3399c84644 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -83,11 +83,12 @@ class ProfileController extends Controller } /** - * @param ProfileFormRequest $request + * @param ProfileFormRequest $request + * @param UserRepositoryInterface $repository * - * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ - public function postChangePassword(ProfileFormRequest $request) + public function postChangePassword(ProfileFormRequest $request, UserRepositoryInterface $repository) { // old, new1, new2 if (!Hash::check($request->get('current_password'), auth()->user()->password)) { @@ -103,9 +104,7 @@ class ProfileController extends Controller } // update the user with the new password. - auth()->user()->password = bcrypt($request->get('new_password')); - auth()->user()->save(); - + $repository->changePassword(auth()->user(), $request->get('new_password')); Session::flash('success', strval(trans('firefly.password_changed'))); return redirect(route('profile.index')); diff --git a/app/Http/Requests/PiggyBankFormRequest.php b/app/Http/Requests/PiggyBankFormRequest.php index 69c11d70b2..684ad148d9 100644 --- a/app/Http/Requests/PiggyBankFormRequest.php +++ b/app/Http/Requests/PiggyBankFormRequest.php @@ -42,8 +42,8 @@ class PiggyBankFormRequest extends Request 'startdate' => new Carbon, 'account_id' => intval($this->get('account_id')), 'targetamount' => round($this->get('targetamount'), 2), - 'targetdate' => strlen($this->get('targetdate')) > 0 ? new Carbon($this->get('targetdate')) : null, - 'note' => trim($this->get('note')), + 'targetdate' => strlen(strval($this->get('targetdate'))) > 0 ? new Carbon($this->get('targetdate')) : null, + 'note' => trim(strval($this->get('note'))), ]; } @@ -64,7 +64,7 @@ class PiggyBankFormRequest extends Request 'name' => $nameRule, 'account_id' => 'required|belongsToUser:accounts', 'targetamount' => 'required|min:0.01', - 'amount_currency_id_targetamount' => 'exists:transaction_currencies,id', + 'amount_currency_id_targetamount' => 'required|exists:transaction_currencies,id', 'startdate' => 'date', 'targetdate' => $targetDateRule, 'order' => 'integer|min:1', diff --git a/app/Http/breadcrumbs.php b/app/Http/breadcrumbs.php index 5b99d097ee..7f35b095b7 100644 --- a/app/Http/breadcrumbs.php +++ b/app/Http/breadcrumbs.php @@ -413,7 +413,22 @@ Breadcrumbs::register( 'piggy-banks.show', function (BreadCrumbGenerator $breadcrumbs, PiggyBank $piggyBank) { $breadcrumbs->parent('piggy-banks.index'); $breadcrumbs->push(e($piggyBank->name), route('piggy-banks.show', [$piggyBank->id])); +} +); +Breadcrumbs::register( + 'piggy-banks.add-money-mobile', function (BreadCrumbGenerator $breadcrumbs, PiggyBank $piggyBank) { + $breadcrumbs->parent('piggy-banks.show', $piggyBank); + $breadcrumbs->push(trans('firefly.add_money_to_piggy', ['name' => $piggyBank->name]), route('piggy-banks.add-money-mobile', [$piggyBank->id])); +} +); + +Breadcrumbs::register( + 'piggy-banks.remove-money-mobile', function (BreadCrumbGenerator $breadcrumbs, PiggyBank $piggyBank) { + $breadcrumbs->parent('piggy-banks.show', $piggyBank); + $breadcrumbs->push( + trans('firefly.remove_money_from_piggy_title', ['name' => $piggyBank->name]), route('piggy-banks.remove-money-mobile', [$piggyBank->id]) + ); } ); @@ -513,6 +528,16 @@ Breadcrumbs::register( } ); +/** + * New user Controller + */ +Breadcrumbs::register( + 'new-user.index', function (BreadCrumbGenerator $breadcrumbs) { + $breadcrumbs->parent('home'); + $breadcrumbs->push(trans('firefly.getting_started'), route('new-user.index')); +} +); + /** * Rules */ diff --git a/app/Repositories/User/UserRepository.php b/app/Repositories/User/UserRepository.php index f33171c1e4..1f206f89a7 100644 --- a/app/Repositories/User/UserRepository.php +++ b/app/Repositories/User/UserRepository.php @@ -148,4 +148,16 @@ class UserRepository implements UserRepositoryInterface return $return; } + + /** + * @param User $user + * @param string $password + * + * @return mixed + */ + public function changePassword(User $user, string $password) + { + $user->password = bcrypt($password); + $user->save(); + } } diff --git a/app/Repositories/User/UserRepositoryInterface.php b/app/Repositories/User/UserRepositoryInterface.php index 66283a9ba0..93e34a7a14 100644 --- a/app/Repositories/User/UserRepositoryInterface.php +++ b/app/Repositories/User/UserRepositoryInterface.php @@ -41,6 +41,14 @@ interface UserRepositoryInterface */ public function attachRole(User $user, string $role): bool; + /** + * @param User $user + * @param string $password + * + * @return mixed + */ + public function changePassword(User $user, string $password); + /** * Returns a count of all users. * diff --git a/resources/views/piggy-banks/add-mobile.twig b/resources/views/piggy-banks/add-mobile.twig index 29460b3e47..1212641bf4 100644 --- a/resources/views/piggy-banks/add-mobile.twig +++ b/resources/views/piggy-banks/add-mobile.twig @@ -1,7 +1,7 @@ {% extends "./layout/default" %} {% block breadcrumbs %} - {{ Breadcrumbs.renderIfExists(Route.getCurrentRoute.getName) }} + {{ Breadcrumbs.renderIfExists(Route.getCurrentRoute.getName, piggyBank) }} {% endblock %} {% block content %} diff --git a/resources/views/piggy-banks/remove-mobile.twig b/resources/views/piggy-banks/remove-mobile.twig index 9b1574983a..d70ade101e 100644 --- a/resources/views/piggy-banks/remove-mobile.twig +++ b/resources/views/piggy-banks/remove-mobile.twig @@ -1,6 +1,6 @@ {% extends "./layout/default" %} {% block breadcrumbs %} - {{ Breadcrumbs.renderIfExists(Route.getCurrentRoute.getName) }} + {{ Breadcrumbs.renderIfExists(Route.getCurrentRoute.getName, piggyBank) }} {% endblock %} {% block content %} diff --git a/routes/web.php b/routes/web.php index 4573eb6696..515573629e 100755 --- a/routes/web.php +++ b/routes/web.php @@ -457,6 +457,7 @@ Route::group( Route::get('', ['uses' => 'ProfileController@index', 'as' => 'index']); Route::get('change-password', ['uses' => 'ProfileController@changePassword', 'as' => 'change-password']); Route::get('delete-account', ['uses' => 'ProfileController@deleteAccount', 'as' => 'delete-account']); + Route::post('delete-account', ['uses' => 'ProfileController@postDeleteAccount', 'as' => 'delete-account.post']); Route::post('change-password', ['uses' => 'ProfileController@postChangePassword', 'as' => 'change-password.post']); } diff --git a/tests/TestCase.php b/tests/TestCase.php index b4003cb46a..f0aed4568b 100755 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -94,6 +94,15 @@ abstract class TestCase extends Illuminate\Foundation\Testing\TestCase } + /** + * @return User + */ + public function emptyUser() + { + $user = User::find(2); + + return $user; + } /** * @return User diff --git a/tests/acceptance/Controllers/NewUserControllerTest.php b/tests/acceptance/Controllers/NewUserControllerTest.php index dd51e1fa8c..7c98ec5583 100644 --- a/tests/acceptance/Controllers/NewUserControllerTest.php +++ b/tests/acceptance/Controllers/NewUserControllerTest.php @@ -31,10 +31,10 @@ class NewUserControllerTest extends TestCase */ public function testIndex() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $this->be($this->emptyUser()); + $this->call('get', route('new-user.index')); + $this->assertResponseStatus(200); + $this->see('