mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-12 15:35:15 +00:00
New tests for the repeated expenses.
This commit is contained in:
@@ -194,6 +194,41 @@ class TestContentSeeder extends Seeder
|
||||
]
|
||||
);
|
||||
|
||||
// recurring transaction
|
||||
$recurring = PiggyBank::create(
|
||||
[
|
||||
'account_id' => $savings->id,
|
||||
'name' => 'Nieuwe kleding',
|
||||
'targetamount' => 1000,
|
||||
'startdate' => Carbon::now()->subMonth()->format('Y-m-d'),
|
||||
'targetdate' => Carbon::now()->format('Y-m-d'),
|
||||
'repeats' => 1,
|
||||
'rep_length' => 'month',
|
||||
'rep_every' => 0,
|
||||
'rep_times' => 0,
|
||||
'reminder' => 'month',
|
||||
'reminder_skip' => 0,
|
||||
'remind_me' => 1,
|
||||
'order' => 0,
|
||||
]
|
||||
);
|
||||
PiggyBankRepetition::create(
|
||||
[
|
||||
'piggy_bank_id' => $recurring->id,
|
||||
'startdate' => Carbon::now()->format('Y-m-d'),
|
||||
'targetdate' => Carbon::now()->addMonth()->format('Y-m-d'),
|
||||
'currentamount' => 0
|
||||
]
|
||||
);
|
||||
PiggyBankRepetition::create(
|
||||
[
|
||||
'piggy_bank_id' => $recurring->id,
|
||||
'startdate' => Carbon::now()->subMonth()->format('Y-m-d'),
|
||||
'targetdate' => Carbon::now()->format('Y-m-d'),
|
||||
'currentamount' => 0
|
||||
]
|
||||
);
|
||||
|
||||
// bill
|
||||
$firstBill = \Bill::create(
|
||||
[
|
||||
|
@@ -9,6 +9,9 @@ use Watson\Validating\ValidatingTrait;
|
||||
class PiggyBank extends Eloquent
|
||||
{
|
||||
use ValidatingTrait;
|
||||
public $fillable
|
||||
= ['account_id', 'name', 'targetamount', 'startdate', 'targetdate', 'repeats', 'rep_length', 'rep_every', 'rep_times', 'reminder', 'reminder_skip',
|
||||
'remind_me', 'order'];
|
||||
protected $rules
|
||||
= ['account_id' => 'required|exists:accounts,id', // link to Account
|
||||
'name' => 'required|between:1,255', // name
|
||||
@@ -23,9 +26,6 @@ class PiggyBank extends Eloquent
|
||||
'reminder_skip' => 'required|min:0|max:100', // every week? every 2 months?
|
||||
'remind_me' => 'required|boolean', 'order' => 'required:min:1', // not yet used.
|
||||
];
|
||||
public $fillable
|
||||
= ['account_id', 'name', 'targetamount', 'startdate', 'targetdate', 'repeats', 'rep_length', 'rep_every', 'rep_times', 'reminder', 'reminder_skip',
|
||||
'remind_me', 'order'];
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
@@ -105,28 +105,28 @@ class PiggyBank extends Eloquent
|
||||
function ($q) {
|
||||
$today = new Carbon;
|
||||
$q->whereNull('startdate');
|
||||
$q->orWhere('startdate', '<=', $today->format('Y-m-d'));
|
||||
$q->orWhere('startdate', '<=', $today->format('Y-m-d 00:00:00'));
|
||||
}
|
||||
)->where(
|
||||
function ($q) {
|
||||
$today = new Carbon;
|
||||
$q->whereNull('targetdate');
|
||||
$q->orWhere('targetdate', '>=', $today->format('Y-m-d'));
|
||||
$q->orWhere('targetdate', '>=', $today->format('Y-m-d 00:00:00'));
|
||||
}
|
||||
);
|
||||
}
|
||||
)->orWhere(
|
||||
function ($q) {
|
||||
$today = new Carbon;
|
||||
$q->where('startdate', '>=', $today->format('Y-m-d'));
|
||||
$q->where('targetdate', '>=', $today->format('Y-m-d'));
|
||||
$q->where('startdate', '>=', $today->format('Y-m-d 00:00:00'));
|
||||
$q->where('targetdate', '>=', $today->format('Y-m-d 00:00:00'));
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
)
|
||||
->orderBy('startdate', 'ASC');
|
||||
)->orderBy('startdate', 'ASC');
|
||||
$result = $query->first(['piggy_bank_repetitions.*']);
|
||||
\Log::debug('Result is null: ' . boolstr(is_null($result)));
|
||||
$this->currentRep = $result;
|
||||
\Log::debug('Found relevant rep in currentRelevantRep(): ' . $result->id);
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
@extends('layouts.default')
|
||||
@section('content')
|
||||
{{ Breadcrumbs::renderIfExists(Route::getCurrentRoute()->getName()) }}
|
||||
{{Form::open(['class' => 'form-horizontal','url' => route('repeated.store')])}}
|
||||
{{Form::open(['class' => 'form-horizontal','id' => 'store','url' => route('repeated.store')])}}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-12 col-sm-6">
|
||||
|
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Class RepeatedExpenseCest
|
||||
*/
|
||||
class RepeatedExpenseCest {
|
||||
/**
|
||||
* @param FunctionalTester $I
|
||||
*/
|
||||
public function _after(FunctionalTester $I)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @param FunctionalTester $I
|
||||
*/
|
||||
public function _before(FunctionalTester $I)
|
||||
{
|
||||
$I->amLoggedAs(['email' => 'thegrumpydictator@gmail.com', 'password' => 'james']);
|
||||
}
|
||||
|
||||
|
||||
}
|
151
tests/functional/RepeatedExpenseControllerCest.php
Normal file
151
tests/functional/RepeatedExpenseControllerCest.php
Normal file
@@ -0,0 +1,151 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Class RepeatedExpenseControllerCest
|
||||
*/
|
||||
class RepeatedExpenseControllerCest
|
||||
{
|
||||
/**
|
||||
* @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 create(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('create a recurring transaction');
|
||||
$I->amOnPage('/repeatedexpenses/create');
|
||||
$I->see('Create new repeated expense');
|
||||
}
|
||||
|
||||
public function delete(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('delete a recurring transaction');
|
||||
$I->amOnPage('/repeatedexpenses/delete/4');
|
||||
$I->see('Delete "Nieuwe kleding"');
|
||||
}
|
||||
|
||||
public function destroy(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('destroy a recurring transaction');
|
||||
$I->amOnPage('/repeatedexpenses/delete/4');
|
||||
$I->submitForm('#destroy', []);
|
||||
$I->dontSeeInDatabase('piggy_banks', ['id' => 5]);
|
||||
}
|
||||
|
||||
public function edit(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('edit a recurring transaction');
|
||||
$I->amOnPage('/repeatedexpenses/edit/4');
|
||||
$I->see('Edit repeated expense "Nieuwe kleding"');
|
||||
|
||||
}
|
||||
|
||||
public function index(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('see all recurring transactions');
|
||||
$I->amOnPage('/repeatedexpenses');
|
||||
$I->see('Overview');
|
||||
$I->see('Nieuwe kleding');
|
||||
}
|
||||
|
||||
public function show(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('view a recurring transaction');
|
||||
$I->amOnPage('/repeatedexpenses/show/4');
|
||||
$I->see('Nieuwe kleding');
|
||||
}
|
||||
|
||||
public function store(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('store a recurring transaction');
|
||||
$I->amOnPage('/repeatedexpenses/create');
|
||||
$I->submitForm(
|
||||
'#store', [
|
||||
'name' => 'TestRepeatedExpense',
|
||||
'account_id' => 1,
|
||||
'targetamount' => 1000,
|
||||
'targetdate' => '2014-05-01',
|
||||
'rep_length' => 'month',
|
||||
'rep_every' => 0,
|
||||
'rep_times' => 0,
|
||||
'remind_me' => 1,
|
||||
'reminder' => 'month',
|
||||
'post_submit_action' => 'store',
|
||||
]
|
||||
);
|
||||
$I->see('Piggy bank "TestRepeatedExpense" stored.');
|
||||
}
|
||||
|
||||
public function update(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update a recurring transaction');
|
||||
$I->amOnPage('/repeatedexpenses/edit/4');
|
||||
$I->submitForm(
|
||||
'#update', [
|
||||
'name' => 'Nieuwe kleding!',
|
||||
'account_id' => 2,
|
||||
'targetamount' => 1000.00,
|
||||
'targetdate' => '2014-12-30',
|
||||
'rep_length' => 'month',
|
||||
'rep_every' => 0,
|
||||
'rep_times' => 0,
|
||||
'remind_me' => 1,
|
||||
'reminder' => 'month',
|
||||
'post_submit_action' => 'update',
|
||||
]
|
||||
);
|
||||
$I->see('Repeated expense "Nieuwe kleding!" updated.');
|
||||
}
|
||||
|
||||
public function updateAndReturnToEdit(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('update a recurring transaction and return to edit screen');
|
||||
$I->amOnPage('/repeatedexpenses/edit/4');
|
||||
$I->submitForm(
|
||||
'#update', [
|
||||
'name' => 'Nieuwe kleding!',
|
||||
'account_id' => 2,
|
||||
'targetamount' => 1000.00,
|
||||
'targetdate' => '2014-12-30',
|
||||
'rep_length' => 'month',
|
||||
'rep_every' => 0,
|
||||
'rep_times' => 0,
|
||||
'remind_me' => 1,
|
||||
'reminder' => 'month',
|
||||
'post_submit_action' => 'return_to_edit',
|
||||
]
|
||||
);
|
||||
$I->see('Repeated expense "Nieuwe kleding!" updated.');
|
||||
}
|
||||
|
||||
public function updateFail(FunctionalTester $I)
|
||||
{
|
||||
$I->wantTo('try to update a recurring transaction and fail');
|
||||
$I->amOnPage('/repeatedexpenses/edit/4');
|
||||
$I->submitForm(
|
||||
'#update', [
|
||||
'name' => '',
|
||||
'account_id' => 2,
|
||||
'targetamount' => 1000.00,
|
||||
'targetdate' => '2014-12-30',
|
||||
'rep_length' => 'month',
|
||||
'rep_every' => 0,
|
||||
'rep_times' => 0,
|
||||
'remind_me' => 1,
|
||||
'reminder' => 'month',
|
||||
'post_submit_action' => 'update',
|
||||
]
|
||||
);
|
||||
$I->see('The name field is required.');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user