Implement more testing on generates numbers

This commit is contained in:
David Bomba 2019-05-01 13:33:04 +10:00
parent 568fbdf6c8
commit 71d00c1aeb
10 changed files with 98 additions and 73 deletions

View File

@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model;
/**
* Class Bank.
*/
class Bank extends BaseModel
class Bank extends Model
{
/**
* @var bool

View File

@ -115,14 +115,17 @@ class Client extends BaseModel
*/
public function getSettingsByKey($key)
{
/* Does Setting Exist @ client level */
if(isset($this->getSettings()->{$key}))
{
{
//Log::error('harvesting client settings for key = '. $key . ' and it has the value = '. $this->getSettings()->{$key});
//Log::error(print_r($this->getSettings(),1));
return $this->getSettings();
}
else
return new CompanySettings($this->company->settings);
else {
//Log::error('harvesting company settings for key = '. $key);
return new CompanySettings($this->company->settings);
}
}
@ -130,14 +133,14 @@ class Client extends BaseModel
{
switch ($entity) {
case Client::class:
Log::error('saving client settings');
// Log::error('saving client settings');
$this->settings = $settings;
$this->save();
break;
case Company::class:
Log::error('saving company settings');
// Log::error('saving company settings');
$this->company->settings = $settings;
$this->push();
$this->company->save();
break;
default:

View File

@ -1,30 +0,0 @@
<?php
namespace App\Models;
use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\Model;
class ClientLocation extends BaseModel
{
use MakesHash;
public $timestamps = false;
protected $appends = ['client_location_id'];
public function getRouteKeyName()
{
return 'client_location_id';
}
public function getClientLocationIdAttribute()
{
return $this->encodePrimaryKey($this->id);
}
public function client()
{
return $this->belongsTo(Client::class);
}
}

View File

@ -4,7 +4,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Currency extends BaseModel
class Currency extends Model
{
public $timestamps = false;

View File

@ -4,7 +4,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Gateway extends BaseModel
class Gateway extends Model
{
//
}

View File

@ -4,7 +4,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Industry extends BaseModel
class Industry extends Model
{
//
}

View File

@ -4,7 +4,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Language extends BaseModel
class Language extends Model
{
public $timestamps = false;

View File

@ -68,8 +68,8 @@ trait GeneratesNumberCounter
public function hasSharedCounter() : bool
{
return $this->getSettingsByKey('shared_invoice_quote_counter')->shared_invoice_quote_counter;
Log::error('The Shared Counter = '. $this->getSettingsByKey('shared_invoice_quote_counter')->shared_invoice_quote_counter);
return $this->getSettingsByKey('shared_invoice_quote_counter')->shared_invoice_quote_counter === TRUE;
}
@ -125,20 +125,20 @@ trait GeneratesNumberCounter
$counter = $this->entityName($entity) . '_number_counter';
Log::error($counter);
//Log::error($counter);
$entity_settings = $this->getSettingsByKey( $counter );
Log::error(print_r($entity_settings,1));
//Log::error(print_r($entity_settings,1));
$entity_settings->{$counter} = $entity_settings->{$counter} + 1;
Log::error($entity_settings->{$counter});
Log::error($entity_settings->entity);
//Log::error($entity_settings->{$counter});
//Log::error($entity_settings->entity);
$this->setSettingsByEntity($entity_settings->entity, $entity_settings);
Log::error(print_r($entity_settings,1));
//Log::error(print_r($entity_settings,1));
}

View File

@ -28,6 +28,6 @@ $factory->define(App\Models\Client::class, function (Faker $faker) {
'shipping_state' => $faker->state,
'shipping_postal_code' => $faker->postcode,
'shipping_country_id' => 4,
'settings' => ClientSettings::buildClientSettings(new CompanySettings(CompanySettings::defaults()), new ClientSettings(ClientSettings::defaults())),
'settings' => new ClientSettings(ClientSettings::defaults()),
];
});

View File

@ -4,6 +4,8 @@ namespace Tests\Unit;
use App\DataMapper\DefaultSettings;
use App\Models\Client;
use App\Models\Credit;
use App\Models\Invoice;
use App\Models\RecurringInvoice;
use App\Utils\Traits\GeneratesNumberCounter;
use App\Utils\Traits\MakesHash;
@ -32,19 +34,8 @@ class GenerateNumberTest extends TestCase
$this->faker = \Faker\Factory::create();
Model::reguard();
}
public function testEntityName()
{
$this->assertEquals($this->entityName(Client::class), 'client');
}
public function testCounterVariables()
{
$account = factory(\App\Models\Account::class)->create();
$account = factory(\App\Models\Account::class)->create();
$company = factory(\App\Models\Company::class)->create([
'account_id' => $account->id,
]);
@ -95,20 +86,81 @@ class GenerateNumberTest extends TestCase
});
$client = Client::whereUserId($user->id)->whereCompanyId($company->id)->first();
$this->client = Client::whereUserId($user->id)->whereCompanyId($company->id)->first();
}
$this->assertEquals($client->getCounter(Client::class), 1);
$this->assertEquals($client->getNextNumber(Client::class),1);
public function testEntityName()
{
$settings = $client->getSettingsByKey('recurring_invoice_number_prefix');
$settings->recurring_invoice_number_prefix = 'R';
$client->setSettingsByEntity($settings->entity, $settings);
$this->assertEquals($this->entityName(Client::class), 'client');
$this->assertEquals($client->getNextNumber(RecurringInvoice::class), 'R1');
$client->incrementCounter(Client::class);
$this->assertEquals($client->getCounter(Client::class), 2);
}
public function testSharedCounter()
{
$this->assertFalse($this->client->hasSharedCounter());
}
public function testClientCounterValue()
{
$this->assertEquals($this->client->getCounter(Client::class), 1);
}
public function testClientNextNumber()
{
$this->assertEquals($this->client->getNextNumber(Client::class),1);
}
public function testRecurringInvoiceNumberPrefix()
{
$settings = $this->client->getSettingsByKey('recurring_invoice_number_prefix');
$settings->recurring_invoice_number_prefix = 'R';
$this->client->setSettingsByEntity($settings->entity, $settings);
$this->assertEquals($this->client->getNextNumber(RecurringInvoice::class), 'R1');
}
public function testClientIncrementer()
{
$this->client->incrementCounter(Client::class);
$this->assertEquals($this->client->getCounter(Client::class), 2);
}
public function testCounterValues()
{
$this->assertEquals($this->client->getCounter(Invoice::class), 1);
$this->assertEquals($this->client->getCounter(RecurringInvoice::class), 1);
$this->assertEquals($this->client->getCounter(Credit::class), 1);
}
public function testClassIncrementers()
{
$this->client->incrementCounter(Invoice::class);
$this->client->incrementCounter(RecurringInvoice::class);
$this->client->incrementCounter(Credit::class);
$this->assertEquals($this->client->getCounter(Invoice::class), 3);
$this->assertEquals($this->client->getCounter(RecurringInvoice::class), 3);
$this->assertEquals($this->client->getCounter(Credit::class), 2);
}
public function testClientNumberPattern()
{
}
}