HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.shooperm.com/tests/Browser/Modules/Account/ExpenseTest.php
<?php

namespace Tests\Browser\Modules\Account;

use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Support\Facades\File;
use Laravel\Dusk\Browser;
use Modules\Account\Entities\BankAccount;
use Modules\Account\Entities\ChartOfAccount;
use Modules\Account\Entities\Transaction;
use Tests\DuskTestCase;

class ExpenseTest extends DuskTestCase
{
    use WithFaker;

    protected $chart_of_accounts = [];

    public function setUp(): void
    {
        parent::setUp();

        

        $this->chart_of_accounts[] = ChartOfAccount::create([
            'code' => 'Expense-1',
            'type' => 'Expense',
            'default_for' => 'Expense',
            'name' => 'Amaz Cart Expense',
            'opening_balance' => 0,
            'description' => null,
            'level' => 0,
            'status' => 1,
            'created_by' => 1
        ]);

        BankAccount::create([
            'bank_name' => 'Dutch Bangla',
            'branch_name' => 'Savar',
            'account_name' => 'Amazcart',
            'account_number' => '216532356',
            'opening_balance' => 0,
            'status' => 1,
            'created_by' => 1
        ]);
            

    }

    public function tearDown(): void
    {

        $charts = ChartOfAccount::pluck('id');
        ChartOfAccount::destroy($charts);

        $accounts = BankAccount::pluck('id');
        BankAccount::destroy($accounts);

        $transactions = Transaction::all();
        foreach($transactions as $trans){
            if(File::exists(public_path($trans->file))){
                File::delete(public_path($trans->file));
            }
            $trans->delete();
        }

        parent::tearDown(); // TODO: Change the autogenerated stub
    }

    /**
     * A Dusk test example.
     *
     * @return void
     */
    public function test_1_for_visit_index_page()
    {
        $this->browse(function (Browser $browser) {
            $browser->loginAs(1)
                ->visit('/account/expenses')
                ->assertSee('Expense');
        });
    }

    public function test_2_for_with_cash_create_expanse(){
        $this->test_1_for_visit_index_page();
        $this->browse(function (Browser $browser) {
            $browser->click('#main-content > section > div > div > div.col-12 > div > div > ul > li > a')
                ->whenAvailable('#expense_modal > div', function($modal){
                    $modal->pause(2000)
                        ->type('#title', 'test-expanse-one')
                        ->click('#expense_form > div > div > div:nth-child(2) > div > div > span')
                        ->click('#expense_form > div > div > div:nth-child(2) > div > div > ul > li:nth-child(2)')
                        ->click('#expense_form > div > div > div:nth-child(3) > div > div')
                        ->click('#expense_form > div > div > div:nth-child(3) > div > div > ul > li:nth-child(1)')
                        ->type('#amount', '20')
                        ->attach('#file', __DIR__.'/files/favicon.png')
                        ->click('#expense_form > div > div > div:nth-child(8) > div > label > span')
                        ->click('#expense_form > div > div > div:nth-child(9) > div > label > span')
                        ->type('#description', $this->faker->paragraph)
                        ->click('#expense_form > div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit');
                }, 25)
                ->waitFor('.toast-message',25)
                ->assertSeeIn('.toast-message', 'The requested expense created successful');

        });
    }

    public function test_3_for_bank_with_create_expanse(){
        $this->test_1_for_visit_index_page();
        $this->browse(function (Browser $browser) {
            $browser->click('#main-content > section > div > div > div.col-12 > div > div > ul > li > a')
                ->whenAvailable('#expense_modal > div', function($modal){
                    $modal->pause(2000)
                        ->type('#title', 'test-expanse-one')
                        ->click('#expense_form > div > div > div:nth-child(2) > div > div')
                        ->click('#expense_form > div > div > div:nth-child(2) > div > div > ul > li:nth-child(2)')
                        ->click('#expense_form > div > div > div:nth-child(3) > div > div')
                        ->click('#expense_form > div > div > div:nth-child(3) > div > div > ul > li:nth-child(2)')
                        ->pause(1000)
                        ->click('#expense_form > div > div > div.col-xl-6.mb-25 > div > div')
                        ->click('#expense_form > div > div > div.col-xl-6.mb-25 > div > div > ul > li:nth-child(2)')
                        ->type('#amount', '20')
                        ->attach('#file', __DIR__.'/files/favicon.png')
                        ->click('#expense_form > div > div > div:nth-child(8) > div > label > span')
                        ->click('#expense_form > div > div > div:nth-child(9) > div > label > span')
                        ->type('#description', $this->faker->paragraph)
                        ->click('#expense_form > div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit');
                        
                }, 25)
                ->waitFor('.toast-message',25)
                ->assertSeeIn('.toast-message', 'The requested expense created successful');

        });
    }

