More test data.

This commit is contained in:
James Cole
2016-01-10 12:16:34 +01:00
parent 19444551e4
commit b26164a168

View File

@@ -8,6 +8,7 @@ use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\Category; use FireflyIII\Models\Category;
use FireflyIII\Models\PiggyBank; use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\PiggyBankEvent; use FireflyIII\Models\PiggyBankEvent;
use FireflyIII\Models\Preference;
use FireflyIII\Models\Role; use FireflyIII\Models\Role;
use FireflyIII\Models\Tag; use FireflyIII\Models\Tag;
use FireflyIII\Models\Transaction; use FireflyIII\Models\Transaction;
@@ -48,8 +49,11 @@ class TestDataSeeder extends Seeder
$this->createBills(); $this->createBills();
$this->createPiggybanks(); $this->createPiggybanks();
// preference to only see account #1 on frontpage.
$this->createPreferences();
// dates: // dates:
$start = Carbon::now()->subYears(5)->startOfMonth(); $start = Carbon::now()->subYears(2)->startOfMonth();
$end = Carbon::now()->endOfDay(); $end = Carbon::now()->endOfDay();
@@ -57,7 +61,7 @@ class TestDataSeeder extends Seeder
while ($current < $end) { while ($current < $end) {
$month = $current->format('F Y'); $month = $current->format('F Y');
// create salaries: // create salaries:
$this->createIncome('Salary ' . $month, $current, rand(2000, 2200)); $this->createIncome('Salary ' . $month, $current, rand(2000, 2100));
// pay bills: // pay bills:
$this->createRent('Rent for ' . $month, $current, 800); $this->createRent('Rent for ' . $month, $current, 800);
@@ -65,6 +69,7 @@ class TestDataSeeder extends Seeder
$this->createTV('TV bill for ' . $month, $current, 60); $this->createTV('TV bill for ' . $month, $current, 60);
$this->createPower('Power bill for ' . $month, $current, 120); $this->createPower('Power bill for ' . $month, $current, 120);
// pay daily groceries: // pay daily groceries:
$this->createGroceries($current); $this->createGroceries($current);
@@ -77,9 +82,13 @@ class TestDataSeeder extends Seeder
// save money every month: // save money every month:
$this->createSavings($current); $this->createSavings($current);
// buy gas for the car every month:
$this->createCar($current);
// budget limit for this month, on "Groceries". // budget limit for this month, on "Groceries".
$this->createBudgetLimit($current, 'Groceries', 400); $this->createBudgetLimit($current, 'Groceries', 400);
$this->createBudgetLimit($current, 'Bills', 1000); $this->createBudgetLimit($current, 'Bills', 1000);
$this->createBudgetLimit($current, 'Car', 100);
echo 'Created test data for ' . $month . "\n"; echo 'Created test data for ' . $month . "\n";
$current->addMonth(); $current->addMonth();
@@ -167,7 +176,7 @@ class TestDataSeeder extends Seeder
protected function createExpenseAccounts() protected function createExpenseAccounts()
{ {
$expenses = ['Adobe', 'Google', 'Vitens', 'Albert Heijn', 'PLUS', 'Apple', 'Bakker', 'Belastingdienst', 'bol.com', 'Cafe Central', 'conrad.nl', $expenses = ['Adobe', 'Google', 'Vitens', 'Albert Heijn', 'PLUS', 'Apple', 'Bakker', 'Belastingdienst', 'bol.com', 'Cafe Central', 'conrad.nl',
'coolblue', 'coolblue', 'Shell',
'DUO', 'Etos', 'FEBO', 'Greenchoice', 'Halfords', 'XS4All', 'iCentre', 'Jumper', 'Land lord']; 'DUO', 'Etos', 'FEBO', 'Greenchoice', 'Halfords', 'XS4All', 'iCentre', 'Jumper', 'Land lord'];
foreach ($expenses as $name) { foreach ($expenses as $name) {
// create account: // create account:
@@ -638,15 +647,16 @@ class TestDataSeeder extends Seeder
$start->startOfMonth(); $start->startOfMonth();
$end->endOfMonth(); $end->endOfMonth();
$fromAccount = $this->findAccount('MyBank Checking Account'); $fromAccount = $this->findAccount('MyBank Checking Account');
$stores = ['Albert Heijn', 'PLUS', 'Bakker']; $stores = ['Albert Heijn', 'PLUS', 'Bakker'];
$category = Category::firstOrCreateEncrypted(['name' => 'Daily groceries', 'user_id' => $this->user->id]); $descriptions = ['Groceries', 'Bought some food', 'Got groceries'];
$budget = Budget::firstOrCreateEncrypted(['name' => 'Groceries', 'user_id' => $this->user->id]); $category = Category::firstOrCreateEncrypted(['name' => 'Daily groceries', 'user_id' => $this->user->id]);
$budget = Budget::firstOrCreateEncrypted(['name' => 'Groceries', 'user_id' => $this->user->id]);
$current = clone $start; $current = clone $start;
while ($current < $end && $current < $today) { while ($current < $end && $current < $today) {
// daily groceries: // daily groceries:
$amount = rand(1000, 2500) / 100; $amount = rand(1500, 2500) / 100;
$toAccount = $this->findAccount($stores[rand(0, count($stores) - 1)]); $toAccount = $this->findAccount($stores[rand(0, count($stores) - 1)]);
$journal = TransactionJournal::create( $journal = TransactionJournal::create(
@@ -654,7 +664,7 @@ class TestDataSeeder extends Seeder
'user_id' => $this->user->id, 'user_id' => $this->user->id,
'transaction_type_id' => 1, 'transaction_type_id' => 1,
'transaction_currency_id' => 1, 'transaction_currency_id' => 1,
'description' => 'Groceries', 'description' => $descriptions[rand(0, count($descriptions) - 1)],
'completed' => 1, 'completed' => 1,
'date' => $current, 'date' => $current,
] ]
@@ -903,5 +913,89 @@ class TestDataSeeder extends Seeder
return null; return null;
} }
protected function createCar($date)
{
// twice:
$date = new Carbon($date->format('Y-m') . '-10'); // paid on 10th
$fromAccount = $this->findAccount('MyBank Checking Account');
$toAccount = $this->findAccount('Shell');
$category = Category::firstOrCreateEncrypted(['name' => 'Car', 'user_id' => $this->user->id]);
$budget = Budget::firstOrCreateEncrypted(['name' => 'Car', 'user_id' => $this->user->id]);
$amount = rand(4000, 5000) / 100;
$journal = TransactionJournal::create(
[
'user_id' => $this->user->id,
'transaction_type_id' => 1,
'transaction_currency_id' => 1,
'description' => 'Bought gas',
'completed' => 1,
'date' => $date,
]
);
Transaction::create(
[
'account_id' => $fromAccount->id,
'transaction_journal_id' => $journal->id,
'amount' => $amount * -1,
]
);
Transaction::create(
[
'account_id' => $toAccount->id,
'transaction_journal_id' => $journal->id,
'amount' => $amount,
]
);
$journal->categories()->save($category);
$journal->budgets()->save($budget);
// and again!
$date = new Carbon($date->format('Y-m') . '-20'); // paid on 20th
$amount = rand(4000, 5000) / 100;
$journal = TransactionJournal::create(
[
'user_id' => $this->user->id,
'transaction_type_id' => 1,
'transaction_currency_id' => 1,
'description' => 'Gas for car',
'completed' => 1,
'date' => $date,
]
);
Transaction::create(
[
'account_id' => $fromAccount->id,
'transaction_journal_id' => $journal->id,
'amount' => $amount * -1,
]
);
Transaction::create(
[
'account_id' => $toAccount->id,
'transaction_journal_id' => $journal->id,
'amount' => $amount,
]
);
// and again!
return $journal;
}
protected function createPreferences()
{
$preference = new Preference;
$preference->name = 'frontPageAccounts';
$preference->data = [1];
$preference->user()->associate($this->user);
$preference->save();
}
} }