From 3d72265cfd188a4eaa1012822179a82bc7b1dd3c Mon Sep 17 00:00:00 2001 From: denisdulici Date: Tue, 14 Jan 2020 01:05:32 +0300 Subject: [PATCH] transfer factory --- database/factories/Account.php | 16 ++++++-- database/factories/Transfer.php | 53 +++++++++++++++++++++++++ tests/Feature/Banking/AccountsTest.php | 2 +- tests/Feature/Banking/TransfersTest.php | 8 ++-- 4 files changed, 70 insertions(+), 9 deletions(-) create mode 100644 database/factories/Transfer.php diff --git a/database/factories/Account.php b/database/factories/Account.php index 82247a3d8..571f5e460 100644 --- a/database/factories/Account.php +++ b/database/factories/Account.php @@ -8,15 +8,16 @@ $user = User::first(); $company = $user->companies()->first(); $factory->define(Account::class, function (Faker $faker) use ($company) { + session(['company_id' => $company->id]); setting()->setExtraColumns(['company_id' => $company->id]); return [ 'company_id' => $company->id, - 'name' => $faker->text(5), - 'number' => (string) $faker->randomNumber(2), + 'name' => $faker->text(15), + 'number' => (string) $faker->iban(), 'currency_code' => $company->currencies()->enabled()->get()->random(1)->pluck('code')->first(), 'opening_balance' => '0', - 'bank_name' => $faker->text(5), + 'bank_name' => $faker->text(15), 'bank_phone' => $faker->phoneNumber, 'bank_address' => $faker->address, 'enabled' => $faker->boolean ? 1 : 0, @@ -27,4 +28,11 @@ $factory->state(Account::class, 'enabled', ['enabled' => 1]); $factory->state(Account::class, 'disabled', ['enabled' => 0]); -$factory->state(Account::class, 'default_currency', ['currency_code' => setting('default.currency')]); +$factory->state(Account::class, 'default_currency', function (Faker $faker) use ($company) { + session(['company_id' => $company->id]); + setting()->setExtraColumns(['company_id' => $company->id]); + + return [ + 'currency_code' => setting('default.currency'), + ]; +}); diff --git a/database/factories/Transfer.php b/database/factories/Transfer.php new file mode 100644 index 000000000..abd361202 --- /dev/null +++ b/database/factories/Transfer.php @@ -0,0 +1,53 @@ +companies()->first(); + +$factory->define(Transfer::class, function (Faker $faker) use ($company) { + session(['company_id' => $company->id]); + setting()->setExtraColumns(['company_id' => $company->id]); + + $accounts = Account::enabled()->get(); + + if ($accounts->count() >= 2) { + $random = $accounts->random(2); + + $expense_account = $random->first(); + $income_account = $random->last(); + } else { + $expense_account = $accounts->first(); + + $income_account = factory(Account::class)->states('enabled', 'default_currency')->create(); + } + + $request = [ + 'amount' => $faker->randomFloat(2, 1, 1000), + 'paid_at' => $faker->dateTimeBetween(now()->startOfYear(), now()->endOfYear())->format('Y-m-d'), + 'category_id' => Category::transfer(), + 'description' => $faker->text(20), + 'reference' => $faker->text(20), + ]; + + $expense_transaction = factory(Transaction::class)->create(array_merge($request, [ + 'type' => 'expense', + 'account_id' => $expense_account->id, + ])); + + $income_transaction = factory(Transaction::class)->create(array_merge($request, [ + 'type' => 'income', + 'account_id' => $income_account->id, + ])); + + return [ + 'company_id' => $company->id, + 'expense_transaction_id' => $expense_transaction->id, + 'income_transaction_id' => $income_transaction->id, + ]; +}); diff --git a/tests/Feature/Banking/AccountsTest.php b/tests/Feature/Banking/AccountsTest.php index fa2ea65c6..67c2cc965 100644 --- a/tests/Feature/Banking/AccountsTest.php +++ b/tests/Feature/Banking/AccountsTest.php @@ -49,7 +49,7 @@ class AccountsTest extends FeatureTestCase $account = $this->dispatch(new CreateAccount($request)); - $request['name'] = $this->faker->text(5); + $request['name'] = $this->faker->text(10); $this->loginAs() ->patch(route('accounts.update', $account->id), $request) diff --git a/tests/Feature/Banking/TransfersTest.php b/tests/Feature/Banking/TransfersTest.php index 4e5c3c0ba..ba3b31d00 100644 --- a/tests/Feature/Banking/TransfersTest.php +++ b/tests/Feature/Banking/TransfersTest.php @@ -49,7 +49,7 @@ class TransfersTest extends FeatureTestCase $transfer = $this->dispatch(new CreateTransfer($request)); - $request['description'] = $this->faker->text(10); + $request['description'] = $this->faker->text(15); $this->loginAs() ->patch(route('transfers.update', $transfer->id), $request) @@ -79,11 +79,11 @@ class TransfersTest extends FeatureTestCase 'company_id' => $this->company->id, 'from_account_id' => $from_account->id, 'to_account_id' => $to_account->id, - 'amount' => $this->faker->randomFloat(2, 2, 1000), + 'amount' => $this->faker->randomFloat(2, 1, 1000), 'transferred_at' => $this->faker->date(), - 'description'=> $this->faker->text(5), + 'description'=> $this->faker->text(20), 'payment_method' => setting('default.payment_method'), - 'reference' => $this->faker->text(5), + 'reference' => $this->faker->text(20), ]; } }