<?php

namespace Tests\Feature;

use Illuminate\Support\Facades\Route;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;

class RouteRegistrationTest extends TestCase
{
    /**
     * @return array<string, array{0: string}>
     */
    public static function routeNames(): array
    {
        return [
            'home' => ['home'],
            'about' => ['about'],
            'services' => ['services'],
            'gallery' => ['gallery'],
            'contact' => ['contact'],
            'contact.submit' => ['contact.submit'],
            'admin.login' => ['admin.login'],
            'admin.login.store' => ['admin.login.store'],
            'admin.logout' => ['admin.logout'],
            'admin.password.edit' => ['admin.password.edit'],
            'admin.password.update' => ['admin.password.update'],
            'admin.dashboard' => ['admin.dashboard'],
            'admin.content.index' => ['admin.content.index'],
            'admin.content.home' => ['admin.content.home'],
            'admin.content.about' => ['admin.content.about'],
            'admin.content.services-page' => ['admin.content.services-page'],
            'admin.content.gallery-page' => ['admin.content.gallery-page'],
            'admin.content.contact-page' => ['admin.content.contact-page'],
            'admin.content.update' => ['admin.content.update'],
            'admin.content.publish' => ['admin.content.publish'],
            'admin.services.index' => ['admin.services.index'],
            'admin.services.create' => ['admin.services.create'],
            'admin.services.store' => ['admin.services.store'],
            'admin.services.edit' => ['admin.services.edit'],
            'admin.services.update' => ['admin.services.update'],
            'admin.services.publish' => ['admin.services.publish'],
            'admin.services.toggle' => ['admin.services.toggle'],
            'admin.services.duplicate' => ['admin.services.duplicate'],
            'admin.services.archive' => ['admin.services.archive'],
            'admin.services.destroy' => ['admin.services.destroy'],
            'admin.services.bulk' => ['admin.services.bulk'],
            'admin.partners.index' => ['admin.partners.index'],
            'admin.partners.create' => ['admin.partners.create'],
            'admin.partners.store' => ['admin.partners.store'],
            'admin.partners.edit' => ['admin.partners.edit'],
            'admin.partners.update' => ['admin.partners.update'],
            'admin.partners.toggle' => ['admin.partners.toggle'],
            'admin.partners.archive' => ['admin.partners.archive'],
            'admin.partners.destroy' => ['admin.partners.destroy'],
            'admin.partners.bulk' => ['admin.partners.bulk'],
            'admin.clients.index' => ['admin.clients.index'],
            'admin.clients.create' => ['admin.clients.create'],
            'admin.clients.store' => ['admin.clients.store'],
            'admin.clients.edit' => ['admin.clients.edit'],
            'admin.clients.update' => ['admin.clients.update'],
            'admin.clients.toggle' => ['admin.clients.toggle'],
            'admin.clients.archive' => ['admin.clients.archive'],
            'admin.clients.destroy' => ['admin.clients.destroy'],
            'admin.clients.bulk' => ['admin.clients.bulk'],
            'admin.gallery.index' => ['admin.gallery.index'],
            'admin.gallery.archives' => ['admin.gallery.archives'],
            'admin.gallery.create' => ['admin.gallery.create'],
            'admin.gallery.store' => ['admin.gallery.store'],
            'admin.gallery.edit' => ['admin.gallery.edit'],
            'admin.gallery.update' => ['admin.gallery.update'],
            'admin.gallery.publish' => ['admin.gallery.publish'],
            'admin.gallery.toggle' => ['admin.gallery.toggle'],
            'admin.gallery.archive' => ['admin.gallery.archive'],
            'admin.gallery.restore' => ['admin.gallery.restore'],
            'admin.gallery.force-destroy' => ['admin.gallery.force-destroy'],
            'admin.gallery.bulk' => ['admin.gallery.bulk'],
            'admin.media.index' => ['admin.media.index'],
            'admin.media.store' => ['admin.media.store'],
            'admin.media.update' => ['admin.media.update'],
            'admin.media.destroy' => ['admin.media.destroy'],
            'admin.media.force-destroy' => ['admin.media.force-destroy'],
            'admin.messages.index' => ['admin.messages.index'],
            'admin.messages.show' => ['admin.messages.show'],
            'admin.messages.status' => ['admin.messages.status'],
            'admin.messages.replies.store' => ['admin.messages.replies.store'],
            'admin.messages.replies.send' => ['admin.messages.replies.send'],
            'admin.messages.archive' => ['admin.messages.archive'],
            'admin.messages.destroy' => ['admin.messages.destroy'],
            'admin.messages.bulk' => ['admin.messages.bulk'],
            'admin.navigation.index' => ['admin.navigation.index'],
            'admin.navigation.update' => ['admin.navigation.update'],
            'admin.settings.general' => ['admin.settings.general'],
            'admin.settings.general.update' => ['admin.settings.general.update'],
            'admin.settings.contact' => ['admin.settings.contact'],
            'admin.settings.contact.update' => ['admin.settings.contact.update'],
            'admin.settings.seo' => ['admin.settings.seo'],
            'admin.settings.seo.update' => ['admin.settings.seo.update'],
            'admin.settings.email' => ['admin.settings.email'],
            'admin.settings.email.update' => ['admin.settings.email.update'],
            'admin.users.index' => ['admin.users.index'],
            'admin.users.create' => ['admin.users.create'],
            'admin.users.store' => ['admin.users.store'],
            'admin.users.edit' => ['admin.users.edit'],
            'admin.users.update' => ['admin.users.update'],
            'admin.users.toggle' => ['admin.users.toggle'],
            'admin.users.reset-password' => ['admin.users.reset-password'],
            'admin.users.destroy' => ['admin.users.destroy'],
            'admin.activity.index' => ['admin.activity.index'],
        ];
    }

    #[DataProvider('routeNames')]
    public function test_route_name_is_registered(string $routeName): void
    {
        $this->assertTrue(Route::has($routeName), "Route [$routeName] should be registered.");
    }
}
