mirror of
https://github.com/jikan-me/jikan-rest.git
synced 2025-02-20 11:23:35 +08:00
87 lines
2.2 KiB
PHP
87 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Testing;
|
|
|
|
use App\JikanApiModel;
|
|
use HaydenPierce\ClassFinder\ClassFinder;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
/**
|
|
* A trait for test cases which want to clear the database after each test
|
|
* @codeCoverageIgnore
|
|
*/
|
|
trait SyntheticMongoDbTransaction
|
|
{
|
|
private static array $jikanModels = [];
|
|
|
|
private static function getJikanModels(): array
|
|
{
|
|
if (count(self::$jikanModels) === 0)
|
|
{
|
|
self::$jikanModels = json_decode(
|
|
file_get_contents(base_path("storage/app") . "/jikan_model_classes.json")
|
|
);
|
|
}
|
|
|
|
return self::$jikanModels;
|
|
}
|
|
|
|
public function beginDatabaseTransaction(): void
|
|
{
|
|
$jikanModels = self::getJikanModels();
|
|
$tablesWithoutModels = [
|
|
"anime_characters_staff",
|
|
"anime_episodes",
|
|
"anime_episode",
|
|
"anime_forum",
|
|
"anime_moreinfo",
|
|
"anime_news",
|
|
"anime_pictures",
|
|
"anime_recommendations",
|
|
"anime_reviews",
|
|
"anime_stats",
|
|
"anime_userupdates",
|
|
"anime_videos",
|
|
"character_pictures",
|
|
"characters_pictures",
|
|
"clubs_members",
|
|
"demographics_manga",
|
|
"demographics_anime",
|
|
"manga_characters",
|
|
"manga_moreinfo",
|
|
"manga_news",
|
|
"manga_pictures",
|
|
"manga_recommendations",
|
|
"manga_reviews",
|
|
"manga_stats",
|
|
"manga_userupdates",
|
|
"people_pictures",
|
|
"reviews",
|
|
"recommendations",
|
|
"themes_anime",
|
|
"themes_manga",
|
|
"users_history",
|
|
"users_friends",
|
|
"users_recommendations",
|
|
"users_reviews",
|
|
"users_clubs"
|
|
];
|
|
|
|
foreach ($jikanModels as $jikanModel)
|
|
{
|
|
if ($jikanModel === "App\\JikanApiSearchableModel") {
|
|
continue;
|
|
}
|
|
if ($jikanModel::count() > 0)
|
|
{
|
|
$jikanModel::truncate();
|
|
}
|
|
}
|
|
|
|
foreach ($tablesWithoutModels as $tableName)
|
|
{
|
|
DB::table($tableName)->truncate();
|
|
}
|
|
}
|
|
}
|