From ae7933c8c9335538999f075ece2c8cbbf2bb71e2 Mon Sep 17 00:00:00 2001 From: James Cole Date: Thu, 28 Dec 2017 11:57:38 +0100 Subject: [PATCH 01/22] use config, not preferences, first tests. --- .../Events/VersionCheckEventHandler.php | 12 ++- .../Controllers/Admin/UpdateController.php | 8 +- .../Admin/UpdateControllerTest.php | 79 +++++++++++++++++++ 3 files changed, 90 insertions(+), 9 deletions(-) create mode 100644 tests/Feature/Controllers/Admin/UpdateControllerTest.php diff --git a/app/Handlers/Events/VersionCheckEventHandler.php b/app/Handlers/Events/VersionCheckEventHandler.php index e22655c65c..4308d8da10 100644 --- a/app/Handlers/Events/VersionCheckEventHandler.php +++ b/app/Handlers/Events/VersionCheckEventHandler.php @@ -23,10 +23,10 @@ declare(strict_types=1); namespace FireflyIII\Handlers\Events; +use FireflyConfig; use FireflyIII\User; use Illuminate\Auth\Events\Login; use Log; -use Preferences; /** * Class VersionCheckEventHandler @@ -45,9 +45,13 @@ class VersionCheckEventHandler } /** @var User $user */ - $user = $event->user; - $permission = Preferences::getForUser($user, 'permission_update_check', -1); - $lastCheckTime = Preferences::getForUser($user, 'last_update_check', time()); + $user = $event->user; + if (!$user->hasRole('owner')) { + return; + } + + $permission = FireflyConfig::get('permission_update_check', -1); + $lastCheckTime = FireflyConfig::get('last_update_check', time()); $now = time(); if ($now - $lastCheckTime->data < 604800) { Log::debug('Checked for updates less than a week ago.'); diff --git a/app/Http/Controllers/Admin/UpdateController.php b/app/Http/Controllers/Admin/UpdateController.php index 28127c4530..7142c43cde 100644 --- a/app/Http/Controllers/Admin/UpdateController.php +++ b/app/Http/Controllers/Admin/UpdateController.php @@ -30,7 +30,6 @@ use FireflyIII\Services\Github\Object\Release; use FireflyIII\Services\Github\Request\UpdateRequest; use Illuminate\Http\Request; use Log; -use Preferences; use Response; use Session; @@ -67,7 +66,7 @@ class UpdateController extends Controller { $subTitle = trans('firefly.update_check_title'); $subTitleIcon = 'fa-star'; - $permission = app('preferences')->get('permission_update_check', -1); + $permission = app('fireflyconfig')->get('permission_update_check', -1); $selected = $permission->data; $options = [ '-1' => trans('firefly.updates_ask_me_later'), @@ -86,9 +85,8 @@ class UpdateController extends Controller public function post(Request $request) { $checkForUpdates = intval($request->get('check_for_updates')); - Preferences::set('permission_update_check', $checkForUpdates); + app('fireflyconfig')->set('permission_update_check', $checkForUpdates); Session::flash('success', strval(trans('firefly.configuration_updated'))); - Preferences::mark(); return redirect(route('admin.update-check')); } @@ -109,7 +107,7 @@ class UpdateController extends Controller $first = reset($releases); $string = ''; $check = version_compare($current, $first->getTitle()); - Preferences::set('last_update_check', time()); + app('fireflyconfig')->set('last_update_check', time()); } catch (FireflyException $e) { Log::error(sprintf('Could not check for updates: %s', $e->getMessage())); } diff --git a/tests/Feature/Controllers/Admin/UpdateControllerTest.php b/tests/Feature/Controllers/Admin/UpdateControllerTest.php new file mode 100644 index 0000000000..a0e4bf69d1 --- /dev/null +++ b/tests/Feature/Controllers/Admin/UpdateControllerTest.php @@ -0,0 +1,79 @@ +. + */ +declare(strict_types=1); + +namespace Tests\Feature\Controllers\Admin; + +use FireflyConfig; +use FireflyIII\Models\Configuration; +use Tests\TestCase; + +/** + * Class UpdateControllerTest + * + * @SuppressWarnings(PHPMD.TooManyPublicMethods) + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ +class ConfigurationControllerTest extends TestCase +{ + /** + * @covers \FireflyIII\Http\Controllers\Admin\UpdateControllerTest::index + * @covers \FireflyIII\Http\Controllers\Admin\UpdateControllerTest::__construct + */ + public function testIndex() + { + $this->be($this->user()); + + $config = new Configuration; + $config->data = -1; + + $falseConfig = new Configuration; + $falseConfig->data = false; + + FireflyConfig::shouldReceive('get')->withArgs(['permission_update_check', true])->once()->andReturn($config); + FireflyConfig::shouldReceive('get')->withArgs(['is_demo_site', false])->once()->andReturn($falseConfig); + + $response = $this->get(route('admin.update-check')); + $response->assertStatus(200); + + // has bread crumb + $response->assertSee('