    public function test_for_4_cheque_with_create_expanse(){
        $this->test_1_for_visit_index_page();
        $this->browse(function (Browser $browser) {
            $browser->click('#main-content > section > div > div > div.col-12 > div > div > ul > li > a')
                ->whenAvailable('#expense_modal > div', function($modal){
                    $modal->pause(2000)
                        ->type('#title', 'test-expanse-one')
                        ->click('#expense_form > div > div > div:nth-child(2) > div > div')
                        ->click('#expense_form > div > div > div:nth-child(2) > div > div > ul > li:nth-child(2)')
                        ->click('#expense_form > div > div > div:nth-child(3) > div > div')
                        ->click('#expense_form > div > div > div:nth-child(3) > div > div > ul > li:nth-child(3)')
                        ->type('#amount', '20')
                        ->attach('#file', __DIR__.'/files/favicon.png')
                        ->click('#expense_form > div > div > div:nth-child(8) > div > label > span')
                        ->click('#expense_form > div > div > div:nth-child(9) > div > label > span')
                        ->type('#description', $this->faker->paragraph)
                        ->click('#expense_form > div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit');
                }, 25)
                ->waitFor('.toast-message',25)
                ->assertSeeIn('.toast-message', 'The requested expense created successful');

        });
    }

    public function test_5_for_validate_check_create(){
        $this->test_1_for_visit_index_page();
        $this->browse(function (Browser $browser) {
            $browser->click('#main-content > section > div > div > div.col-12 > div > div > ul > li > a')
                ->whenAvailable('#expense_modal > div', function($modal){
                    $modal->pause(2000)
                        ->click('#expense_form > div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit')
                        ->waitForText('This value is required.', 5)
                        ->click('#expense_form > div > div > div:nth-child(3) > div > div')
                        ->click('#expense_form > div > div > div:nth-child(3) > div > div > ul > li:nth-child(2)')
                        ->pause(1000)
                        ->click('#expense_form > div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit')
                        ->waitForText('This value is required.', 5)
                        ->click('#expense_form > div > div > div:nth-child(3) > div > div')
                        ->click('#expense_form > div > div > div:nth-child(3) > div > div > ul > li:nth-child(3)')
                        ->click('#expense_form > div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit')
                        ->waitForText('This value is required.', 5);

                }, 25);
            });            
    }

    public function test_6_for_cash_with_cash_edit_expanse_to_bank(){
        $this->test_2_for_with_cash_create_expanse();
        $this->browse(function (Browser $browser) {
            $browser->waitFor('#expense-table > tbody > tr > td.sorting_1', 25)
                ->click('#expense-table > tbody > tr > td:nth-child(7) > div > button')
                ->click('#expense-table > tbody > tr > td:nth-child(7) > div > div > a.dropdown-item.btn-modal')
                ->whenAvailable('#expense_modal > div', function($modal){
                    $modal->pause(2000)
                        ->type('#title', 'test-expanse-one-edit')
                        ->click('#expense_edit_form > div > div > div:nth-child(2) > div > div')
                        ->click('#expense_edit_form > div > div > div:nth-child(2) > div > div > ul > li:nth-child(2)')
                        ->click('#expense_edit_form > div > div > div:nth-child(3) > div > div')
                        ->click('#expense_edit_form > div > div > div:nth-child(3) > div > div > ul > li:nth-child(2)')
                        ->pause(1000)
                        ->click('#expense_edit_form > div > div > div.col-xl-6.mb-25 > div > div')
                        ->click('#expense_edit_form > div > div > div.col-xl-6.mb-25 > div > div > ul > li:nth-child(2)')
                        ->type('#amount', '10')
                        ->attach('#file', __DIR__.'/files/favicon.png')
                        ->click('#expense_edit_form > div > div > div:nth-child(8) > div > label > span')
                        ->click('#expense_edit_form > div > div > div:nth-child(9) > div > label > span')
                        ->type('#description', $this->faker->paragraph)
                        ->click('#expense_edit_form > div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit');

                })
                ->waitFor('.toast-message',25)
                ->assertSeeIn('.toast-message', 'The requested expense updated successful');
        });
    }

