diff --git a/app/Anime.php b/app/Anime.php index f440f47..11e3c92 100644 --- a/app/Anime.php +++ b/app/Anime.php @@ -3,6 +3,8 @@ namespace App; use App\Http\HttpHelper; +use Database\Factories\AnimeFactory; +use Illuminate\Support\Facades\App; use Jikan\Jikan; use Jikan\Request\Anime\AnimeRequest; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -215,4 +217,9 @@ class Anime extends JikanApiSearchableModel ], ]; } + + protected static function newFactory() + { + return App::make(AnimeFactory::class); + } } diff --git a/app/Manga.php b/app/Manga.php index 90e23fa..631ed1e 100644 --- a/app/Manga.php +++ b/app/Manga.php @@ -3,6 +3,8 @@ namespace App; use App\Http\HttpHelper; +use Database\Factories\MangaFactory; +use Illuminate\Support\Facades\App; use Jikan\Jikan; use Jikan\Request\Manga\MangaRequest; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -138,4 +140,9 @@ class Manga extends JikanApiSearchableModel ], ]; } + + protected static function newFactory() + { + return App::make(MangaFactory::class); + } } diff --git a/database/factories/AnimeModelFactoryDescriptor.php b/database/factories/AnimeModelFactoryDescriptor.php index 591566e..9f7d228 100644 --- a/database/factories/AnimeModelFactoryDescriptor.php +++ b/database/factories/AnimeModelFactoryDescriptor.php @@ -43,4 +43,9 @@ class AnimeModelFactoryDescriptor implements MediaModelFactoryDescriptor { return GenreAnime::factory($count, $state); } + + public function activityMarkerLogicalKeyName(): string + { + return "airing"; + } } diff --git a/database/factories/JikanMediaModelFactory.php b/database/factories/JikanMediaModelFactory.php index 9894f02..8bb71f4 100644 --- a/database/factories/JikanMediaModelFactory.php +++ b/database/factories/JikanMediaModelFactory.php @@ -16,26 +16,33 @@ abstract class JikanMediaModelFactory extends JikanModelFactory implements Media protected ?MediaModelFactoryDescriptor $descriptor; - protected function configureInternal(): self + public function __construct( + MediaModelFactoryDescriptor $descriptor, + ?int $count = null, + ?Collection $states = null, + ?Collection $has = null, + ?Collection $for = null, + ?Collection $afterMaking = null, + ?Collection $afterCreating = null, + $connection = null, + ?Collection $recycle = null) { - // contextual binding / service location - App::call([$this, "withMediaModelFactoryDescriptor"]); - return $this; - } - - public function configure() - { - return $this->configureInternal(); + parent::__construct($count, $states, $has, $for, $afterMaking, $afterCreating, $connection, $recycle); + $this->descriptor = $descriptor; } protected function newInstance(array $arguments = []): self { - return parent::newInstance($arguments)->configureInternal(); - } - - public function withMediaModelFactoryDescriptor(MediaModelFactoryDescriptor $descriptor): void - { - $this->descriptor = $descriptor; + return App::makeWith(static::class, array_merge([ + 'count' => $this->count, + 'states' => $this->states, + 'has' => $this->has, + 'for' => $this->for, + 'afterMaking' => $this->afterMaking, + 'afterCreating' => $this->afterCreating, + 'connection' => $this->connection, + 'recycle' => $this->recycle, + ], $arguments)); } /** diff --git a/database/factories/MangaModelFactoryDescriptor.php b/database/factories/MangaModelFactoryDescriptor.php index c84ca8b..cb70b4c 100644 --- a/database/factories/MangaModelFactoryDescriptor.php +++ b/database/factories/MangaModelFactoryDescriptor.php @@ -44,4 +44,9 @@ class MangaModelFactoryDescriptor implements MediaModelFactoryDescriptor { return GenreManga::factory($count, $state); } + + public function activityMarkerLogicalKeyName(): string + { + return "publishing"; + } } diff --git a/database/factories/MediaModelFactoryDescriptor.php b/database/factories/MediaModelFactoryDescriptor.php index 6356050..ba564d5 100644 --- a/database/factories/MediaModelFactoryDescriptor.php +++ b/database/factories/MediaModelFactoryDescriptor.php @@ -9,6 +9,8 @@ interface MediaModelFactoryDescriptor { public function activityMarkerKeyName(): string; + public function activityMarkerLogicalKeyName(): string; + public function typeParamMap(): array; public function statusParamMap(): array; diff --git a/tests/TestServiceProvider.php b/tests/TestServiceProvider.php index 215b156..b513b0f 100644 --- a/tests/TestServiceProvider.php +++ b/tests/TestServiceProvider.php @@ -17,9 +17,6 @@ class TestServiceProvider extends ServiceProvider public function register(): void { - $this->app->singleton(MediaModelFactoryDescriptor::class, AnimeModelFactoryDescriptor::class); - $this->app->singleton(MediaModelFactoryDescriptor::class, MangaModelFactoryDescriptor::class); - $this->app->when(AnimeFactory::class) ->needs(MediaModelFactoryDescriptor::class) ->give(AnimeModelFactoryDescriptor::class);