mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Test for Number generation:
This commit is contained in:
parent
76d625d723
commit
19a5c7119b
@ -62,12 +62,13 @@ class ClientSettings extends BaseSettings
|
||||
|
||||
public $client_number_prefix;
|
||||
public $client_number_pattern;
|
||||
|
||||
|
||||
public $credit_number_prefix;
|
||||
public $credit_number_pattern;
|
||||
public $credit_number_counter;
|
||||
|
||||
public $shared_invoice_quote_counter;
|
||||
public $counter_padding;
|
||||
|
||||
/**
|
||||
* Settings which which are unique to client settings
|
||||
|
@ -87,6 +87,7 @@ class CompanySettings extends BaseSettings
|
||||
|
||||
public $client_number_prefix;
|
||||
public $client_number_pattern;
|
||||
public $client_number_counter;
|
||||
|
||||
public $credit_number_prefix;
|
||||
public $credit_number_pattern;
|
||||
@ -98,6 +99,7 @@ class CompanySettings extends BaseSettings
|
||||
public $recurring_number_prefix;
|
||||
public $reset_counter_frequency_id;
|
||||
public $reset_counter_date;
|
||||
public $counter_padding;
|
||||
|
||||
/**
|
||||
* Cast object values and return entire class
|
||||
@ -143,6 +145,8 @@ class CompanySettings extends BaseSettings
|
||||
'invoice_number_counter' => 1,
|
||||
'quote_number_counter' => 1,
|
||||
'credit_number_counter' => 1,
|
||||
'client_number_counter' => 1,
|
||||
'counter_padding' => 0,
|
||||
|
||||
'translations' => (object) [],
|
||||
];
|
||||
|
@ -9,6 +9,7 @@ use App\Models\Company;
|
||||
use App\Models\Country;
|
||||
use App\Models\Filterable;
|
||||
use App\Models\Timezone;
|
||||
use App\Utils\Traits\GeneratesNumberCounter;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Hashids\Hashids;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
@ -20,6 +21,7 @@ class Client extends BaseModel
|
||||
use MakesHash;
|
||||
use SoftDeletes;
|
||||
use Filterable;
|
||||
use GeneratesNumberCounter;
|
||||
|
||||
protected $presenter = 'App\Models\Presenters\ClientPresenter';
|
||||
|
||||
|
10
app/Models/Credit.php
Normal file
10
app/Models/Credit.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Credit extends BaseModel
|
||||
{
|
||||
//
|
||||
}
|
@ -2,6 +2,11 @@
|
||||
|
||||
namespace App\Utils\Traits;
|
||||
|
||||
use App\Models\Client;
|
||||
use App\Models\Credit;
|
||||
use App\Models\Invoice;
|
||||
use App\Models\Quote;
|
||||
|
||||
/**
|
||||
* Class GeneratesNumberCounter
|
||||
* @package App\Utils\Traits
|
||||
@ -12,6 +17,8 @@ trait GeneratesNumberCounter
|
||||
public function getNextNumber($entity)
|
||||
{
|
||||
|
||||
$counter = $this->getCounter($entity);
|
||||
|
||||
}
|
||||
|
||||
public function hasSharedCounter() : bool
|
||||
@ -21,16 +28,24 @@ trait GeneratesNumberCounter
|
||||
|
||||
}
|
||||
|
||||
public function incrementCounter($entity)
|
||||
private function incrementCounter($entity)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function entity_name($entity)
|
||||
private function entity_name($entity)
|
||||
{
|
||||
|
||||
return strtolower(class_basename($entity));
|
||||
|
||||
}
|
||||
|
||||
public function getCounter($entity) : int
|
||||
{
|
||||
$counter = $this->entity_name($entity) . '_number_counter';
|
||||
|
||||
return $this->getSettingsByKey( $counter )->{$counter};
|
||||
|
||||
}
|
||||
|
||||
}
|
101
tests/Unit/GenerateNumberTest.php
Normal file
101
tests/Unit/GenerateNumberTest.php
Normal file
@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit;
|
||||
|
||||
use App\DataMapper\DefaultSettings;
|
||||
use App\Models\Client;
|
||||
use App\Utils\Traits\GeneratesNumberCounter;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use Illuminate\Support\Facades\Session;
|
||||
use Tests\TestCase;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @covers App\Utils\Traits\GeneratesNumberCounter
|
||||
*/
|
||||
class GenerateNumberTest extends TestCase
|
||||
{
|
||||
|
||||
use GeneratesNumberCounter;
|
||||
use MakesHash;
|
||||
use DatabaseTransactions;
|
||||
|
||||
public function setUp() :void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
Session::start();
|
||||
|
||||
$this->faker = \Faker\Factory::create();
|
||||
|
||||
Model::reguard();
|
||||
}
|
||||
|
||||
|
||||
public function testEntityName()
|
||||
{
|
||||
|
||||
$this->assertEquals($this->entity_name(Client::class), 'client');
|
||||
|
||||
}
|
||||
|
||||
public function testCounterVariables()
|
||||
{
|
||||
$account = factory(\App\Models\Account::class)->create();
|
||||
$company = factory(\App\Models\Company::class)->create([
|
||||
'account_id' => $account->id,
|
||||
]);
|
||||
|
||||
$account->default_company_id = $company->id;
|
||||
$account->save();
|
||||
|
||||
$user = factory(\App\Models\User::class)->create([
|
||||
// 'account_id' => $account->id,
|
||||
'confirmation_code' => $this->createDbHash(config('database.default'))
|
||||
]);
|
||||
|
||||
|
||||
$userPermissions = collect([
|
||||
'view_invoice',
|
||||
'view_client',
|
||||
'edit_client',
|
||||
'edit_invoice',
|
||||
'create_invoice',
|
||||
'create_client'
|
||||
]);
|
||||
|
||||
$userSettings = DefaultSettings::userSettings();
|
||||
|
||||
$user->companies()->attach($company->id, [
|
||||
'account_id' => $account->id,
|
||||
'is_owner' => 1,
|
||||
'is_admin' => 1,
|
||||
'permissions' => $userPermissions->toJson(),
|
||||
'settings' => json_encode($userSettings),
|
||||
'is_locked' => 0,
|
||||
]);
|
||||
|
||||
factory(\App\Models\Client::class)->create(['user_id' => $user->id, 'company_id' => $company->id])->each(function ($c) use ($user, $company){
|
||||
|
||||
factory(\App\Models\ClientContact::class,1)->create([
|
||||
'user_id' => $user->id,
|
||||
'client_id' => $c->id,
|
||||
'company_id' => $company->id,
|
||||
'is_primary' => 1
|
||||
]);
|
||||
|
||||
factory(\App\Models\ClientContact::class,2)->create([
|
||||
'user_id' => $user->id,
|
||||
'client_id' => $c->id,
|
||||
'company_id' => $company->id
|
||||
]);
|
||||
|
||||
});
|
||||
|
||||
$client = Client::whereUserId($user->id)->whereCompanyId($company->id)->first();
|
||||
|
||||
$this->assertEquals($client->getCounter(Client::class), 1);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user