From 7cb22d5d2570f21afe33a6bad01274a84b5d3c13 Mon Sep 17 00:00:00 2001 From: EnesSacid-Buker Date: Fri, 16 Dec 2022 10:26:41 +0300 Subject: [PATCH] Transfer test refactored --- database/factories/Transfer.php | 47 ++++++------------------- tests/Feature/Banking/TransfersTest.php | 47 ++++++++++--------------- 2 files changed, 29 insertions(+), 65 deletions(-) diff --git a/database/factories/Transfer.php b/database/factories/Transfer.php index fce6ce92c..233bdb73c 100644 --- a/database/factories/Transfer.php +++ b/database/factories/Transfer.php @@ -4,15 +4,10 @@ namespace Database\Factories; use App\Abstracts\Factory; use App\Models\Banking\Account; -use App\Models\Banking\Transaction; use App\Models\Banking\Transfer as Model; -use App\Models\Setting\Category; -use App\Traits\Categories; class Transfer extends Factory { - use Categories; - /** * The name of the factory's corresponding model. * @@ -27,42 +22,20 @@ class Transfer extends Factory */ public function definition() { - $accounts = Account::enabled()->get(); + $from_account = Account::factory()->enabled()->default_currency()->create(); - if ($accounts->count() >= 2) { - $random = $accounts->random(2); - - $expense_account = $random->first(); - $income_account = $random->last(); - } else { - $expense_account = $accounts->first(); - - $income_account = Account::factory()->enabled()->default_currency()->create(); - } - - $request = [ - 'amount' => $this->faker->randomFloat(2, 1, 1000), - 'paid_at' => $this->faker->dateTimeBetween(now()->startOfYear(), now()->endOfYear())->format('Y-m-d'), - 'category_id' => $this->getTransferCategoryId(), - 'description' => $this->faker->text(20), - 'reference' => $this->faker->text(20), - 'created_from' => 'core::factory', - ]; - - $expense_transaction = Transaction::factory()->create(array_merge($request, [ - 'type' => Transaction::EXPENSE_TRANSFER_TYPE, - 'account_id' => $expense_account->id, - ])); - - $income_transaction = Transaction::factory()->create(array_merge($request, [ - 'type' => Transaction::INCOME_TRANSFER_TYPE, - 'account_id' => $income_account->id, - ])); + $to_account = Account::factory()->enabled()->default_currency()->create(); return [ 'company_id' => $this->company->id, - 'expense_transaction_id' => $expense_transaction->id, - 'income_transaction_id' => $income_transaction->id, + 'from_account_id' => $from_account->id, + 'to_account_id' => $to_account->id, + 'amount' => $this->faker->randomFloat(2, 1, 1000), + 'transferred_at' => $this->faker->date(), + 'description'=> $this->faker->text(20), + 'payment_method' => setting('default.payment_method'), + 'reference' => $this->faker->text(20), + 'created_from' => 'core::factory', ]; } } diff --git a/tests/Feature/Banking/TransfersTest.php b/tests/Feature/Banking/TransfersTest.php index 2276e7fa4..8a429bb8c 100644 --- a/tests/Feature/Banking/TransfersTest.php +++ b/tests/Feature/Banking/TransfersTest.php @@ -4,10 +4,10 @@ namespace Tests\Feature\Banking; use App\Exports\Banking\Transfers as Export; use App\Jobs\Banking\CreateTransfer; -use App\Models\Banking\Account; use App\Models\Banking\Transfer; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\File; +use Maatwebsite\Excel\Facades\Excel; use Tests\Feature\FeatureTestCase; class TransfersTest extends FeatureTestCase @@ -76,18 +76,20 @@ class TransfersTest extends FeatureTestCase public function testItShouldExportTransfers() { $count = 5; - Transfer::factory()->count($count)->create(); + foreach (Transfer::factory()->count($count)->raw() as $request) { + $this->dispatch(new CreateTransfer($request)); + } - \Excel::fake(); + Excel::fake(); $this->loginAs() ->get(route('transfers.export')) ->assertStatus(200); - \Excel::matchByRegex(); + Excel::matchByRegex(); - \Excel::assertDownloaded( - '/' . \Str::filename(trans_choice('general.transfers', 2)) . '-\d{10}\.xlsx/', + Excel::assertDownloaded( + '/' . str()->filename(trans_choice('general.transfers', 2)) . '-\d{10}\.xlsx/', function (Export $export) use ($count) { // Assert that the correct export is downloaded. return $export->collection()->count() === $count; @@ -100,21 +102,23 @@ class TransfersTest extends FeatureTestCase $create_count = 5; $select_count = 3; - $transfers = Transfer::factory()->count($create_count)->create(); + foreach (Transfer::factory()->count($create_count)->raw() as $request) { + $responses[] = $this->dispatch(new CreateTransfer($request)); + } - \Excel::fake(); + Excel::fake(); $this->loginAs() ->post( route('bulk-actions.action', ['group' => 'banking', 'type' => 'transfers']), - ['handle' => 'export', 'selected' => $transfers->take($select_count)->pluck('id')->toArray()] + ['handle' => 'export', 'selected' => collect($responses)->take($select_count)->pluck('id')->toArray()] ) ->assertStatus(200); - \Excel::matchByRegex(); + Excel::matchByRegex(); - \Excel::assertDownloaded( - '/' . \Str::filename(trans_choice('general.transfers', 2)) . '-\d{10}\.xlsx/', + Excel::assertDownloaded( + '/' . str()->filename(trans_choice('general.transfers', 2)) . '-\d{10}\.xlsx/', function (Export $export) use ($select_count) { return $export->collection()->count() === $select_count; } @@ -123,7 +127,7 @@ class TransfersTest extends FeatureTestCase public function testItShouldImportTransfers() { - \Excel::fake(); + Excel::fake(); $this->loginAs() ->post( @@ -137,26 +141,13 @@ class TransfersTest extends FeatureTestCase ) ->assertStatus(200); - \Excel::assertImported('transfers.xlsx'); + Excel::assertImported('transfers.xlsx'); $this->assertFlashLevel('success'); } public function getRequest() { - $from_account = Account::factory()->enabled()->default_currency()->create(); - - $to_account = Account::factory()->enabled()->default_currency()->create(); - - return [ - 'company_id' => $this->company->id, - 'from_account_id' => $from_account->id, - 'to_account_id' => $to_account->id, - 'amount' => $this->faker->randomFloat(2, 1, 1000), - 'transferred_at' => $this->faker->date(), - 'description'=> $this->faker->text(20), - 'payment_method' => setting('default.payment_method'), - 'reference' => $this->faker->text(20), - ]; + return Transfer::factory()->raw(); } }