45 lines
1.3 KiB
PHP
45 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Lvl0\FediDiscover\Tests\Feature;
|
|
|
|
use Lvl0\FediDiscover\Clients\FediverseClientFactory;
|
|
use Lvl0\FediDiscover\Clients\LemmyClient;
|
|
use Lvl0\FediDiscover\Clients\MastodonClient;
|
|
use Lvl0\FediDiscover\Config\InstanceType;
|
|
use Lvl0\FediDiscover\Models\Instance;
|
|
use Tests\TestCase;
|
|
|
|
class FediverseClientFactoryTest extends TestCase
|
|
{
|
|
public function test_it_resolves_mastodon_client_for_mastodon_instance_type(): void
|
|
{
|
|
$factory = app(FediverseClientFactory::class);
|
|
|
|
$instance = new Instance(['type' => InstanceType::Mastodon, 'url' => 'https://mastodon.social']);
|
|
|
|
$client = $factory->for($instance);
|
|
|
|
$this->assertInstanceOf(MastodonClient::class, $client);
|
|
}
|
|
|
|
public function test_it_resolves_lemmy_client_for_lemmy_instance_type(): void
|
|
{
|
|
$factory = app(FediverseClientFactory::class);
|
|
|
|
$instance = new Instance(['type' => InstanceType::Lemmy, 'url' => 'https://lemmy.world']);
|
|
|
|
$client = $factory->for($instance);
|
|
|
|
$this->assertInstanceOf(LemmyClient::class, $client);
|
|
}
|
|
|
|
public function test_it_is_registered_as_a_singleton_in_the_container(): void
|
|
{
|
|
$a = $this->app->make(FediverseClientFactory::class);
|
|
$b = $this->app->make(FediverseClientFactory::class);
|
|
|
|
$this->assertSame($a, $b);
|
|
}
|
|
}
|