mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Tests for reminders.
This commit is contained in:
parent
593e799ca1
commit
89363ecfa3
@ -26,25 +26,22 @@ class ReminderController extends BaseController
|
|||||||
public function act(Reminder $reminder)
|
public function act(Reminder $reminder)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch (get_class($reminder->remindersable)) {
|
$class = get_class($reminder->remindersable);
|
||||||
default:
|
|
||||||
throw new FireflyException('Cannot act on reminder for ' . get_class($reminder->remindersable));
|
|
||||||
break;
|
|
||||||
break;
|
|
||||||
case 'PiggyBank':
|
|
||||||
$amount = Reminders::amountForReminder($reminder);
|
|
||||||
$preFilled = [
|
|
||||||
'amount' => round($amount, 2),
|
|
||||||
'description' => 'Money for ' . $reminder->remindersable->name,
|
|
||||||
'piggy_bank_id' => $reminder->remindersable_id,
|
|
||||||
'account_to_id' => $reminder->remindersable->account_id
|
|
||||||
];
|
|
||||||
Session::flash('preFilled', $preFilled);
|
|
||||||
|
|
||||||
return Redirect::route('transactions.create', 'transfer');
|
if ($class == 'PiggyBank') {
|
||||||
break;
|
$amount = Reminders::amountForReminder($reminder);
|
||||||
|
$preFilled = [
|
||||||
|
'amount' => round($amount, 2),
|
||||||
|
'description' => 'Money for ' . $reminder->remindersable->name,
|
||||||
|
'piggy_bank_id' => $reminder->remindersable_id,
|
||||||
|
'account_to_id' => $reminder->remindersable->account_id
|
||||||
|
];
|
||||||
|
Session::flash('preFilled', $preFilled);
|
||||||
|
|
||||||
|
return Redirect::route('transactions.create', 'transfer');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return View::make('error')->with('message', 'This reminder has an invalid class connected to it.');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -66,7 +63,7 @@ class ReminderController extends BaseController
|
|||||||
*
|
*
|
||||||
* @return \Illuminate\Http\RedirectResponse
|
* @return \Illuminate\Http\RedirectResponse
|
||||||
*/
|
*/
|
||||||
public function notnow(Reminder $reminder)
|
public function notNow(Reminder $reminder)
|
||||||
{
|
{
|
||||||
$reminder->active = 0;
|
$reminder->active = 0;
|
||||||
$reminder->notnow = 1;
|
$reminder->notnow = 1;
|
||||||
|
@ -97,6 +97,8 @@ class TestContentSeeder extends Seeder
|
|||||||
'order' => 0,
|
'order' => 0,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
PiggyBankEvent::create(['piggy_bank_id' => 1, 'date' => $startDate->format('Y-m-d'), 'amount' => 100]);
|
PiggyBankEvent::create(['piggy_bank_id' => 1, 'date' => $startDate->format('Y-m-d'), 'amount' => 100]);
|
||||||
PiggyBankRepetition::create(
|
PiggyBankRepetition::create(
|
||||||
[
|
[
|
||||||
@ -136,6 +138,59 @@ class TestContentSeeder extends Seeder
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// weekly reminder piggy bank
|
||||||
|
$weekly = PiggyBank::create(
|
||||||
|
[
|
||||||
|
'account_id' => $savings->id,
|
||||||
|
'name' => 'Weekly reminder for clothes',
|
||||||
|
'targetamount' => 2000,
|
||||||
|
'startdate' => Carbon::now()->format('Y-m-d'),
|
||||||
|
'targetdate' => Carbon::now()->addYear()->subDay()->format('Y-m-d'),
|
||||||
|
'repeats' => 0,
|
||||||
|
'rep_length' => null,
|
||||||
|
'rep_every' => 0,
|
||||||
|
'rep_times' => null,
|
||||||
|
'reminder' => 'week',
|
||||||
|
'reminder_skip' => 0,
|
||||||
|
'remind_me' => 1,
|
||||||
|
'order' => 0,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
PiggyBankRepetition::create(
|
||||||
|
[
|
||||||
|
'piggy_bank_id' => $weekly->id,
|
||||||
|
'startdate' => Carbon::now()->format('Y-m-d'),
|
||||||
|
'targetdate' => Carbon::now()->addYear()->subDay()->format('Y-m-d'),
|
||||||
|
'currentamount' => 0
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
// a fake reminder for this piggy bank:
|
||||||
|
Reminder::create(
|
||||||
|
[
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'startdate' => $startDate->format('Y-m-d'),
|
||||||
|
'enddate' => Carbon::now()->addWeek()->format('Y-m-d'),
|
||||||
|
'active' => 1,
|
||||||
|
'notnow' => 0,
|
||||||
|
'remindersable_id' => $weekly->id,
|
||||||
|
'remindersable_type' => 'PiggyBank'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
// a fake reminder for this piggy bank:
|
||||||
|
Reminder::create(
|
||||||
|
[
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'startdate' => $startDate->format('Y-m-d'),
|
||||||
|
'enddate' => Carbon::now()->addWeek()->format('Y-m-d'),
|
||||||
|
'active' => 1,
|
||||||
|
'notnow' => 0,
|
||||||
|
'remindersable_id' => 40,
|
||||||
|
'remindersable_type' => 'Transaction'
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
// bill
|
// bill
|
||||||
$firstBill = \Bill::create(
|
$firstBill = \Bill::create(
|
||||||
[
|
[
|
||||||
@ -168,6 +223,7 @@ class TestContentSeeder extends Seeder
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// create some expense accounts.
|
// create some expense accounts.
|
||||||
$albert = Account::create(['user_id' => $user->id, 'account_type_id' => $expenseType->id, 'name' => 'Albert Heijn', 'active' => 1]);
|
$albert = Account::create(['user_id' => $user->id, 'account_type_id' => $expenseType->id, 'name' => 'Albert Heijn', 'active' => 1]);
|
||||||
$plus = Account::create(['user_id' => $user->id, 'account_type_id' => $expenseType->id, 'name' => 'PLUS', 'active' => 1]);
|
$plus = Account::create(['user_id' => $user->id, 'account_type_id' => $expenseType->id, 'name' => 'PLUS', 'active' => 1]);
|
||||||
|
@ -26,7 +26,7 @@ class Date
|
|||||||
|
|
||||||
switch ($repeatFreq) {
|
switch ($repeatFreq) {
|
||||||
default:
|
default:
|
||||||
throw new FireflyException('Cannot do addPeriod for $repeat_freq ' . $repeatFreq);
|
throw new FireflyException('Cannot do addPeriod for $repeat_freq "' . $repeatFreq . '"');
|
||||||
break;
|
break;
|
||||||
case 'daily':
|
case 'daily':
|
||||||
$date->addDays($add);
|
$date->addDays($add);
|
||||||
|
@ -257,7 +257,7 @@ Route::group(
|
|||||||
// reminder controller
|
// reminder controller
|
||||||
Route::get('/reminders/{reminder}', ['uses' => 'ReminderController@show', 'as' => 'reminders.show']);
|
Route::get('/reminders/{reminder}', ['uses' => 'ReminderController@show', 'as' => 'reminders.show']);
|
||||||
Route::get('/reminders/{reminder}/dismiss', ['uses' => 'ReminderController@dismiss', 'as' => 'reminders.dismiss']);
|
Route::get('/reminders/{reminder}/dismiss', ['uses' => 'ReminderController@dismiss', 'as' => 'reminders.dismiss']);
|
||||||
Route::get('/reminders/{reminder}/notnow', ['uses' => 'ReminderController@notnow', 'as' => 'reminders.notnow']);
|
Route::get('/reminders/{reminder}/notNow', ['uses' => 'ReminderController@notNow', 'as' => 'reminders.notNow']);
|
||||||
Route::get('/reminders/{reminder}/act', ['uses' => 'ReminderController@act', 'as' => 'reminders.act']);
|
Route::get('/reminders/{reminder}/act', ['uses' => 'ReminderController@act', 'as' => 'reminders.act']);
|
||||||
|
|
||||||
// search controller:
|
// search controller:
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<div class="panel panel-primary">
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
A reminder about
|
A reminder about
|
||||||
@if(get_class($reminder->remindersable) == 'Piggybank')
|
@if(get_class($reminder->remindersable) == 'PiggyBank')
|
||||||
your piggy bank labelled "{{{$reminder->remindersable->name}}}"
|
your piggy bank labelled "{{{$reminder->remindersable->name}}}"
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
@ -22,7 +22,7 @@
|
|||||||
<p>
|
<p>
|
||||||
<a href="{{route('reminders.act',$reminder->id)}}" class="btn btn-primary"><i class="fa fa-fw fa-thumbs-o-up"></i> I want to do this</a>
|
<a href="{{route('reminders.act',$reminder->id)}}" class="btn btn-primary"><i class="fa fa-fw fa-thumbs-o-up"></i> I want to do this</a>
|
||||||
<a href="{{route('reminders.dismiss',$reminder->id)}}" class="btn btn-success"><i class="fa fa-smile-o fa-fw"></i> I already did this</a>
|
<a href="{{route('reminders.dismiss',$reminder->id)}}" class="btn btn-success"><i class="fa fa-smile-o fa-fw"></i> I already did this</a>
|
||||||
<a href="{{route('reminders.notnow',$reminder->id)}}" class="btn btn-danger"><i class="fa fa-fw fa-clock-o"></i> Not this time</a>
|
<a href="{{route('reminders.notNow',$reminder->id)}}" class="btn btn-danger"><i class="fa fa-fw fa-clock-o"></i> Not this time</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
60
tests/functional/ReminderControllerCest.php
Normal file
60
tests/functional/ReminderControllerCest.php
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class ReminderControllerCest
|
||||||
|
*/
|
||||||
|
class ReminderControllerCest
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param FunctionalTester $I
|
||||||
|
*/
|
||||||
|
public function _after(FunctionalTester $I)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param FunctionalTester $I
|
||||||
|
*/
|
||||||
|
public function _before(FunctionalTester $I)
|
||||||
|
{
|
||||||
|
$I->amLoggedAs(['email' => 'thegrumpydictator@gmail.com', 'password' => 'james']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function act(FunctionalTester $I)
|
||||||
|
{
|
||||||
|
$I->wantTo('act on a reminder');
|
||||||
|
$I->amOnPage('/reminders/1/act');
|
||||||
|
$I->see('Money for Weekly reminder for clothes');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dismiss(FunctionalTester $I)
|
||||||
|
{
|
||||||
|
$I->wantTo('dismiss a reminder');
|
||||||
|
$I->amOnPage('/reminders/1/dismiss');
|
||||||
|
$I->see('Reminder dismissed');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function notNow(FunctionalTester $I)
|
||||||
|
{
|
||||||
|
$I->wantTo('ignore a reminder');
|
||||||
|
$I->amOnPage('/reminders/1/notNow');
|
||||||
|
$I->see('Reminder dismissed');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function show(FunctionalTester $I)
|
||||||
|
{
|
||||||
|
$I->wantTo('see a reminder');
|
||||||
|
$I->amOnPage('/reminders/1');
|
||||||
|
$I->see('A reminder about');
|
||||||
|
$I->see('your piggy bank labelled "Weekly reminder for clothes"');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function actOnInvalid(FunctionalTester $I)
|
||||||
|
{
|
||||||
|
$I->wantTo('act on an invalid reminder');
|
||||||
|
$I->amOnPage('/reminders/2/act');
|
||||||
|
$I->see('This reminder has an invalid class connected to it.');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user