jikan-rest/app/Testing/SyntheticMongoDbTransaction.php

87 lines
2.2 KiB
PHP
Raw Normal View History

<?php
namespace App\Testing;
use App\JikanApiModel;
use HaydenPierce\ClassFinder\ClassFinder;
2022-12-21 12:24:40 +00:00
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();
2022-12-21 12:24:40 +00:00
$tablesWithoutModels = [
"anime_characters_staff",
"anime_episodes",
2024-05-31 17:51:39 +01:00
"anime_episode",
2022-12-21 12:24:40 +00:00
"anime_forum",
"anime_moreinfo",
"anime_news",
"anime_pictures",
"anime_recommendations",
"anime_reviews",
"anime_stats",
"anime_userupdates",
"anime_videos",
"character_pictures",
2024-05-31 17:51:39 +01:00
"characters_pictures",
2022-12-21 12:24:40 +00:00
"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"
2022-12-21 12:24:40 +00:00
];
foreach ($jikanModels as $jikanModel)
{
if ($jikanModel === "App\\JikanApiSearchableModel") {
continue;
}
if ($jikanModel::count() > 0)
{
$jikanModel::truncate();
}
}
2022-12-21 12:24:40 +00:00
foreach ($tablesWithoutModels as $tableName)
{
DB::table($tableName)->truncate();
}
}
}