Compare commits

..

No commits in common. "main" and "v0.1.0" have entirely different histories.
main ... v0.1.0

14 changed files with 46 additions and 26 deletions

View file

@ -73,6 +73,7 @@ jobs:
- name: Tests with coverage - name: Tests with coverage
env: env:
DB_HOST: db
REDIS_HOST: redis REDIS_HOST: redis
run: php artisan test --coverage-clover coverage.xml --coverage-text run: php artisan test --coverage-clover coverage.xml --coverage-text

View file

@ -2,8 +2,13 @@
namespace App\Providers; namespace App\Providers;
use App\Listeners\PollFailedListener;
use App\Listeners\UrlDiscoveredListener;
use App\Services\LanguageDetectionService; use App\Services\LanguageDetectionService;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Lvl0\FediDiscover\Events\PollFailed;
use Lvl0\FediDiscover\Events\UrlDiscovered;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {
@ -14,6 +19,7 @@ public function register(): void
public function boot(): void public function boot(): void
{ {
// Event::listen(UrlDiscovered::class, UrlDiscoveredListener::class);
Event::listen(PollFailed::class, PollFailedListener::class);
} }
} }

View file

@ -28,17 +28,13 @@
</source> </source>
<php> <php>
<server name="APP_ENV" value="testing"/> <server name="APP_ENV" value="testing"/>
<server name="APP_KEY" value="base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="/>
<server name="APP_MAINTENANCE_DRIVER" value="file"/> <server name="APP_MAINTENANCE_DRIVER" value="file"/>
<server name="BCRYPT_ROUNDS" value="4"/> <server name="BCRYPT_ROUNDS" value="4"/>
<server name="BROADCAST_CONNECTION" value="null"/> <server name="BROADCAST_CONNECTION" value="null"/>
<server name="CACHE_STORE" value="array"/> <server name="CACHE_STORE" value="array"/>
<server name="DB_CONNECTION" value="pgsql"/> <server name="DB_CONNECTION" value="sqlite"/>
<server name="DB_HOST" value="db"/> <server name="DB_DATABASE" value=":memory:"/>
<server name="DB_PORT" value="5432"/> <server name="DB_URL" value=""/>
<server name="DB_DATABASE" value="trove"/>
<server name="DB_USERNAME" value="trove"/>
<server name="DB_PASSWORD" value="trove"/>
<server name="MAIL_MAILER" value="array"/> <server name="MAIL_MAILER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/> <server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/> <server name="SESSION_DRIVER" value="array"/>

View file

