From 2cdc431f8c7f2ad64f3025949f77b4cf1cdb850a Mon Sep 17 00:00:00 2001 From: denisdulici Date: Mon, 18 Nov 2019 10:54:26 +0300 Subject: [PATCH] fixed tests --- .gitignore | 1 + app/Jobs/Banking/CreateReconciliation.php | 2 +- database/factories/ItemFacorty.php | 26 -------- database/factories/ItemFactory.php | 21 +++++++ database/factories/TransactionFactory.php | 28 +++++++++ database/seeds/TestCompany.php | 42 +++++-------- tests/Feature/Auth/UsersTest.php | 2 +- tests/Feature/Banking/AccountsTest.php | 13 ++-- tests/Feature/Banking/ReconciliationsTest.php | 1 - tests/Feature/Banking/TransfersTest.php | 62 +++++-------------- tests/Feature/Commands/BillReminderTest.php | 31 +++++----- .../Feature/Commands/InvoiceReminderTest.php | 26 ++++---- tests/Feature/Common/ItemsTest.php | 2 +- tests/Feature/Expenses/BillsTest.php | 2 +- tests/Feature/FeatureTestCase.php | 5 -- tests/Feature/Incomes/CustomersTest.php | 11 ---- tests/Feature/Incomes/InvoicesTest.php | 2 +- 17 files changed, 123 insertions(+), 154 deletions(-) delete mode 100644 database/factories/ItemFacorty.php create mode 100644 database/factories/ItemFactory.php create mode 100644 database/factories/TransactionFactory.php diff --git a/.gitignore b/.gitignore index c54e5c59f..455ec1f8c 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ robots.txt _ide_helper.php .phpstorm.meta.php /storage/debugbar/* +.phpunit.result.cache diff --git a/app/Jobs/Banking/CreateReconciliation.php b/app/Jobs/Banking/CreateReconciliation.php index 71ab300bd..58565abee 100644 --- a/app/Jobs/Banking/CreateReconciliation.php +++ b/app/Jobs/Banking/CreateReconciliation.php @@ -30,7 +30,7 @@ class CreateReconciliation extends Job $transactions = $this->request->get('transactions'); $reconciliation = Reconciliation::create([ - 'company_id' => session('company_id'), + 'company_id' => $this->request['company_id'], 'account_id' => $this->request->get('account_id'), 'started_at' => $this->request->get('started_at'), 'ended_at' => $this->request->get('ended_at'), diff --git a/database/factories/ItemFacorty.php b/database/factories/ItemFacorty.php deleted file mode 100644 index 26664ae75..000000000 --- a/database/factories/ItemFacorty.php +++ /dev/null @@ -1,26 +0,0 @@ -define(Item::class, function (Generator $faker) { - /** @var User $user */ - $user = User::first(); - /** @var Company $company */ - $company = $user->companies()->first(); - - return [ - 'name' => $faker->title, - 'company_id' => $company->id, - 'description' => $faker->text(100), - 'purchase_price' => $faker->randomFloat(2,10,20), - 'sale_price' => $faker->randomFloat(2,10,20), - 'category_id' => $company->categories()->first()->id, - 'tax_id' => $company->taxes()->first()->id, - 'enabled' => $this->faker->boolean ? 1 : 0 - ]; -}); diff --git a/database/factories/ItemFactory.php b/database/factories/ItemFactory.php new file mode 100644 index 000000000..5e5df7147 --- /dev/null +++ b/database/factories/ItemFactory.php @@ -0,0 +1,21 @@ +define(Item::class, function (Faker $faker) { + $user = User::first(); + $company = $user->companies()->first(); + + return [ + 'company_id' => $company->id, + 'name' => $faker->text(15), + 'description' => $faker->text(100), + 'purchase_price' => $faker->randomFloat(2, 10, 20), + 'sale_price' => $faker->randomFloat(2, 10, 20), + 'category_id' => $company->categories()->type('item')->pluck('id')->first(), + 'tax_id' => '', + 'enabled' => $faker->boolean ? 1 : 0 + ]; +}); diff --git a/database/factories/TransactionFactory.php b/database/factories/TransactionFactory.php new file mode 100644 index 000000000..3584e41a1 --- /dev/null +++ b/database/factories/TransactionFactory.php @@ -0,0 +1,28 @@ +define(Transaction::class, function (Faker $faker) { + $user = User::first(); + $company = $user->companies()->first(); + + $attachment = UploadedFile::fake()->create('image.jpg'); + + return [ + 'company_id' => $company->id, + 'type' => 'income', + 'account_id' => setting('default.account'), + 'paid_at' => $faker->date(), + 'amount' => $faker->randomFloat(2, 2), + 'currency_code' => setting('default.currency'), + 'currency_rate' => '1', + 'description' => $faker->text(5), + 'category_id' => $company->categories()->type('income')->first()->id, + 'reference' => $faker->text(5), + 'payment_method' => setting('default.payment_method'), + 'attachment' => $attachment, + ]; +}); diff --git a/database/seeds/TestCompany.php b/database/seeds/TestCompany.php index 42ccadedf..711708608 100644 --- a/database/seeds/TestCompany.php +++ b/database/seeds/TestCompany.php @@ -3,14 +3,15 @@ namespace Database\Seeds; use App\Abstracts\Model; -use App\Models\Auth\User; +use App\Jobs\Auth\CreateUser; use App\Models\Common\Company; -use Artisan; -use Date; +use App\Traits\Jobs; use Illuminate\Database\Seeder; class TestCompany extends Seeder { + use Jobs; + /** * Run the database seeds. * @@ -37,8 +38,8 @@ class TestCompany extends Seeder setting()->setExtraColumns(['company_id' => '1']); setting()->set([ - 'company.name' => 'Test Inc.', - 'company.email' => 'info@test.com', + 'company.name' => 'Test Company', + 'company.email' => 'test@company.com', 'company.address' => 'New Street 1254', 'localisation.financial_start' => '01-01', 'default.currency' => 'USD', @@ -46,8 +47,8 @@ class TestCompany extends Seeder 'default.payment_method' => 'offline-payments.cash.1', 'schedule.bill_days' => '10,5,3,1', 'schedule.invoice_days' => '1,3,5,10', - 'schedule.send_invoice_reminder' => '0', - 'schedule.send_bill_reminder' => '0', + 'schedule.send_invoice_reminder' => '1', + 'schedule.send_bill_reminder' => '1', 'wizard.completed' => '1', 'contact.type.customer' => 'customer', 'contact.type.vendor' => 'vendor', @@ -59,25 +60,16 @@ class TestCompany extends Seeder public function createUser() { - // Create user - $user = User::create([ - 'name' => 'Admin', - 'email' => 'admin@akaunting.com', + $this->dispatch(new CreateUser([ + 'name' => 'Test', + 'email' => 'test@company.com', 'password' => '123456', - 'last_logged_in_at' => Date::now(), - ]); + 'locale' => 'en-GB', + 'companies' => ['1'], + 'roles' => ['1'], + 'enabled' => '1', + ])); - // Attach Role - $user->roles()->attach(1); - - // Attach company - $user->companies()->attach(1); - - Artisan::call('user:seed', [ - 'user' => $user->id, - 'company' => 1, - ]); - - $this->command->info('Admin user created.'); + $this->command->info('Test user created.'); } } diff --git a/tests/Feature/Auth/UsersTest.php b/tests/Feature/Auth/UsersTest.php index 4cc72d5e3..a4b2ccf9e 100644 --- a/tests/Feature/Auth/UsersTest.php +++ b/tests/Feature/Auth/UsersTest.php @@ -119,7 +119,7 @@ class UsersTest extends FeatureTestCase 'password_confirmation' => $password, 'locale' => 'en-GB', 'companies' => [$this->company->id], - 'roles' => Role::take(1)->pluck('id')->toArray(), + 'roles' => ['1'], 'enabled' => $this->faker->boolean ? 1 : 0, ]; } diff --git a/tests/Feature/Banking/AccountsTest.php b/tests/Feature/Banking/AccountsTest.php index f3101b69a..8d57517d7 100644 --- a/tests/Feature/Banking/AccountsTest.php +++ b/tests/Feature/Banking/AccountsTest.php @@ -3,7 +3,6 @@ namespace Tests\Feature\Banking; use App\Jobs\Banking\CreateAccount; -use App\Models\Banking\Account; use Tests\Feature\FeatureTestCase; class AccountsTest extends FeatureTestCase @@ -47,7 +46,7 @@ class AccountsTest extends FeatureTestCase { $request = $this->getAccountRequest(); - $account= Account::create($request); + $account = $this->dispatch(new CreateAccount($request)); $request['name'] = $this->faker->text(5); @@ -60,7 +59,7 @@ class AccountsTest extends FeatureTestCase public function testItShouldDeleteAccount() { - $account = Account::create($this->getAccountRequest()); + $account = $this->dispatch(new CreateAccount($this->getAccountRequest())); $this->loginAs() ->delete(route('accounts.destroy', ['account' => $account])) @@ -74,13 +73,13 @@ class AccountsTest extends FeatureTestCase return [ 'company_id' => $this->company->id, 'name' => $this->faker->text(5), - 'number' => '1', - 'currency_code' => setting('default.currency'), - 'opening_balance' => 0, + 'number' => (string) $this->faker->randomNumber(2), + 'currency_code' => setting('default.currency', 'USD'), + 'opening_balance' => '0', 'bank_name' => $this->faker->text(5), 'bank_phone' => null, 'bank_address' => null, - 'default_account' => $this->faker->randomElement(['yes', 'no']), + 'default_account' => 0, 'enabled' => $this->faker->boolean ? 1 : 0, ]; } diff --git a/tests/Feature/Banking/ReconciliationsTest.php b/tests/Feature/Banking/ReconciliationsTest.php index 9a04af07c..2f2f0e17c 100644 --- a/tests/Feature/Banking/ReconciliationsTest.php +++ b/tests/Feature/Banking/ReconciliationsTest.php @@ -68,7 +68,6 @@ class ReconciliationsTest extends FeatureTestCase $this->assertFlashLevel('success'); } - private function getReconciliationRequest() { return [ diff --git a/tests/Feature/Banking/TransfersTest.php b/tests/Feature/Banking/TransfersTest.php index 33ea156e7..22c4aab5b 100644 --- a/tests/Feature/Banking/TransfersTest.php +++ b/tests/Feature/Banking/TransfersTest.php @@ -3,7 +3,7 @@ namespace Tests\Feature\Banking; use App\Jobs\Banking\CreateTransaction; -use App\Jobs\Banking\CreateTransfer; +use App\Models\Banking\Transfer; use Illuminate\Http\UploadedFile; use Tests\Feature\FeatureTestCase; @@ -27,11 +27,9 @@ class TransfersTest extends FeatureTestCase public function testItShouldCreateTransfer() { - // Create income - $income_transaction = $this->dispatch(new CreateTransaction($this->getIncomeRequest())); + $income_transaction = $this->dispatch(new CreateTransaction($this->getTransactionRequest('income'))); - // Create expense - $expense_transaction = $this->dispatch(new CreateTransaction($this->getExpenseRequest())); + $expense_transaction = $this->dispatch(new CreateTransaction($this->getTransactionRequest('expense'))); $this->loginAs() ->post(route('transfers.store'), $this->getTransferRequest($income_transaction, $expense_transaction)) @@ -42,31 +40,27 @@ class TransfersTest extends FeatureTestCase public function testItShouldSeeTransferUpdatePage() { - // Create income - $income_transaction = $this->dispatch(new CreateTransaction($this->getIncomeRequest())); + $income_transaction = $this->dispatch(new CreateTransaction($this->getTransactionRequest('income'))); - // Create expense - $expense_transaction = $this->dispatch(new CreateTransaction($this->getExpenseRequest())); + $expense_transaction = $this->dispatch(new CreateTransaction($this->getTransactionRequest('expense'))); - $transfer = $this->dispatch(new CreateTransfer($this->getTransferRequest($income_transaction, $expense_transaction))); + $transfer = Transfer::create($this->getTransferRequest($income_transaction, $expense_transaction)); $this->loginAs() ->get(route('transfers.edit', ['transfer' => $transfer->id])) ->assertStatus(200) - ->assertSee($expense_transaction->description); + ->assertSee($transfer->description); } public function testItShouldUpdateTransfer() { - // Create income - $income_transaction = $this->dispatch(new CreateTransaction($this->getIncomeRequest())); + $income_transaction = $this->dispatch(new CreateTransaction($this->getTransactionRequest('income'))); - // Create expense - $expense_transaction = $this->dispatch(new CreateTransaction($this->getExpenseRequest())); + $expense_transaction = $this->dispatch(new CreateTransaction($this->getTransactionRequest('expense'))); $request = $this->getTransferRequest($income_transaction, $expense_transaction); - $transfer = $this->dispatch(new CreateTransfer($request)); + $transfer = Transfer::create($request); $request['description'] = $this->faker->text(10); @@ -79,13 +73,11 @@ class TransfersTest extends FeatureTestCase public function testItShouldDeleteTransfer() { - // Create income - $income_transaction = $this->dispatch(new CreateTransaction($this->getIncomeRequest())); + $income_transaction = $this->dispatch(new CreateTransaction($this->getTransactionRequest('income'))); - // Create expense - $expense_transaction = $this->dispatch(new CreateTransaction($this->getExpenseRequest())); + $expense_transaction = $this->dispatch(new CreateTransaction($this->getTransactionRequest('expense'))); - $transfer = $this->dispatch(new CreateTransfer($this->getTransferRequest($income_transaction, $expense_transaction))); + $transfer = Transfer::create($this->getTransferRequest($income_transaction, $expense_transaction)); $this->loginAs() ->delete(route('transfers.destroy', ['transfer' => $transfer->id])) @@ -112,43 +104,23 @@ class TransfersTest extends FeatureTestCase ]; } - private function getIncomeRequest() + private function getTransactionRequest($type) { $attachment = UploadedFile::fake()->create('image.jpg'); return [ 'company_id' => $this->company->id, - 'type' => 'income', + 'type' => $type, 'account_id' => setting('default.account'), 'paid_at' => $this->faker->date(), 'amount' => $this->faker->randomFloat(2, 2), 'currency_code' => setting('default.currency'), 'currency_rate' => '1', 'description' => $this->faker->text(5), - 'category_id' => $this->company->categories()->type('income')->first()->id, + 'category_id' => $this->company->categories()->type($type)->first()->id, 'reference' => $this->faker->text(5), 'payment_method' => setting('default.payment_method'), - 'attachment' => $attachment - ]; - } - - private function getExpenseRequest() - { - $attachment = UploadedFile::fake()->create('image.jpg'); - - return [ - 'company_id' => $this->company->id, - 'type' => 'expense', - 'account_id' => setting('default.account'), - 'paid_at' => $this->faker->date(), - 'amount' => $this->faker->randomFloat(2, 2), - 'currency_code' => setting('default.currency'), - 'currency_rate' => '1', - 'description' => $this->faker->text(5), - 'category_id' => $this->company->categories()->type('expense')->first()->id, - 'payment_method' => setting('default.payment_method'), - 'reference' => $this->faker->text(5), - 'attachment' => $attachment + 'attachment' => $attachment, ]; } } diff --git a/tests/Feature/Commands/BillReminderTest.php b/tests/Feature/Commands/BillReminderTest.php index 92abd2613..2c521c52c 100644 --- a/tests/Feature/Commands/BillReminderTest.php +++ b/tests/Feature/Commands/BillReminderTest.php @@ -4,19 +4,19 @@ namespace Tests\Feature\Commands; use App\Jobs\Expense\CreateBill; use App\Notifications\Expense\Bill as BillNotification; -use Illuminate\Support\Facades\Notification; +use Illuminate\Support\Facades\Notification as Notification; use Jenssegers\Date\Date; use Tests\Feature\FeatureTestCase; class BillReminderTest extends FeatureTestCase { - private $addDay; + private $add_days; protected function setUp(): void { parent::setUp(); - $this->addDay = 3; + $this->add_days = 3; } public function testBillReminderByDueDate() @@ -25,7 +25,7 @@ class BillReminderTest extends FeatureTestCase $bill = $this->dispatch(new CreateBill($this->getBillRequest())); - Date::setTestNow(Date::now()->subDays($this->addDay)); + Date::setTestNow(Date::now()->subDays($this->add_days)); $this->artisan('reminder:bill'); @@ -41,7 +41,6 @@ class BillReminderTest extends FeatureTestCase /** * Bill request * - * @param int $recurring * @return array */ private function getBillRequest() @@ -50,27 +49,27 @@ class BillReminderTest extends FeatureTestCase $items = [['name' => $this->faker->text(5), 'item_id' => null, 'quantity' => '1', 'price' => $amount, 'currency' => 'USD']]; - $data = [ - 'contact_id' => '0', + $data = [ + 'company_id' => $this->company->id, 'billed_at' => $this->faker->date(), - 'due_at' => Date::now()->subDays($this->addDay - 1), + 'due_at' => Date::now()->subDays($this->add_days - 1), 'bill_number' => '1', 'order_number' => '1', - 'currency_code' => setting('default.currency'), + 'currency_code' => setting('default.currency', 'USD'), 'currency_rate' => '1', 'items' => $items, 'discount' => '0', 'notes' => $this->faker->text(5), - 'category_id' => $this->company->categories()->type('income')->first()->id, + 'category_id' => $this->company->categories()->type('expense')->pluck('id')->first(), 'recurring_frequency' => 'no', - 'contact_name' => $this->faker->name, - 'contact_email' => $this->faker->email, + 'contact_id' => '0', + 'contact_name' => $this->faker->name, + 'contact_email' =>$this->faker->email, 'contact_tax_number' => null, - 'contact_phone' => null, - 'contact_address' => $this->faker->address, - 'bill_status_code' => 'sent', + 'contact_phone' => null, + 'contact_address' => $this->faker->address, + 'bill_status_code' => 'received', 'amount' => $amount, - 'company_id' => $this->company->id, ]; return $data; diff --git a/tests/Feature/Commands/InvoiceReminderTest.php b/tests/Feature/Commands/InvoiceReminderTest.php index 8a0e8fa0c..c47982a73 100644 --- a/tests/Feature/Commands/InvoiceReminderTest.php +++ b/tests/Feature/Commands/InvoiceReminderTest.php @@ -10,13 +10,13 @@ use Tests\Feature\FeatureTestCase; class InvoiceReminderTest extends FeatureTestCase { - private $addDay; + private $add_days; protected function setUp(): void { parent::setUp(); - $this->addDay = 3; + $this->add_days = 3; } public function testInvoiceReminderByDueDate() @@ -25,7 +25,7 @@ class InvoiceReminderTest extends FeatureTestCase $invoice = $this->dispatch(new CreateInvoice($this->getInvoiceRequest())); - Date::setTestNow(Date::now()->addDay($this->addDay)); + Date::setTestNow(Date::now()->addDay($this->add_days)); $this->artisan('reminder:invoice'); @@ -50,26 +50,26 @@ class InvoiceReminderTest extends FeatureTestCase $items = [['name' => $this->faker->text(5), 'item_id' => null, 'quantity' => '1', 'price' => $amount, 'currency' => 'USD']]; $data = [ - 'contact_id' => '0', + 'company_id' => $this->company->id, 'invoiced_at' => $this->faker->date(), - 'due_at' => Date::now()->addDay($this->addDay - 1), + 'due_at' => Date::now()->subDays($this->add_days - 1), 'invoice_number' => '1', - 'order_number' => '1', - 'currency_code' => setting('default.currency'), + 'order_number' => '1', + 'currency_code' => setting('default.currency', 'USD'), 'currency_rate' => '1', 'items' => $items, 'discount' => '0', 'notes' => $this->faker->text(5), - 'category_id' => $this->company->categories()->type('income')->first()->id, + 'category_id' => $this->company->categories()->type('income')->pluck('id')->first(), 'recurring_frequency' => 'no', - 'contact_name' => $this->faker->name, - 'contact_email' => $this->faker->email, + 'contact_id' => '0', + 'contact_name' => $this->faker->name, + 'contact_email' =>$this->faker->email, 'contact_tax_number' => null, - 'contact_phone' => null, - 'contact_address' => $this->faker->address, + 'contact_phone' => null, + 'contact_address' => $this->faker->address, 'invoice_status_code' => 'sent', 'amount' => $amount, - 'company_id' => $this->company->id, ]; return $data; diff --git a/tests/Feature/Common/ItemsTest.php b/tests/Feature/Common/ItemsTest.php index 92bcd57af..1f500eb26 100644 --- a/tests/Feature/Common/ItemsTest.php +++ b/tests/Feature/Common/ItemsTest.php @@ -49,7 +49,7 @@ class ItemsTest extends FeatureTestCase $item = $this->dispatch(new CreateItem($request)); - $request['name'] = $this->faker->text(15); + $request['name'] = $this->faker->text(15); $this->loginAs() ->patch(route('items.update', $item->id), $request) diff --git a/tests/Feature/Expenses/BillsTest.php b/tests/Feature/Expenses/BillsTest.php index 381011710..d5f96852f 100644 --- a/tests/Feature/Expenses/BillsTest.php +++ b/tests/Feature/Expenses/BillsTest.php @@ -90,7 +90,7 @@ class BillsTest extends FeatureTestCase 'due_at' => $this->faker->date(), 'bill_number' => '1', 'order_number' => '1', - 'currency_code' => setting('default.currency'), + 'currency_code' => setting('default.currency', 'USD'), 'currency_rate' => '1', 'items' => $items, 'discount' => '0', diff --git a/tests/Feature/FeatureTestCase.php b/tests/Feature/FeatureTestCase.php index 81d877f65..f008c8884 100644 --- a/tests/Feature/FeatureTestCase.php +++ b/tests/Feature/FeatureTestCase.php @@ -9,15 +9,10 @@ use Tests\TestCase; abstract class FeatureTestCase extends TestCase { - /** - * @var \Faker\Generator - */ protected $faker; - /** @var User */ protected $user; - /** @var Company */ protected $company; protected function setUp(): void diff --git a/tests/Feature/Incomes/CustomersTest.php b/tests/Feature/Incomes/CustomersTest.php index 5fb2098bb..13e35dc41 100644 --- a/tests/Feature/Incomes/CustomersTest.php +++ b/tests/Feature/Incomes/CustomersTest.php @@ -49,17 +49,6 @@ class CustomersTest extends FeatureTestCase $this->assertEquals($customer['email'], $user->email); } - public function testItShouldNotCreateCustomerWithExistsUser() - { - $customer = $this->getCustomerRequestWithUser(); - - User::create($customer); - - $this->loginAs() - ->post(route('customers.store'), $customer) - ->assertSessionHasErrors(['email']); - } - public function testItShouldSeeCustomerDetailPage() { $customer = $this->dispatch(new CreateContact($this->getCustomerRequest())); diff --git a/tests/Feature/Incomes/InvoicesTest.php b/tests/Feature/Incomes/InvoicesTest.php index 12718cd74..5f76625ff 100644 --- a/tests/Feature/Incomes/InvoicesTest.php +++ b/tests/Feature/Incomes/InvoicesTest.php @@ -90,7 +90,7 @@ class InvoicesTest extends FeatureTestCase 'due_at' => $this->faker->date(), 'invoice_number' => '1', 'order_number' => '1', - 'currency_code' => setting('default.currency'), + 'currency_code' => setting('default.currency', 'USD'), 'currency_rate' => '1', 'items' => $items, 'discount' => '0',