CaiWuXiTong/tests/Unit/Console/BusinessDataPlanTest.php

44 lines
1.8 KiB
PHP

<?php
namespace Tests\Unit\Console;
use App\Console\Commands\BusinessDataPlan;
use Illuminate\Database\ConnectionInterface;
use Illuminate\Database\Query\Builder;
use Illuminate\Support\Collection;
use Mockery;
use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;
use Modules\EcommerceFinance\Services\BusinessDataPlacement;
use PHPUnit\Framework\TestCase;
use ReflectionMethod;
class BusinessDataPlanTest extends TestCase
{
use MockeryPHPUnitIntegration;
public function test_mysql_table_statistics_are_keyed_by_their_flat_row_shape(): void
{
$connection = Mockery::mock(ConnectionInterface::class);
$query = Mockery::mock(Builder::class);
$placements = Mockery::mock(BusinessDataPlacement::class);
$placements->shouldReceive('connection')->once()->andReturn($connection);
$connection->shouldReceive('getDriverName')->once()->andReturn('mysql');
$connection->shouldReceive('getDatabaseName')->once()->andReturn('caiwu_business_mirror');
$connection->shouldReceive('table')->once()->with('information_schema.TABLES')->andReturn($query);
$query->shouldReceive('where')->once()->with('TABLE_SCHEMA', 'caiwu_business_mirror')->andReturnSelf();
$query->shouldReceive('get')->once()->with(['TABLE_NAME', 'TABLE_ROWS', 'DATA_LENGTH', 'INDEX_LENGTH'])
->andReturn(new Collection([(object) [
'TABLE_NAME' => 'fact_rows',
'TABLE_ROWS' => 123,
'DATA_LENGTH' => 4096,
'INDEX_LENGTH' => 1024,
]]));
$method = new ReflectionMethod(BusinessDataPlan::class, 'tableSizes');
$sizes = $method->invoke(new BusinessDataPlan(), $placements);
$this->assertSame(['rows' => 123, 'bytes' => 5120], $sizes['fact_rows']);
}
}