    public function test_7_for_bank_with_bank_edit_expense_to_cash(){
        $this->test_3_for_bank_with_create_expanse();
        $this->browse(function (Browser $browser) {
            $browser->waitFor('#expense-table > tbody > tr > td.sorting_1', 25)
                ->click('#expense-table > tbody > tr > td:nth-child(7) > div > button')
                ->click('#expense-table > tbody > tr > td:nth-child(7) > div > div > a.dropdown-item.btn-modal')
                ->whenAvailable('#expense_modal > div', function($modal){
                    $modal->pause(2000)
                        ->type('#title', 'test-expanse-one-edit')
                        ->click('#expense_edit_form > div > div > div:nth-child(2) > div > div')
                        ->click('#expense_edit_form > div > div > div:nth-child(2) > div > div > ul > li:nth-child(2)')
                        ->click('#expense_edit_form > div > div > div:nth-child(3) > div > div')
                        ->click('#expense_edit_form > div > div > div:nth-child(3) > div > div > ul > li:nth-child(1)')
                        ->type('#amount', '20')
                        ->attach('#file', __DIR__.'/files/favicon.png')
                        ->click('#expense_edit_form > div > div > div:nth-child(8) > div > label > span')
                        ->click('#expense_edit_form > div > div > div:nth-child(9) > div > label > span')
                        ->type('#description', $this->faker->paragraph)
                        ->click('#expense_edit_form > div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit');
                }, 25)
                ->waitFor('.toast-message',25)
                ->assertSeeIn('.toast-message', 'The requested expense updated successful');
        });            
    }

    public function test_8_for_checque_with_checque_edit_expense(){
        $this->test_for_4_cheque_with_create_expanse();
        $this->browse(function (Browser $browser) {
            $browser->waitFor('#expense-table > tbody > tr > td.sorting_1', 25)
                ->click('#expense-table > tbody > tr > td:nth-child(7) > div > button')
                ->click('#expense-table > tbody > tr > td:nth-child(7) > div > div > a.dropdown-item.btn-modal')
                ->whenAvailable('#expense_modal > div', function($modal){
                    $modal->pause(2000)
                        ->type('#title', 'test-expanse-one-edit')
                        ->click('#expense_edit_form > div > div > div:nth-child(2) > div > div')
                        ->click('#expense_edit_form > div > div > div:nth-child(2) > div > div > ul > li:nth-child(2)')
                        ->type('#amount', '20')
                        ->attach('#file', __DIR__.'/files/favicon.png')
                        ->click('#expense_edit_form > div > div > div:nth-child(8) > div > label > span')
                        ->click('#expense_edit_form > div > div > div:nth-child(9) > div > label > span')
                        ->type('#description', $this->faker->paragraph)
                        ->click('#expense_edit_form > div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit');
                }, 25)
                ->waitFor('.toast-message',25)
                ->assertSeeIn('.toast-message', 'The requested expense updated successful');
        });
    }

    public function test_9_for__edit_validate_edit(){
        $this->test_for_4_cheque_with_create_expanse();
        $this->browse(function (Browser $browser) {
            $browser->waitFor('#expense-table > tbody > tr > td.sorting_1', 25)
                ->click('#expense-table > tbody > tr > td:nth-child(7) > div > button')
                ->click('#expense-table > tbody > tr > td:nth-child(7) > div > div > a.dropdown-item.btn-modal')
                ->whenAvailable('#expense_modal > div', function($modal){
                    $modal->pause(2000)
                        ->type('#title', '')
                        ->click('#expense_edit_form > div > div > div:nth-child(2) > div > div')
                        ->click('#expense_edit_form > div > div > div:nth-child(2) > div > div > ul > li:nth-child(2)')
                        ->type('#amount', '')
                        ->attach('#file', __DIR__.'/files/favicon.png')
                        ->click('#expense_edit_form > div > div > div:nth-child(8) > div > label > span')
                        ->click('#expense_edit_form > div > div > div:nth-child(9) > div > label > span')
                        ->click('#expense_edit_form > div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit')
                        ->pause(2000)
                        ->assertSee('This value is required.');
                }, 25);
        });
    }

    public function test_10_for_delete_expense(){
        $this->test_for_4_cheque_with_create_expanse();
        $this->browse(function (Browser $browser) {
            $browser->waitFor('#expense-table > tbody > tr > td.sorting_1', 25)
                ->click('#expense-table > tbody > tr > td:nth-child(7) > div > button')
                ->click('#expense-table > tbody > tr > td:nth-child(7) > div > div > a.dropdown-item.delete_item')
                ->whenAvailable('#delete_modal_form', function($modal){
                    $modal->pause(5000)
                        ->click('div > div > div.col-lg-12.text-center > div > button.primary-btn.fix-gr-bg.submit');
                }, 5)

                ->waitFor('.toast-message',25)
                ->assertSeeIn('.toast-message', 'The requested expense deleted successful');
        });        
    }

}