mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-08-14 19:22:14 +01:00
Updated dependencies; Major update laravel passport
This commit is contained in:
@@ -10,11 +10,9 @@ use App\Service\DeletionService;
|
||||
use Illuminate\Support\Str;
|
||||
use Mockery\MockInterface;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(OrganizationDeleteCommand::class)]
|
||||
#[UsesClass(OrganizationDeleteCommand::class)]
|
||||
class OrganizationDeleteCommandTest extends TestCaseWithDatabase
|
||||
{
|
||||
public function test_it_calls_the_deletion_service_with_the_organization(): void
|
||||
|
||||
@@ -10,11 +10,9 @@ use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(UserCreateCommand::class)]
|
||||
#[UsesClass(UserCreateCommand::class)]
|
||||
class UserCreateCommandCommandTest extends TestCaseWithDatabase
|
||||
{
|
||||
public function test_it_creates_user(): void
|
||||
|
||||
@@ -9,11 +9,9 @@ use App\Models\Member;
|
||||
use App\Models\Organization;
|
||||
use App\Models\User;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(UserVerifyCommand::class)]
|
||||
#[UsesClass(UserVerifyCommand::class)]
|
||||
class UserVerifyCommandTest extends TestCaseWithDatabase
|
||||
{
|
||||
public function test_it_verifies_user_email(): void
|
||||
|
||||
@@ -12,11 +12,9 @@ use App\Models\User;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(CorrectionPlaceholderMembersCommand::class)]
|
||||
#[UsesClass(CorrectionPlaceholderMembersCommand::class)]
|
||||
class CorrectionPlaceholderMembersCommandTest extends TestCaseWithDatabase
|
||||
{
|
||||
public function test_sets_member_role_to_placeholder_if_user_is_placeholder(): void
|
||||
|
||||
@@ -9,11 +9,9 @@ use App\Models\Report;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(ReportSetExpiredToPrivateCommand::class)]
|
||||
#[UsesClass(ReportSetExpiredToPrivateCommand::class)]
|
||||
class ReportSetExpiredToPrivateCommandTest extends TestCaseWithDatabase
|
||||
{
|
||||
public function test_command_sets_expired_reports_to_private(): void
|
||||
|
||||
@@ -12,12 +12,10 @@ use Illuminate\Http\Client\ConnectionException;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(SelfHostCheckForUpdateCommand::class)]
|
||||
#[CoversClass(ApiService::class)]
|
||||
#[UsesClass(SelfHostCheckForUpdateCommand::class)]
|
||||
class SelfHostCheckForUpdateCommandTest extends TestCase
|
||||
{
|
||||
public function test_checks_for_update_and_saves_version_in_cache(): void
|
||||
|
||||
@@ -15,11 +15,9 @@ use App\Models\User;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(SelfHostDatabaseConsistency::class)]
|
||||
#[UsesClass(SelfHostDatabaseConsistency::class)]
|
||||
class SelfHostDatabaseConsistencyCommandTest extends TestCaseWithDatabase
|
||||
{
|
||||
public function test_checks_that_task_need_to_be_part_of_project_in_time_entries(): void
|
||||
|
||||
@@ -8,11 +8,9 @@ use App\Console\Commands\SelfHost\SelfHostGenerateKeysCommand;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(SelfHostGenerateKeysCommand::class)]
|
||||
#[UsesClass(SelfHostGenerateKeysCommand::class)]
|
||||
class SelfHostGenerateKeysCommandTest extends TestCase
|
||||
{
|
||||
public function test_generates_app_key_and_passport_keys_per_default_in_env_format(): void
|
||||
|
||||
@@ -11,12 +11,10 @@ use Illuminate\Http\Client\ConnectionException;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(SelfHostTelemetryCommand::class)]
|
||||
#[CoversClass(ApiService::class)]
|
||||
#[UsesClass(SelfHostTelemetryCommand::class)]
|
||||
class SelfHostTelemetryCommandTest extends TestCase
|
||||
{
|
||||
public function test_telemetry_sends_data_to_telemetry_endpoint_of_solidtime_cloud(): void
|
||||
|
||||
@@ -12,11 +12,9 @@ use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(TimeEntrySendStillRunningMailsCommand::class)]
|
||||
#[UsesClass(TimeEntrySendStillRunningMailsCommand::class)]
|
||||
class TimeEntrySendStillRunningMailsCommandTest extends TestCaseWithDatabase
|
||||
{
|
||||
public function test_sends_mails_for_still_running_time_entries(): void
|
||||
|
||||
@@ -7,7 +7,6 @@ namespace Tests\Unit\Endpoint\Api\V1;
|
||||
use App\Http\Controllers\Api\V1\ApiTokenController;
|
||||
use App\Models\Passport\Client;
|
||||
use App\Models\Passport\Token;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Laravel\Passport\ClientRepository;
|
||||
use Laravel\Passport\Passport;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
@@ -20,8 +19,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
// Arrange
|
||||
$data = $this->createUserWithPermission([]);
|
||||
$personalAccessClient = $this->createPersonalAccessClient();
|
||||
Config::set('passport.personal_access_client.id', $personalAccessClient->id);
|
||||
Config::set('passport.personal_access_client.secret', $personalAccessClient->secret);
|
||||
$client = $this->createClient();
|
||||
$token = Token::factory()->forUser($data->user)->forClient($personalAccessClient)->create();
|
||||
$otherTokenType = Token::factory()->forUser($data->user)->forClient($client)->create();
|
||||
@@ -34,6 +31,7 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
|
||||
// Assert
|
||||
$this->assertResponseCode($response, 200);
|
||||
$response->assertJsonCount(1, 'data');
|
||||
$response->assertExactJson([
|
||||
'data' => [
|
||||
[
|
||||
@@ -53,8 +51,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
// Arrange
|
||||
$data = $this->createUserWithPermission([]);
|
||||
$personalAccessClient = $this->createPersonalAccessClient();
|
||||
Config::set('passport.personal_access_client.id', $personalAccessClient->id);
|
||||
Config::set('passport.personal_access_client.secret', $personalAccessClient->secret);
|
||||
Passport::actingAs($data->user);
|
||||
|
||||
// Act
|
||||
@@ -102,8 +98,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
// Arrange
|
||||
$data = $this->createUserWithPermission([]);
|
||||
$client = $this->createPersonalAccessClient();
|
||||
Config::set('passport.personal_access_client.id', $client->id);
|
||||
Config::set('passport.personal_access_client.secret', $client->secret);
|
||||
$token = Token::factory()->forUser($data->user)->forClient($client)->create();
|
||||
Passport::actingAs($data->user);
|
||||
|
||||
@@ -123,8 +117,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
// Arrange
|
||||
$data = $this->createUserWithPermission([]);
|
||||
$personalAccessClient = $this->createPersonalAccessClient();
|
||||
Config::set('passport.personal_access_client.id', $personalAccessClient->id);
|
||||
Config::set('passport.personal_access_client.secret', $personalAccessClient->secret);
|
||||
$client = $this->createClient();
|
||||
$token = Token::factory()->forUser($data->user)->forClient($client)->create();
|
||||
Passport::actingAs($data->user);
|
||||
@@ -153,34 +145,12 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
$this->assertResponseCode($response, 404);
|
||||
}
|
||||
|
||||
public function test_revoke_fails_if_personal_access_client_is_not_configured(): void
|
||||
{
|
||||
// Arrange
|
||||
$data = $this->createUserWithPermission([]);
|
||||
$client = $this->createPersonalAccessClient();
|
||||
$token = Token::factory()->forUser($data->user)->forClient($client)->create();
|
||||
Passport::actingAs($data->user);
|
||||
|
||||
// Act
|
||||
$response = $this->postJson(route('api.v1.api-tokens.revoke', $token->id));
|
||||
|
||||
// Assert
|
||||
$this->assertResponseCode($response, 400);
|
||||
$response->assertExactJson([
|
||||
'error' => true,
|
||||
'key' => 'personal_access_client_is_not_configured',
|
||||
'message' => 'Personal access client is not configured',
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_revoke_fails_if_the_token_does_not_belong_to_the_user(): void
|
||||
{
|
||||
// Arrange
|
||||
$data = $this->createUserWithPermission([]);
|
||||
$otherData = $this->createUserWithPermission([]);
|
||||
$client = $this->createPersonalAccessClient();
|
||||
Config::set('passport.personal_access_client.id', $client->id);
|
||||
Config::set('passport.personal_access_client.secret', $client->secret);
|
||||
$token = Token::factory()->forUser($otherData->user)->forClient($client)->create();
|
||||
Passport::actingAs($data->user);
|
||||
|
||||
@@ -200,8 +170,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
// Arrange
|
||||
$data = $this->createUserWithPermission([]);
|
||||
$client = $this->createPersonalAccessClient();
|
||||
Config::set('passport.personal_access_client.id', $client->id);
|
||||
Config::set('passport.personal_access_client.secret', $client->secret);
|
||||
$token = Token::factory()->forUser($data->user)->forClient($client)->create();
|
||||
Passport::actingAs($data->user);
|
||||
|
||||
@@ -213,33 +181,11 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
$this->assertDatabaseMissing(Token::class, ['id' => $token->id]);
|
||||
}
|
||||
|
||||
public function test_destroy_fails_if_personal_access_client_is_not_configured(): void
|
||||
{
|
||||
// Arrange
|
||||
$data = $this->createUserWithPermission([]);
|
||||
$client = $this->createPersonalAccessClient();
|
||||
$token = Token::factory()->forUser($data->user)->forClient($client)->create();
|
||||
Passport::actingAs($data->user);
|
||||
|
||||
// Act
|
||||
$response = $this->deleteJson(route('api.v1.api-tokens.destroy', $token->id));
|
||||
|
||||
// Assert
|
||||
$this->assertResponseCode($response, 400);
|
||||
$response->assertExactJson([
|
||||
'error' => true,
|
||||
'key' => 'personal_access_client_is_not_configured',
|
||||
'message' => 'Personal access client is not configured',
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_destroy_fails_if_token_is_not_personal_access_token(): void
|
||||
{
|
||||
// Arrange
|
||||
$data = $this->createUserWithPermission([]);
|
||||
$personalAccessClient = $this->createPersonalAccessClient();
|
||||
Config::set('passport.personal_access_client.id', $personalAccessClient->id);
|
||||
Config::set('passport.personal_access_client.secret', $personalAccessClient->secret);
|
||||
$client = $this->createClient();
|
||||
$token = Token::factory()->forUser($data->user)->forClient($client)->create();
|
||||
Passport::actingAs($data->user);
|
||||
@@ -273,8 +219,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
$data = $this->createUserWithPermission([]);
|
||||
$otherData = $this->createUserWithPermission([]);
|
||||
$client = $this->createPersonalAccessClient();
|
||||
Config::set('passport.personal_access_client.id', $client->id);
|
||||
Config::set('passport.personal_access_client.secret', $client->secret);
|
||||
$token = Token::factory()->forUser($otherData->user)->forClient($client)->create();
|
||||
Passport::actingAs($data->user);
|
||||
|
||||
@@ -292,9 +236,7 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
{
|
||||
$clientRepository = new ClientRepository;
|
||||
/** @var Client $client */
|
||||
$client = $clientRepository->createPersonalAccessClient(
|
||||
null, 'Test Personal Access Client', 'http://localhost'
|
||||
);
|
||||
$client = $clientRepository->createPersonalAccessGrantClient('Test Personal Access Client');
|
||||
|
||||
return $client;
|
||||
}
|
||||
@@ -303,8 +245,9 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract
|
||||
{
|
||||
$clientRepository = new ClientRepository;
|
||||
/** @var Client $client */
|
||||
$client = $clientRepository->create(
|
||||
null, 'Desktop App', 'http://localhost', null
|
||||
$client = $clientRepository->createAuthorizationCodeGrantClient(
|
||||
name: 'Desktop App',
|
||||
redirectUris: ['http://localhost']
|
||||
);
|
||||
|
||||
return $client;
|
||||
|
||||
@@ -7,11 +7,9 @@ namespace Tests\Unit\Endpoint\Api\V1;
|
||||
use App\Http\Controllers\Api\V1\CurrencyController;
|
||||
use App\Service\CurrencyService;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(CurrencyController::class)]
|
||||
#[CoversClass(CurrencyService::class)]
|
||||
#[UsesClass(CurrencyController::class)]
|
||||
class CurrencyEndpointTest extends ApiEndpointTestAbstract
|
||||
{
|
||||
public function test_index_return_list_of_available_currencies_incl_symbol(): void
|
||||
|
||||
@@ -10,10 +10,8 @@ use App\Models\Organization;
|
||||
use App\Models\User;
|
||||
use Inertia\Testing\AssertableInertia as Assert;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(DashboardController::class)]
|
||||
#[UsesClass(DashboardController::class)]
|
||||
class DashboardEndpointTest extends EndpointTestAbstract
|
||||
{
|
||||
public function test_showing_dashboard_succeeds_for_empty_user(): void
|
||||
|
||||
@@ -7,10 +7,8 @@ namespace Tests\Unit\Endpoint\Web;
|
||||
use App\Http\Controllers\Web\HealthCheckController;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(HealthCheckController::class)]
|
||||
#[UsesClass(HealthCheckController::class)]
|
||||
class HealthCheckEndpointTest extends EndpointTestAbstract
|
||||
{
|
||||
public function test_up_endpoint_returns_ok(): void
|
||||
|
||||
@@ -9,12 +9,10 @@ use App\Http\Middleware\Authenticate;
|
||||
use App\Http\Middleware\RedirectIfAuthenticated;
|
||||
use App\Models\User;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(HomeController::class)]
|
||||
#[CoversClass(Authenticate::class)]
|
||||
#[CoversClass(RedirectIfAuthenticated::class)]
|
||||
#[UsesClass(HomeController::class)]
|
||||
class HomeEndpointTest extends EndpointTestAbstract
|
||||
{
|
||||
public function test_index_redirects_to_dashboard_if_user_is_logged_in(): void
|
||||
|
||||
@@ -8,11 +8,9 @@ use App\Mail\OrganizationInvitationMail;
|
||||
use App\Models\Organization;
|
||||
use App\Models\OrganizationInvitation;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(OrganizationInvitationMail::class)]
|
||||
#[UsesClass(OrganizationInvitationMail::class)]
|
||||
class OrganizationInvitationMailTest extends TestCaseWithDatabase
|
||||
{
|
||||
public function test_mail_renders_content_correctly(): void
|
||||
|
||||
@@ -7,11 +7,9 @@ namespace Tests\Unit\Mail;
|
||||
use App\Mail\TimeEntryStillRunningMail;
|
||||
use App\Models\TimeEntry;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(TimeEntryStillRunningMail::class)]
|
||||
#[UsesClass(TimeEntryStillRunningMail::class)]
|
||||
class TimeEntryStillRunningMailTest extends TestCaseWithDatabase
|
||||
{
|
||||
public function test_mail_renders_content_correctly(): void
|
||||
|
||||
@@ -14,10 +14,8 @@ use Illuminate\Support\Str;
|
||||
use Laravel\Passport\Passport;
|
||||
use Mockery\MockInterface;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(CheckOrganizationBlocked::class)]
|
||||
#[UsesClass(CheckOrganizationBlocked::class)]
|
||||
class CheckOrganizationBlockedMiddlewareTest extends MiddlewareTestAbstract
|
||||
{
|
||||
private function createTestRoute(): void
|
||||
|
||||
@@ -8,10 +8,8 @@ use App\Http\Middleware\EnsureEmailIsVerified;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(EnsureEmailIsVerified::class)]
|
||||
#[UsesClass(EnsureEmailIsVerified::class)]
|
||||
class EnsureEmailIsVerifiedMiddlewareTest extends MiddlewareTestAbstract
|
||||
{
|
||||
private function createTestRoute(): string
|
||||
|
||||
@@ -8,10 +8,8 @@ use App\Http\Middleware\ForceHttps;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(ForceHttps::class)]
|
||||
#[UsesClass(ForceHttps::class)]
|
||||
class ForceHttpsMiddlewareTest extends MiddlewareTestAbstract
|
||||
{
|
||||
private function createTestRoute(): string
|
||||
|
||||
@@ -14,10 +14,8 @@ use Inertia\Testing\AssertableInertia as Assert;
|
||||
use Laravel\Passport\Passport;
|
||||
use Mockery\MockInterface;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(HandleInertiaRequests::class)]
|
||||
#[UsesClass(HandleInertiaRequests::class)]
|
||||
class HandleInertiaRequestsMiddlewareTest extends MiddlewareTestAbstract
|
||||
{
|
||||
private function createTestRoute(): string
|
||||
|
||||
@@ -8,10 +8,8 @@ use App\Models\Client;
|
||||
use App\Models\Organization;
|
||||
use App\Models\Project;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(Client::class)]
|
||||
#[UsesClass(Client::class)]
|
||||
class ClientModelTest extends ModelTestAbstract
|
||||
{
|
||||
public function test_it_belongs_to_a_organization(): void
|
||||
|
||||
@@ -10,10 +10,8 @@ use App\Models\Project;
|
||||
use App\Models\ProjectMember;
|
||||
use App\Models\User;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(Member::class)]
|
||||
#[UsesClass(Member::class)]
|
||||
class MemberModelTest extends ModelTestAbstract
|
||||
{
|
||||
public function test_it_belongs_to_a_user(): void
|
||||
|
||||
@@ -7,10 +7,8 @@ namespace Tests\Unit\Model;
|
||||
use App\Models\Member;
|
||||
use App\Models\Organization;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(Organization::class)]
|
||||
#[UsesClass(Organization::class)]
|
||||
class OrganizationModelTest extends ModelTestAbstract
|
||||
{
|
||||
public function test_it_has_many_members(): void
|
||||
|
||||
@@ -9,10 +9,8 @@ use App\Models\Organization;
|
||||
use App\Models\Project;
|
||||
use App\Models\ProjectMember;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(ProjectMember::class)]
|
||||
#[UsesClass(ProjectMember::class)]
|
||||
class ProjectMemberModelTest extends ModelTestAbstract
|
||||
{
|
||||
public function test_it_belongs_to_a_project(): void
|
||||
|
||||
@@ -13,10 +13,8 @@ use App\Models\Task;
|
||||
use App\Models\TimeEntry;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(Project::class)]
|
||||
#[UsesClass(Project::class)]
|
||||
class ProjectModelTest extends ModelTestAbstract
|
||||
{
|
||||
public function test_it_belongs_to_a_organization(): void
|
||||
|
||||
@@ -8,10 +8,8 @@ use App\Models\Organization;
|
||||
use App\Models\Report;
|
||||
use App\Service\ReportService;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(Report::class)]
|
||||
#[UsesClass(Report::class)]
|
||||
class ReportModelTest extends ModelTestAbstract
|
||||
{
|
||||
public function test_it_belongs_to_a_organization(): void
|
||||
|
||||
@@ -8,10 +8,8 @@ use App\Models\Organization;
|
||||
use App\Models\Tag;
|
||||
use App\Models\TimeEntry;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(Tag::class)]
|
||||
#[UsesClass(Tag::class)]
|
||||
class TagModelTest extends ModelTestAbstract
|
||||
{
|
||||
public function test_it_belongs_to_a_organization(): void
|
||||
|
||||
@@ -11,10 +11,8 @@ use App\Models\ProjectMember;
|
||||
use App\Models\Task;
|
||||
use App\Models\TimeEntry;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(Task::class)]
|
||||
#[UsesClass(Task::class)]
|
||||
class TaskModelTest extends ModelTestAbstract
|
||||
{
|
||||
public function test_it_belongs_to_a_organization(): void
|
||||
|
||||
@@ -12,10 +12,8 @@ use App\Models\TimeEntry;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Carbon;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(TimeEntry::class)]
|
||||
#[UsesClass(TimeEntry::class)]
|
||||
class TimeEntryModelTest extends ModelTestAbstract
|
||||
{
|
||||
public function test_it_belongs_to_a_user(): void
|
||||
|
||||
@@ -7,20 +7,18 @@ namespace Tests\Unit\Model;
|
||||
use App\Enums\Role;
|
||||
use App\Models\Member;
|
||||
use App\Models\Organization;
|
||||
use App\Models\Passport\AuthCode;
|
||||
use App\Models\Passport\Client;
|
||||
use App\Models\Passport\Token;
|
||||
use App\Models\ProjectMember;
|
||||
use App\Models\TimeEntry;
|
||||
use App\Models\User;
|
||||
use App\Providers\Filament\AdminPanelProvider;
|
||||
use Filament\Panel;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Laravel\Passport\AuthCode;
|
||||
use Laravel\Passport\Client;
|
||||
use Laravel\Passport\Token;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(User::class)]
|
||||
#[UsesClass(User::class)]
|
||||
class UserModelTest extends ModelTestAbstract
|
||||
{
|
||||
public function test_normal_user_can_not_access_admin_panel(): void
|
||||
@@ -148,9 +146,8 @@ class UserModelTest extends ModelTestAbstract
|
||||
$user = User::factory()->create();
|
||||
$client = new Client;
|
||||
$client->name = 'desktop';
|
||||
$client->redirect = 'solidtime://oauth/callback';
|
||||
$client->personal_access_client = false;
|
||||
$client->password_client = false;
|
||||
$client->redirect_uris = ['solidtime://oauth/callback'];
|
||||
$client->grant_types = [];
|
||||
$client->revoked = false;
|
||||
$client->save();
|
||||
$token = new Token;
|
||||
@@ -179,9 +176,8 @@ class UserModelTest extends ModelTestAbstract
|
||||
$user = User::factory()->create();
|
||||
$client = new Client;
|
||||
$client->name = 'desktop';
|
||||
$client->redirect = 'solidtime://oauth/callback';
|
||||
$client->personal_access_client = false;
|
||||
$client->password_client = false;
|
||||
$client->redirect_uris = 'solidtime://oauth/callback';
|
||||
$client->grant_types = [];
|
||||
$client->revoked = false;
|
||||
$client->save();
|
||||
$authCode = new AuthCode;
|
||||
|
||||
@@ -7,11 +7,9 @@ namespace Tests\Unit\Rules;
|
||||
use App\Rules\ColorRule;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(ColorRule::class)]
|
||||
#[UsesClass(ColorRule::class)]
|
||||
class ColorRuleTest extends TestCase
|
||||
{
|
||||
public function test_validation_passes_if_value_is_valid_color(): void
|
||||
|
||||
@@ -7,11 +7,9 @@ namespace Tests\Unit\Rules;
|
||||
use App\Rules\CurrencyRule;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(CurrencyRule::class)]
|
||||
#[UsesClass(CurrencyRule::class)]
|
||||
class CurrencyRuleTest extends TestCase
|
||||
{
|
||||
public function test_validation_passes_if_value_is_valid_currency_code(): void
|
||||
|
||||
@@ -14,11 +14,9 @@ use App\Service\BillableRateService;
|
||||
use DB;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(BillableRateService::class)]
|
||||
#[UsesClass(BillableRateService::class)]
|
||||
class BillableRateServiceTest extends TestCaseWithDatabase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
@@ -8,11 +8,9 @@ use App\Service\CurrencyService;
|
||||
use Brick\Money\Currency;
|
||||
use Brick\Money\Money;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(CurrencyService::class)]
|
||||
#[UsesClass(CurrencyService::class)]
|
||||
class CurrencyServiceTest extends TestCaseWithDatabase
|
||||
{
|
||||
private CurrencyService $currencyService;
|
||||
|
||||
@@ -16,11 +16,9 @@ use App\Service\DashboardService;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Carbon;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(DashboardService::class)]
|
||||
#[UsesClass(DashboardService::class)]
|
||||
class DashboardServiceTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
@@ -24,12 +24,10 @@ use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
use TiMacDonald\Log\LogEntry;
|
||||
|
||||
#[CoversClass(DeletionService::class)]
|
||||
#[UsesClass(DeletionService::class)]
|
||||
class DeletionServiceTest extends TestCaseWithDatabase
|
||||
{
|
||||
private DeletionService $deletionService;
|
||||
|
||||
@@ -17,11 +17,9 @@ use App\Models\User;
|
||||
use App\Service\Export\ExportService;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(ExportService::class)]
|
||||
#[UsesClass(ExportService::class)]
|
||||
class ExportServiceTest extends TestCaseWithDatabase
|
||||
{
|
||||
private function getFullOrganization(): Organization
|
||||
|
||||
@@ -11,11 +11,9 @@ use App\Service\Import\ImportDatabaseHelper;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Str;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(ImportDatabaseHelper::class)]
|
||||
#[UsesClass(ImportDatabaseHelper::class)]
|
||||
class ImportDatabaseHelperTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
@@ -12,12 +12,10 @@ use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(ImportService::class)]
|
||||
#[CoversClass(ImporterProvider::class)]
|
||||
#[UsesClass(ImportService::class)]
|
||||
class ImportServiceTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
@@ -10,12 +10,10 @@ use App\Service\Import\Importers\DefaultImporter;
|
||||
use App\Service\Import\Importers\ImportException;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(ClockifyProjectsImporter::class)]
|
||||
#[CoversClass(ImportException::class)]
|
||||
#[CoversClass(DefaultImporter::class)]
|
||||
#[UsesClass(ClockifyProjectsImporter::class)]
|
||||
class ClockifyProjectsImporterTest extends ImporterTestAbstract
|
||||
{
|
||||
public function test_import_of_test_file_succeeds(): void
|
||||
|
||||
@@ -11,12 +11,10 @@ use App\Service\Import\Importers\DefaultImporter;
|
||||
use App\Service\Import\Importers\ImportException;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(ClockifyTimeEntriesImporter::class)]
|
||||
#[CoversClass(ImportException::class)]
|
||||
#[CoversClass(DefaultImporter::class)]
|
||||
#[UsesClass(ClockifyTimeEntriesImporter::class)]
|
||||
class ClockifyTimeEntriesImporterTest extends ImporterTestAbstract
|
||||
{
|
||||
public function test_import_of_test_file_succeeds(): void
|
||||
|
||||
@@ -14,12 +14,10 @@ use App\Service\Import\Importers\GenericProjectsImporter;
|
||||
use App\Service\Import\Importers\ImportException;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(GenericProjectsImporter::class)]
|
||||
#[CoversClass(ImportException::class)]
|
||||
#[CoversClass(DefaultImporter::class)]
|
||||
#[UsesClass(GenericProjectsImporter::class)]
|
||||
class GenericProjectsImporterTest extends ImporterTestAbstract
|
||||
{
|
||||
public function test_import_of_test_file_succeeds(): void
|
||||
|
||||
@@ -10,12 +10,10 @@ use App\Service\Import\Importers\GenericTimeEntriesImporter;
|
||||
use App\Service\Import\Importers\ImportException;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(GenericTimeEntriesImporter::class)]
|
||||
#[CoversClass(ImportException::class)]
|
||||
#[CoversClass(DefaultImporter::class)]
|
||||
#[UsesClass(GenericTimeEntriesImporter::class)]
|
||||
class GenericTimeEntriesImporterTest extends ImporterTestAbstract
|
||||
{
|
||||
public function test_import_of_test_file_succeeds(): void
|
||||
|
||||
@@ -11,12 +11,10 @@ use App\Service\Import\Importers\HarvestClientsImporter;
|
||||
use App\Service\Import\Importers\ImportException;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(HarvestClientsImporter::class)]
|
||||
#[CoversClass(ImportException::class)]
|
||||
#[CoversClass(DefaultImporter::class)]
|
||||
#[UsesClass(HarvestClientsImporter::class)]
|
||||
class HarvestClientsImporterTest extends ImporterTestAbstract
|
||||
{
|
||||
public function test_import_of_test_file_succeeds(): void
|
||||
|
||||
@@ -12,12 +12,10 @@ use App\Service\Import\Importers\HarvestProjectsImporter;
|
||||
use App\Service\Import\Importers\ImportException;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(HarvestProjectsImporter::class)]
|
||||
#[CoversClass(ImportException::class)]
|
||||
#[CoversClass(DefaultImporter::class)]
|
||||
#[UsesClass(HarvestProjectsImporter::class)]
|
||||
class HarvestProjectsImporterTest extends ImporterTestAbstract
|
||||
{
|
||||
public function test_import_of_test_file_succeeds(): void
|
||||
|
||||
@@ -18,12 +18,10 @@ use App\Service\Import\Importers\HarvestTimeEntriesImporter;
|
||||
use App\Service\Import\Importers\ImportException;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(HarvestTimeEntriesImporter::class)]
|
||||
#[CoversClass(ImportException::class)]
|
||||
#[CoversClass(DefaultImporter::class)]
|
||||
#[UsesClass(HarvestTimeEntriesImporter::class)]
|
||||
class HarvestTimeEntriesImporterTest extends ImporterTestAbstract
|
||||
{
|
||||
public function test_import_of_test_file_succeeds(): void
|
||||
|
||||
@@ -7,11 +7,9 @@ namespace Tests\Unit\Service\Import\Importers;
|
||||
use App\Service\Import\Importers\ClockifyProjectsImporter;
|
||||
use App\Service\Import\Importers\ImporterProvider;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(ImporterProvider::class)]
|
||||
#[UsesClass(ImporterProvider::class)]
|
||||
class ImporterProviderTest extends TestCase
|
||||
{
|
||||
public function test_register_importer_can_register_a_new_importer_for_example_in_an_extension(): void
|
||||
|
||||
@@ -14,12 +14,10 @@ use Exception;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Queue;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(SolidtimeImporter::class)]
|
||||
#[CoversClass(ImportException::class)]
|
||||
#[CoversClass(DefaultImporter::class)]
|
||||
#[UsesClass(SolidtimeImporter::class)]
|
||||
class SolidtimeImporterTest extends ImporterTestAbstract
|
||||
{
|
||||
public function test_import_throws_exception_if_data_is_not_zip(): void
|
||||
|
||||
@@ -11,12 +11,10 @@ use App\Service\Import\Importers\ImportException;
|
||||
use App\Service\Import\Importers\TogglDataImporter;
|
||||
use Exception;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(TogglDataImporter::class)]
|
||||
#[CoversClass(ImportException::class)]
|
||||
#[CoversClass(DefaultImporter::class)]
|
||||
#[UsesClass(TogglDataImporter::class)]
|
||||
class TogglDataImporterTest extends ImporterTestAbstract
|
||||
{
|
||||
public function test_import_throws_exception_if_data_is_not_zip(): void
|
||||
|
||||
@@ -15,12 +15,10 @@ use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Queue;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
|
||||
#[CoversClass(TogglTimeEntriesImporter::class)]
|
||||
#[CoversClass(ImportException::class)]
|
||||
#[CoversClass(DefaultImporter::class)]
|
||||
#[UsesClass(TogglTimeEntriesImporter::class)]
|
||||
class TogglTimeEntriesImporterTest extends ImporterTestAbstract
|
||||
{
|
||||
public function test_import_of_test_file_succeeds(): void
|
||||
|
||||
@@ -15,11 +15,9 @@ use Brick\Money\Money;
|
||||
use Carbon\CarbonInterval;
|
||||
use Illuminate\Support\Carbon;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(LocalizationService::class)]
|
||||
#[UsesClass(LocalizationService::class)]
|
||||
class LocalizationServiceTest extends TestCaseWithDatabase
|
||||
{
|
||||
private LocalizationService $localizationService;
|
||||
|
||||
@@ -15,12 +15,10 @@ use App\Service\MemberService;
|
||||
use App\Service\UserService;
|
||||
use InvalidArgumentException;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(MemberService::class)]
|
||||
#[CoversClass(UserService::class)]
|
||||
#[UsesClass(MemberService::class)]
|
||||
class MemberServiceTest extends TestCaseWithDatabase
|
||||
{
|
||||
private MemberService $memberService;
|
||||
|
||||
@@ -11,11 +11,9 @@ use App\Service\PermissionStore;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Laravel\Jetstream\Jetstream;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(PermissionStore::class)]
|
||||
#[UsesClass(PermissionStore::class)]
|
||||
class PermissionStoreTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
@@ -12,11 +12,9 @@ use App\Models\TimeEntry;
|
||||
use App\Service\TimeEntryAggregationService;
|
||||
use Illuminate\Support\Carbon;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(TimeEntryAggregationService::class)]
|
||||
#[UsesClass(TimeEntryAggregationService::class)]
|
||||
class TimeEntryAggregationServiceTest extends TestCaseWithDatabase
|
||||
{
|
||||
private TimeEntryAggregationService $service;
|
||||
|
||||
@@ -8,11 +8,9 @@ use App\Models\Tag;
|
||||
use App\Models\TimeEntry;
|
||||
use App\Service\TimeEntryFilter;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCaseWithDatabase;
|
||||
|
||||
#[CoversClass(TimeEntryFilter::class)]
|
||||
#[UsesClass(TimeEntryFilter::class)]
|
||||
class TimeEntryFilterTest extends TestCaseWithDatabase
|
||||
{
|
||||
public function test_add_tag_ids_filter_is_or(): void
|
||||
|
||||
@@ -9,12 +9,10 @@ use App\Service\TimezoneService;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
use TiMacDonald\Log\LogEntry;
|
||||
|
||||
#[CoversClass(TimezoneService::class)]
|
||||
#[UsesClass(TimezoneService::class)]
|
||||
class TimezoneServiceTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
@@ -14,11 +14,9 @@ use App\Models\User;
|
||||
use App\Service\UserService;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\UsesClass;
|
||||
use Tests\TestCase;
|
||||
|
||||
#[CoversClass(UserService::class)]
|
||||
#[UsesClass(UserService::class)]
|
||||
class UserServiceTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
Reference in New Issue
Block a user