refactor: Update type hints and class references across various files for improved clarity and consistency.

This commit is contained in:
Yoga Pangestu 2026-03-13 10:24:08 +07:00
parent f2aad0198a
commit 1c756ab54f
22 changed files with 136 additions and 69 deletions

View File

@ -13,7 +13,7 @@ class TrackVisitor
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
* @param Closure(Request): (Response) $next
*/
public function handle(Request $request, Closure $next): Response
{

View File

@ -5,6 +5,7 @@
use App\Settings\GeneralSettings;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Attachment;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
@ -55,7 +56,7 @@ public function content(): Content
/**
* Get the attachments for the message.
*
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
* @return array<int, Attachment>
*/
public function attachments(): array
{

View File

@ -6,6 +6,8 @@
use App\Models\MediaMonitoring;
use Carbon\Carbon;
use Illuminate\Http\Client\Pool;
use Illuminate\Http\Client\Response;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
@ -57,7 +59,7 @@ public function crawlFromGoogleNews(string $keyword, int $limit = 10, array $the
$parsedData = [];
foreach ($resolvedLinks as $key => $res) {
// Check if $res is a response or an exception (ConnectionException)
$originalLink = ($res instanceof \Illuminate\Http\Client\Response && $res->successful())
$originalLink = ($res instanceof Response && $res->successful())
? (string) $res->effectiveUri()
: $items[$key]['google_link'];
@ -84,7 +86,7 @@ public function crawlFromGoogleNews(string $keyword, int $limit = 10, array $the
$itemData = $parsedData[$key];
$extra = ['writer' => 'Redaksi', 'content' => null];
if ($res instanceof \Illuminate\Http\Client\Response && $res->successful()) {
if ($res instanceof Response && $res->successful()) {
$crawler = new Crawler($res->body());
$extra['writer'] = $this->extractWriter($crawler);
$extra['content'] = $this->extractContent($crawler);
@ -227,7 +229,7 @@ private function cleanContent(?string $content): string
private function generateCode(): string
{
// Use a lock-safe approach for sequential code
return \Illuminate\Support\Facades\DB::transaction(function () {
return DB::transaction(function () {
$latestCode = MediaMonitoring::where('code', 'LIKE', 'ADN%')
->lockForUpdate()
->orderBy('code', 'desc')

View File

@ -1,5 +1,6 @@
<?php
use App\Http\Middleware\ValidateSignatureFlexible;
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
@ -13,7 +14,7 @@
)
->withMiddleware(function (Middleware $middleware): void {
$middleware->alias([
'signed' => \App\Http\Middleware\ValidateSignatureFlexible::class,
'signed' => ValidateSignatureFlexible::class,
]);
$middleware->trustProxies(

View File

@ -1,7 +1,11 @@
<?php
use App\Providers\AppServiceProvider;
use App\Providers\Filament\DashboardPanelProvider;
use App\Providers\ViewServiceProvider;
return [
App\Providers\AppServiceProvider::class,
App\Providers\Filament\DashboardPanelProvider::class,
App\Providers\ViewServiceProvider::class,
AppServiceProvider::class,
DashboardPanelProvider::class,
ViewServiceProvider::class,
];

View File

@ -1,5 +1,7 @@
<?php
use App\Models\User;
return [
/*
@ -62,7 +64,7 @@
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => env('AUTH_MODEL', App\Models\User::class),
'model' => env('AUTH_MODEL', User::class),
],
// 'users' => [

View File

@ -1,5 +1,10 @@
<?php
use BezhanSalleh\FilamentShield\Resources\Roles\RoleResource;
use Filament\Pages\Dashboard;
use Filament\Widgets\AccountWidget;
use Filament\Widgets\FilamentInfoWidget;
return [
/*
@ -163,7 +168,7 @@
'resources' => [
'subject' => 'model',
'manage' => [
\BezhanSalleh\FilamentShield\Resources\Roles\RoleResource::class => [
RoleResource::class => [
'viewAny',
'view',
'create',
@ -191,7 +196,7 @@
'subject' => 'class',
'prefix' => 'view',
'exclude' => [
\Filament\Pages\Dashboard::class,
Dashboard::class,
],
],
@ -210,8 +215,8 @@
'subject' => 'class',
'prefix' => 'view',
'exclude' => [
\Filament\Widgets\AccountWidget::class,
\Filament\Widgets\FilamentInfoWidget::class,
AccountWidget::class,
FilamentInfoWidget::class,
],
],

View File

@ -1,5 +1,31 @@
<?php
use App\MediaLibrary\CustomPathGenerator;
use Spatie\ImageOptimizer\Optimizers\Avifenc;
use Spatie\ImageOptimizer\Optimizers\Cwebp;
use Spatie\ImageOptimizer\Optimizers\Gifsicle;
use Spatie\ImageOptimizer\Optimizers\Jpegoptim;
use Spatie\ImageOptimizer\Optimizers\Optipng;
use Spatie\ImageOptimizer\Optimizers\Pngquant;
use Spatie\ImageOptimizer\Optimizers\Svgo;
use Spatie\MediaLibrary\Conversions\ImageGenerators\Avif;
use Spatie\MediaLibrary\Conversions\ImageGenerators\Image;
use Spatie\MediaLibrary\Conversions\ImageGenerators\Pdf;
use Spatie\MediaLibrary\Conversions\ImageGenerators\Svg;
use Spatie\MediaLibrary\Conversions\ImageGenerators\Video;
use Spatie\MediaLibrary\Conversions\ImageGenerators\Webp;
use Spatie\MediaLibrary\Conversions\Jobs\PerformConversionsJob;
use Spatie\MediaLibrary\Downloaders\DefaultDownloader;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
use Spatie\MediaLibrary\MediaCollections\Models\Observers\MediaObserver;
use Spatie\MediaLibrary\ResponsiveImages\Jobs\GenerateResponsiveImagesJob;
use Spatie\MediaLibrary\ResponsiveImages\TinyPlaceholderGenerator\Blurred;
use Spatie\MediaLibrary\ResponsiveImages\WidthCalculator\FileSizeOptimizedWidthCalculator;
use Spatie\MediaLibrary\Support\FileNamer\DefaultFileNamer;
use Spatie\MediaLibrary\Support\FileRemover\DefaultFileRemover;
use Spatie\MediaLibrary\Support\UrlGenerator\DefaultUrlGenerator;
use Spatie\MediaLibraryPro\Models\TemporaryUpload;
return [
/*
@ -39,12 +65,12 @@
/*
* The fully qualified class name of the media model.
*/
'media_model' => Spatie\MediaLibrary\MediaCollections\Models\Media::class,
'media_model' => Media::class,
/*
* The fully qualified class name of the media observer.
*/
'media_observer' => Spatie\MediaLibrary\MediaCollections\Models\Observers\MediaObserver::class,
'media_observer' => MediaObserver::class,
/*
* When enabled, media collections will be serialised using the default
@ -59,7 +85,7 @@
*
* This model is only used in Media Library Pro (https://medialibrary.pro)
*/
'temporary_upload_model' => Spatie\MediaLibraryPro\Models\TemporaryUpload::class,
'temporary_upload_model' => TemporaryUpload::class,
/*
* When enabled, Media Library Pro will only process temporary uploads that were uploaded
@ -76,17 +102,17 @@
/*
* This is the class that is responsible for naming generated files.
*/
'file_namer' => Spatie\MediaLibrary\Support\FileNamer\DefaultFileNamer::class,
'file_namer' => DefaultFileNamer::class,
/*
* The class that contains the strategy for determining a media file's path.
*/
'path_generator' => App\MediaLibrary\CustomPathGenerator::class,
'path_generator' => CustomPathGenerator::class,
/*
* The class that contains the strategy for determining how to remove files.
*/
'file_remover_class' => Spatie\MediaLibrary\Support\FileRemover\DefaultFileRemover::class,
'file_remover_class' => DefaultFileRemover::class,
/*
* Here you can specify which path generator should be used for the given class.
@ -101,7 +127,7 @@
* When urls to files get generated, this class will be called. Use the default
* if your files are stored locally above the site root or on s3.
*/
'url_generator' => Spatie\MediaLibrary\Support\UrlGenerator\DefaultUrlGenerator::class,
'url_generator' => DefaultUrlGenerator::class,
/*
* Moves media on updating to keep path consistent. Enable it only with a custom
@ -121,34 +147,34 @@
* the optimizers that will be used by default.
*/
'image_optimizers' => [
Spatie\ImageOptimizer\Optimizers\Jpegoptim::class => [
Jpegoptim::class => [
'-m85', // set maximum quality to 85%
'--force', // ensure that progressive generation is always done also if a little bigger
'--strip-all', // this strips out all text information such as comments and EXIF data
'--all-progressive', // this will make sure the resulting image is a progressive one
],
Spatie\ImageOptimizer\Optimizers\Pngquant::class => [
Pngquant::class => [
'--force', // required parameter for this package
],
Spatie\ImageOptimizer\Optimizers\Optipng::class => [
Optipng::class => [
'-i0', // this will result in a non-interlaced, progressive scanned image
'-o2', // this set the optimization level to two (multiple IDAT compression trials)
'-quiet', // required parameter for this package
],
Spatie\ImageOptimizer\Optimizers\Svgo::class => [
Svgo::class => [
'--disable=cleanupIDs', // disabling because it is known to cause troubles
],
Spatie\ImageOptimizer\Optimizers\Gifsicle::class => [
Gifsicle::class => [
'-b', // required parameter for this package
'-O3', // this produces the slowest but best results
],
Spatie\ImageOptimizer\Optimizers\Cwebp::class => [
Cwebp::class => [
'-m 6', // for the slowest compression method in order to get the best compression.
'-pass 10', // for maximizing the amount of analysis pass.
'-mt', // multithreading for some speed improvements.
'-q 90', // quality factor that brings the least noticeable changes.
],
Spatie\ImageOptimizer\Optimizers\Avifenc::class => [
Avifenc::class => [
'-a cq-level=23', // constant quality level, lower values mean better quality and greater file size (0-63).
'-j all', // number of jobs (worker threads, "all" uses all available cores).
'--min 0', // min quantizer for color (0-63).
@ -164,12 +190,12 @@
* These generators will be used to create an image of media files.
*/
'image_generators' => [
Spatie\MediaLibrary\Conversions\ImageGenerators\Image::class,
Spatie\MediaLibrary\Conversions\ImageGenerators\Webp::class,
Spatie\MediaLibrary\Conversions\ImageGenerators\Avif::class,
Spatie\MediaLibrary\Conversions\ImageGenerators\Pdf::class,
Spatie\MediaLibrary\Conversions\ImageGenerators\Svg::class,
Spatie\MediaLibrary\Conversions\ImageGenerators\Video::class,
Image::class,
Webp::class,
Avif::class,
Pdf::class,
Svg::class,
Video::class,
],
/*
@ -209,8 +235,8 @@
* your custom jobs extend the ones provided by the package.
*/
'jobs' => [
'perform_conversions' => Spatie\MediaLibrary\Conversions\Jobs\PerformConversionsJob::class,
'generate_responsive_images' => Spatie\MediaLibrary\ResponsiveImages\Jobs\GenerateResponsiveImagesJob::class,
'perform_conversions' => PerformConversionsJob::class,
'generate_responsive_images' => GenerateResponsiveImagesJob::class,
],
/*
@ -218,7 +244,7 @@
* This is particularly useful when the url of the image is behind a firewall and
* need to add additional flags, possibly using curl.
*/
'media_downloader' => Spatie\MediaLibrary\Downloaders\DefaultDownloader::class,
'media_downloader' => DefaultDownloader::class,
/*
* When using the addMediaFromUrl method the SSL is verified by default.
@ -255,7 +281,7 @@
*
* https://docs.spatie.be/laravel-medialibrary/v9/advanced-usage/generating-responsive-images
*/
'width_calculator' => Spatie\MediaLibrary\ResponsiveImages\WidthCalculator\FileSizeOptimizedWidthCalculator::class,
'width_calculator' => FileSizeOptimizedWidthCalculator::class,
/*
* By default rendering media to a responsive image will add some javascript and a tiny placeholder.
@ -268,7 +294,7 @@
* This class will generate the tiny placeholder used for progressive image loading. By default
* the media library will use a tiny blurred jpg image.
*/
'tiny_placeholder_generator' => Spatie\MediaLibrary\ResponsiveImages\TinyPlaceholderGenerator\Blurred::class,
'tiny_placeholder_generator' => Blurred::class,
],
/*

View File

@ -1,5 +1,9 @@
<?php
use Spatie\Permission\DefaultTeamResolver;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
return [
'models' => [
@ -13,7 +17,7 @@
* `Spatie\Permission\Contracts\Permission` contract.
*/
'permission' => Spatie\Permission\Models\Permission::class,
'permission' => Permission::class,
/*
* When using the "HasRoles" trait from this package, we need to know which
@ -24,7 +28,7 @@
* `Spatie\Permission\Contracts\Role` contract.
*/
'role' => Spatie\Permission\Models\Role::class,
'role' => Role::class,
],
@ -136,7 +140,7 @@
/*
* The class to use to resolve the permissions team id
*/
'team_resolver' => \Spatie\Permission\DefaultTeamResolver::class,
'team_resolver' => DefaultTeamResolver::class,
/*
* Passport Client Credentials Grant
@ -183,7 +187,7 @@
* When permissions or roles are updated the cache is flushed automatically.
*/
'expiration_time' => \DateInterval::createFromDateString('24 hours'),
'expiration_time' => DateInterval::createFromDateString('24 hours'),
/*
* The cache key used to store all permissions.

View File

@ -1,5 +1,12 @@
<?php
use Spatie\LaravelData\Data;
use Spatie\LaravelSettings\SettingsCasts\DataCast;
use Spatie\LaravelSettings\SettingsCasts\DateTimeInterfaceCast;
use Spatie\LaravelSettings\SettingsCasts\DateTimeZoneCast;
use Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository;
use Spatie\LaravelSettings\SettingsRepositories\RedisSettingsRepository;
return [
/*
@ -35,13 +42,13 @@
*/
'repositories' => [
'database' => [
'type' => Spatie\LaravelSettings\SettingsRepositories\DatabaseSettingsRepository::class,
'type' => DatabaseSettingsRepository::class,
'model' => null,
'table' => null,
'connection' => null,
],
'redis' => [
'type' => Spatie\LaravelSettings\SettingsRepositories\RedisSettingsRepository::class,
'type' => RedisSettingsRepository::class,
'connection' => null,
'prefix' => null,
],
@ -72,10 +79,10 @@
* your settings class isn't a default PHP type.
*/
'global_casts' => [
DateTimeInterface::class => Spatie\LaravelSettings\SettingsCasts\DateTimeInterfaceCast::class,
DateTimeZone::class => Spatie\LaravelSettings\SettingsCasts\DateTimeZoneCast::class,
DateTimeInterface::class => DateTimeInterfaceCast::class,
DateTimeZone::class => DateTimeZoneCast::class,
// Spatie\DataTransferObject\DataTransferObject::class => Spatie\LaravelSettings\SettingsCasts\DtoCast::class,
Spatie\LaravelData\Data::class => Spatie\LaravelSettings\SettingsCasts\DataCast::class,
Data::class => DataCast::class,
],
/*

View File

@ -2,6 +2,7 @@
use App\Enums\IsActive;
use App\Models\Classification;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -25,13 +26,13 @@
it('has sub classifications relationship', function () {
$classification = Classification::factory()->create();
expect($classification->subClassifications())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\HasMany::class);
expect($classification->subClassifications())->toBeInstanceOf(HasMany::class);
});
it('has content recaps relationship', function () {
$classification = Classification::factory()->create();
expect($classification->contentRecaps())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\HasMany::class);
expect($classification->contentRecaps())->toBeInstanceOf(HasMany::class);
});
it('scopes active classifications', function () {

View File

@ -1,6 +1,9 @@
<?php
use App\Models\Company;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -26,18 +29,18 @@
it('belongs to user', function () {
$company = Company::factory()->create();
expect($company->user())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($company->user())->toBeInstanceOf(BelongsTo::class);
});
it('has one partner media', function () {
$company = Company::factory()->create();
expect($company->partnerMedia())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\HasOne::class);
expect($company->partnerMedia())->toBeInstanceOf(HasOne::class);
});
it('has many journalists through partner media', function () {
$company = Company::factory()->create();
expect($company->journalists())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\HasManyThrough::class);
expect($company->journalists())->toBeInstanceOf(HasManyThrough::class);
});
});

View File

@ -2,6 +2,7 @@
use App\Enums\ContentType;
use App\Models\ContentRecap;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -25,7 +26,7 @@
it('belongs to classification', function () {
$recap = ContentRecap::factory()->create();
expect($recap->classification())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($recap->classification())->toBeInstanceOf(BelongsTo::class);
});
it('casts type to content type enum', function () {

View File

@ -2,6 +2,7 @@
use App\Enums\IssueSentiment;
use App\Models\IssueManagement;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -29,31 +30,31 @@
it('belongs to location', function () {
$issue = IssueManagement::factory()->create();
expect($issue->location())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($issue->location())->toBeInstanceOf(BelongsTo::class);
});
it('belongs to sub location', function () {
$issue = IssueManagement::factory()->create();
expect($issue->subLocation())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($issue->subLocation())->toBeInstanceOf(BelongsTo::class);
});
it('belongs to classification', function () {
$issue = IssueManagement::factory()->create();
expect($issue->classification())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($issue->classification())->toBeInstanceOf(BelongsTo::class);
});
it('belongs to sub classification', function () {
$issue = IssueManagement::factory()->create();
expect($issue->subClassification())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($issue->subClassification())->toBeInstanceOf(BelongsTo::class);
});
it('belongs to media monitoring', function () {
$issue = IssueManagement::factory()->create();
expect($issue->mediaMonitoring())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($issue->mediaMonitoring())->toBeInstanceOf(BelongsTo::class);
});
it('casts sentiment enums correctly', function () {

View File

@ -1,6 +1,7 @@
<?php
use App\Models\Journalist;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -26,6 +27,6 @@
it('belongs to partner media', function () {
$journalist = Journalist::factory()->create();
expect($journalist->partnerMedia())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($journalist->partnerMedia())->toBeInstanceOf(BelongsTo::class);
});
});

View File

@ -2,6 +2,7 @@
use App\Enums\IsActive;
use App\Models\Location;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -25,7 +26,7 @@
it('has sub locations relationship', function () {
$location = Location::factory()->create();
expect($location->subLocations())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\HasMany::class);
expect($location->subLocations())->toBeInstanceOf(HasMany::class);
});
it('casts is_active to enum', function () {

View File

@ -2,6 +2,8 @@
use App\Models\MediaMonitoring;
use App\Models\Theme;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -27,13 +29,13 @@
it('has themes relationship', function () {
$mediaMonitoring = MediaMonitoring::factory()->create();
expect($mediaMonitoring->themes())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsToMany::class);
expect($mediaMonitoring->themes())->toBeInstanceOf(BelongsToMany::class);
});
it('has issue management relationship', function () {
$mediaMonitoring = MediaMonitoring::factory()->create();
expect($mediaMonitoring->issueManagement())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\HasOne::class);
expect($mediaMonitoring->issueManagement())->toBeInstanceOf(HasOne::class);
});
it('can attach themes', function () {

View File

@ -1,6 +1,7 @@
<?php
use App\Models\MediaMonitoringTheme;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -23,12 +24,12 @@
it('belongs to media monitoring', function () {
$pivot = MediaMonitoringTheme::factory()->create();
expect($pivot->mediaMonitoring())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($pivot->mediaMonitoring())->toBeInstanceOf(BelongsTo::class);
});
it('belongs to theme', function () {
$pivot = MediaMonitoringTheme::factory()->create();
expect($pivot->theme())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($pivot->theme())->toBeInstanceOf(BelongsTo::class);
});
});

View File

@ -3,6 +3,7 @@
use App\Enums\MediaClassification;
use App\Enums\MediaType;
use App\Models\PartnerMedia;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -26,7 +27,7 @@
it('belongs to company', function () {
$partner = PartnerMedia::factory()->create();
expect($partner->company())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($partner->company())->toBeInstanceOf(BelongsTo::class);
});
it('casts type to media type enum', function () {

View File

@ -2,6 +2,7 @@
use App\Enums\IsActive;
use App\Models\SubClassification;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -25,7 +26,7 @@
it('belongs to classification', function () {
$subClassification = SubClassification::factory()->create();
expect($subClassification->classification())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($subClassification->classification())->toBeInstanceOf(BelongsTo::class);
});
it('casts is_active to enum', function () {

View File

@ -2,6 +2,7 @@
use App\Enums\IsActive;
use App\Models\SubLocation;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -25,7 +26,7 @@
it('belongs to location', function () {
$subLocation = SubLocation::factory()->create();
expect($subLocation->location())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsTo::class);
expect($subLocation->location())->toBeInstanceOf(BelongsTo::class);
});
it('casts is_active to enum', function () {

View File

@ -2,6 +2,7 @@
use App\Enums\IsActive;
use App\Models\Theme;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
@ -25,7 +26,7 @@
it('has media monitorings relationship', function () {
$theme = Theme::factory()->create();
expect($theme->mediaMonitorings())->toBeInstanceOf(\Illuminate\Database\Eloquent\Relations\BelongsToMany::class);
expect($theme->mediaMonitorings())->toBeInstanceOf(BelongsToMany::class);
});
it('scopes active themes', function () {