From 10bff3c0b8ac71abdd600d8fbea86af752218929 Mon Sep 17 00:00:00 2001 From: James Cole Date: Mon, 25 May 2015 22:56:00 +0200 Subject: [PATCH] Fix tests. --- .../Controllers/PreferencesController.php | 3 +- app/Support/Preferences.php | 32 +++++++++++++------ tests/controllers/AccountControllerTest.php | 6 +++- tests/controllers/BillControllerTest.php | 2 +- tests/controllers/BudgetControllerTest.php | 2 +- tests/controllers/PiggyBankControllerTest.php | 2 +- tests/helpers/ReminderHelperTest.php | 1 + 7 files changed, 33 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/PreferencesController.php b/app/Http/Controllers/PreferencesController.php index 8077c90cba..0848155a01 100644 --- a/app/Http/Controllers/PreferencesController.php +++ b/app/Http/Controllers/PreferencesController.php @@ -38,8 +38,7 @@ class PreferencesController extends Controller $viewRange = $viewRangePref->data; $frontPageAccounts = Preferences::get('frontPageAccounts', []); $budgetMax = Preferences::get('budgetMaximum', 1000); - $languagePref = Preferences::get('language', 'en'); - $language = $languagePref->data; + $language = Preferences::get('language', 'en')->data; $budgetMaximum = $budgetMax->data; return view('preferences.index', compact('budgetMaximum', 'language', 'accounts', 'frontPageAccounts', 'viewRange')); diff --git a/app/Support/Preferences.php b/app/Support/Preferences.php index ff534f63e3..a4adfb586f 100644 --- a/app/Support/Preferences.php +++ b/app/Support/Preferences.php @@ -4,6 +4,7 @@ namespace FireflyIII\Support; use Auth; use FireflyIII\Models\Preference; +use Log; /** * Class Preferences @@ -20,14 +21,19 @@ class Preferences */ public function get($name, $default = null) { - $pref = Preference::where('user_id', Auth::user()->id)->where('name', $name)->first(); - if (is_null($pref) && is_null($default)) { + $preferences = Preference::where('user_id', Auth::user()->id)->get(); + + /** @var Preference $preference */ + foreach ($preferences as $preference) { + if ($preference->name == $name) { + return $preference; + } + } + // no preference found and default is null: + if (is_null($default)) { // return NULL return null; } - if (!is_null($pref)) { - return $pref; - } return $this->set($name, $default); @@ -41,12 +47,20 @@ class Preferences */ public function set($name, $value) { - $pref = Preference::where('user_id', Auth::user()->id)->where('name', $name)->first(); - if (is_null($pref)) { - $pref = new Preference; - $pref->name = $name; + $preferences = Preference::where('user_id', Auth::user()->id)->get(); + /** @var Preference $preference */ + foreach ($preferences as $preference) { + if ($preference->name == $name) { + $preference->data = $value; + $preference->save(); + + return $preference; + } } + $pref = new Preference; + $pref->name = $name; $pref->data = $value; + if (!is_null(Auth::user()->id)) { $pref->user()->associate(Auth::user()); $pref->save(); diff --git a/tests/controllers/AccountControllerTest.php b/tests/controllers/AccountControllerTest.php index 41b04ac638..5913d750c7 100644 --- a/tests/controllers/AccountControllerTest.php +++ b/tests/controllers/AccountControllerTest.php @@ -67,7 +67,11 @@ class AccountControllerTest extends TestCase $this->be($pref->user); - Preferences::shouldReceive('get', 'viewRange')->andReturn($pref); + Preferences::shouldReceive('get')->withArgs(['viewRange', '1M'])->andReturn($pref); + + $language = FactoryMuffin::create('FireflyIII\Models\Preference'); + $language->data = 'en'; + Preferences::shouldReceive('get')->withArgs(['language', 'en'])->andReturn($language); // CURRENCY: $currency = FactoryMuffin::create('FireflyIII\Models\TransactionCurrency'); diff --git a/tests/controllers/BillControllerTest.php b/tests/controllers/BillControllerTest.php index 8a3404e48f..7ae7e26760 100644 --- a/tests/controllers/BillControllerTest.php +++ b/tests/controllers/BillControllerTest.php @@ -67,7 +67,7 @@ class BillControllerTest extends TestCase $bill = FactoryMuffin::create('FireflyIII\Models\Bill'); $this->be($bill->user); $this->call('GET', '/bills/delete/' . $bill->id); - $this->assertViewHas('subTitle', 'Delete "' . e($bill->name) . '"'); + $this->assertViewHas('subTitle', 'Delete bill "' . e($bill->name) . '"'); $this->assertResponseOk(); } diff --git a/tests/controllers/BudgetControllerTest.php b/tests/controllers/BudgetControllerTest.php index 6c816feb7f..df08b1502a 100644 --- a/tests/controllers/BudgetControllerTest.php +++ b/tests/controllers/BudgetControllerTest.php @@ -97,7 +97,7 @@ class BudgetControllerTest extends TestCase $this->call('GET', '/budgets/delete/' . $budget->id); $this->assertResponseOk(); - $this->assertViewHas('subTitle', 'Delete budget' . e($budget->name) . '"'); + $this->assertViewHas('subTitle', 'Delete budget "' . e($budget->name) . '"'); $this->assertViewHas('budget'); $this->assertSessionHas('budgets.delete.url'); } diff --git a/tests/controllers/PiggyBankControllerTest.php b/tests/controllers/PiggyBankControllerTest.php index 2d4376e213..8bea91a676 100644 --- a/tests/controllers/PiggyBankControllerTest.php +++ b/tests/controllers/PiggyBankControllerTest.php @@ -101,7 +101,7 @@ class PiggyBankControllerTest extends TestCase $this->call('GET', '/piggy-banks/delete/' . $piggyBank->id); $this->assertResponseOk(); - $this->assertViewHas('subTitle', 'Delete "' . e($piggyBank->name) . '"'); + $this->assertViewHas('subTitle', 'Delete piggy bank "' . e($piggyBank->name) . '"'); } /** diff --git a/tests/helpers/ReminderHelperTest.php b/tests/helpers/ReminderHelperTest.php index 15a994a76f..7e29e99860 100644 --- a/tests/helpers/ReminderHelperTest.php +++ b/tests/helpers/ReminderHelperTest.php @@ -172,6 +172,7 @@ class ReminderHelperTest extends TestCase $piggyBank = FactoryMuffin::create('FireflyIII\Models\PiggyBank'); $reminder = FactoryMuffin::create('FireflyIII\Models\Reminder'); $piggyBank->targetdate = new Carbon; + $this->be($piggyBank->account->user); $reminder->remindersable_id = $piggyBank->id; Amount::shouldReceive('format')->andReturn('xx');