This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit;
|
||||
|
||||
use App\Models\Opportunity;
|
||||
use App\Services\InvestmentCatalogue;
|
||||
use App\Services\OpportunityCorridorExplorer;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Mockery;
|
||||
use Tests\TestCase;
|
||||
|
||||
class OpportunityCorridorExplorerTest extends TestCase
|
||||
{
|
||||
public function test_multiple_groups_keep_one_identity_and_unassociated_records_remain_accessible(): void
|
||||
{
|
||||
$first = new Opportunity(['title' => 'Primeira', 'province' => 'Sofala', 'district' => 'Dondo']);
|
||||
$first->id = 101;
|
||||
$other = new Opportunity(['title' => 'Outra']); $other->id = 102;
|
||||
$query = Mockery::mock(Builder::class);
|
||||
$query->shouldReceive('get')->once()->andReturn(new Collection([$first, $other]));
|
||||
$catalogue = Mockery::mock(InvestmentCatalogue::class);
|
||||
$filters = ['sector' => 'agronegocio', 'view' => 'corridors'];
|
||||
$catalogue->shouldReceive('query')->with($filters)->once()->andReturn($query);
|
||||
$catalogue->shouldReceive('context')->with(101)->once()->andReturn(['corridors' => collect([(object)['id'=>'a','name'=>'Corredor A'],(object)['id'=>'b','name'=>'Corredor B']])]);
|
||||
$catalogue->shouldReceive('context')->with(102)->once()->andReturn(['corridors'=>collect()]);
|
||||
$this->app->instance(InvestmentCatalogue::class, $catalogue);
|
||||
$groups = app(OpportunityCorridorExplorer::class)->groups($filters);
|
||||
$this->assertSame(['Corredor A','Corredor B','Outras localizações'], array_column($groups,'name'));
|
||||
$this->assertSame([101,101,102], array_map(fn($g)=>$g['opportunities'][0]['id'], $groups));
|
||||
$this->assertSame([1,1,1], array_column($groups,'count'));
|
||||
$this->assertSame(['Sofala / Dondo'], $groups[0]['locations']);
|
||||
$this->assertSame([], $groups[2]['locations']);
|
||||
$this->assertSame([], $groups[0]['opportunities'][0]['stages']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user