@ -12,7 +12,7 @@
use GuzzleHttp\Psr7\Request; use GuzzleHttp\Psr7\Request;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Tests\Feature\TestCase; use Tests\TestCase;
class FetchPageActionTest extends TestCase class FetchPageActionTest extends TestCase
{ {

View file

@ -6,12 +6,15 @@
use App\Enums\PageStatusEnum; use App\Enums\PageStatusEnum;
use App\Models\Page; use App\Models\Page;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Lvl0\FediDiscover\Config\InstanceType; use Lvl0\FediDiscover\Config\InstanceType;
use Lvl0\FediDiscover\Models\Instance; use Lvl0\FediDiscover\Models\Instance;
use Tests\Feature\TestCase; use Tests\TestCase;
class InstancesAdminPageTest extends TestCase class InstancesAdminPageTest extends TestCase
{ {
use RefreshDatabase;
public function test_admin_instances_page_is_accessible(): void public function test_admin_instances_page_is_accessible(): void
{ {
$response = $this->get('/admin/instances'); $response = $this->get('/admin/instances');

View file

@ -4,6 +4,8 @@
namespace Tests\Feature; namespace Tests\Feature;
use Tests\TestCase;
class BotPageTest extends TestCase class BotPageTest extends TestCase
{ {
public function test_bot_page_renders_at_public_route(): void public function test_bot_page_renders_at_public_route(): void

View file

@ -12,15 +12,18 @@
use App\Models\PageCrawl; use App\Models\PageCrawl;
use App\ValueObjects\FetchResult; use App\ValueObjects\FetchResult;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Queue; use Illuminate\Support\Facades\Queue;
use Mockery; use Mockery;
use Tests\Feature\TestCase; use Tests\TestCase;
class ProcessCrawlJobTest extends TestCase class ProcessCrawlJobTest extends TestCase
{ {
use RefreshDatabase;
public function test_creating_a_page_crawl_dispatches_process_crawl_job(): void public function test_creating_a_page_crawl_dispatches_process_crawl_job(): void
{ {
Queue::fake(); Queue::fake();

View file

@ -8,14 +8,17 @@
use App\Services\PollAlertService; use App\Services\PollAlertService;
use Carbon\CarbonImmutable; use Carbon\CarbonImmutable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Lvl0\FediDiscover\Config\InstanceType; use Lvl0\FediDiscover\Config\InstanceType;
use Lvl0\FediDiscover\Events\PollFailed; use Lvl0\FediDiscover\Events\PollFailed;
use Lvl0\FediDiscover\Models\Instance; use Lvl0\FediDiscover\Models\Instance;
use Mockery; use Mockery;
use Tests\Feature\TestCase; use Tests\TestCase;
class PollFailedListenerTest extends TestCase class PollFailedListenerTest extends TestCase
{ {
use RefreshDatabase;
public function test_handle_calls_record_failure_with_the_event_instance_and_message(): void public function test_handle_calls_record_failure_with_the_event_instance_and_message(): void
{ {
$instance = Instance::factory() $instance = Instance::factory()

View file

@ -7,9 +7,13 @@
use App\Models\Page; use App\Models\Page;
use App\Models\PageCrawl; use App\Models\PageCrawl;
use App\Services\UrlService; use App\Services\UrlService;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class PageQueuePopulationTest extends TestCase class PageQueuePopulationTest extends TestCase
{ {
use RefreshDatabase;
public function test_creating_a_page_inserts_a_page_crawl_row(): void public function test_creating_a_page_inserts_a_page_crawl_row(): void
{ {
$url = 'https://example-blog.com/article'; $url = 'https://example-blog.com/article';

View file

@ -4,14 +4,18 @@
namespace Tests\Feature; namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Lvl0\FediDiscover\Actions\PollFediverseAction; use Lvl0\FediDiscover\Actions\PollFediverseAction;
use Lvl0\FediDiscover\Config\InstanceType; use Lvl0\FediDiscover\Config\InstanceType;
use Lvl0\FediDiscover\Models\Instance; use Lvl0\FediDiscover\Models\Instance;
use RuntimeException; use RuntimeException;
use Tests\TestCase;
class PollFailedIntegrationTest extends TestCase class PollFailedIntegrationTest extends TestCase
{ {
use RefreshDatabase;
public function test_poll_failure_increments_consecutive_poll_failures_via_full_chain(): void public function test_poll_failure_increments_consecutive_poll_failures_via_full_chain(): void
{ {
Http::fake(); Http::fake();

View file

@ -5,13 +5,16 @@
namespace Tests\Feature\Services; namespace Tests\Feature\Services;
use App\Services\PollAlertService; use App\Services\PollAlertService;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Lvl0\FediDiscover\Config\InstanceType; use Lvl0\FediDiscover\Config\InstanceType;
use Lvl0\FediDiscover\Models\Instance; use Lvl0\FediDiscover\Models\Instance;
use Tests\Feature\TestCase; use Tests\TestCase;
class PollAlertServiceTest extends TestCase class PollAlertServiceTest extends TestCase
{ {
use RefreshDatabase;
public function test_record_failure_increments_consecutive_poll_failures_on_the_instance(): void public function test_record_failure_increments_consecutive_poll_failures_on_the_instance(): void
{ {
$instance = Instance::factory() $instance = Instance::factory()

View file

@ -1,13 +0,0 @@
<?php
declare(strict_types=1);
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
use RefreshDatabase;
}

View file

@ -9,13 +9,17 @@
use App\Models\PageLink; use App\Models\PageLink;
use Carbon\CarbonImmutable; use Carbon\CarbonImmutable;
use Illuminate\Events\CallQueuedListener; use Illuminate\Events\CallQueuedListener;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Queue; use Illuminate\Support\Facades\Queue;
use Lvl0\FediDiscover\Config\InstanceType; use Lvl0\FediDiscover\Config\InstanceType;
use Lvl0\FediDiscover\Events\UrlDiscovered; use Lvl0\FediDiscover\Events\UrlDiscovered;
use Lvl0\FediDiscover\Models\Instance; use Lvl0\FediDiscover\Models\Instance;
use Tests\TestCase;
class UrlDiscoveryTest extends TestCase class UrlDiscoveryTest extends TestCase
{ {
use RefreshDatabase;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// Helpers // Helpers
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

View file

@ -7,11 +7,15 @@
use App\Enums\PageStatusEnum; use App\Enums\PageStatusEnum;
use App\Livewire\UrlSubmissionForm; use App\Livewire\UrlSubmissionForm;
use App\Models\Page; use App\Models\Page;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire; use Livewire\Livewire;
use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
class UrlSubmissionTest extends TestCase class UrlSubmissionTest extends TestCase
{ {
use RefreshDatabase;
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Test 1 — route renders the submission form // Test 1 — route renders the submission form
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------