Hello!
Le projet suis son cours jusque là, je trouve beaucoup de motivation avec le TDD/MySQL comme je m'y attendais.
Mes tests sont réalisés/validés déjà sur plusieurs blocks du jeu comme vous pouvoir le voir sur la photo, certains totalement inutiles (AntsCreation) car très court et sur des fonctions très simples, mais c'était mes premiers pour comprendre le TDD.
J'ai aussi pu entrevoir les avantages du TDD lors d'une refacto-bazooka qui a fait foiré de l'autre côté certains tests.
Quelques-uns de mes tests: testUserCanGetAllAchievements, testSacrifyEggsIncreaseFood, testOldReadMessagesAreDeletedFromDatabase
Et niveau SQL j'ai pondu deux requêtes sympa.
La première remplies automatiquement les achèvements en récupérant les stats du joueur directement sur la table cities_stats et en les comparant avec la listes des achèvements enregistré sur la table, je n'ai pas besoin de lui préciser qu
Le projet suis son cours jusque là, je trouve beaucoup de motivation avec le TDD/MySQL comme je m'y attendais.
Mes tests sont réalisés/validés déjà sur plusieurs blocks du jeu comme vous pouvoir le voir sur la photo, certains totalement inutiles (AntsCreation) car très court et sur des fonctions très simples, mais c'était mes premiers pour comprendre le TDD.
J'ai aussi pu entrevoir les avantages du TDD lors d'une refacto-bazooka qui a fait foiré de l'autre côté certains tests.
Quelques-uns de mes tests: testUserCanGetAllAchievements, testSacrifyEggsIncreaseFood, testOldReadMessagesAreDeletedFromDatabase
Et niveau SQL j'ai pondu deux requêtes sympa.
La première remplies automatiquement les achèvements en récupérant les stats du joueur directement sur la table cities_stats et en les comparant avec la listes des achèvements enregistré sur la table, je n'ai pas besoin de lui préciser qu
Code PHP :
<?php
protected function checkForAchievementsValidation($achievement_type): void
{
// Sécurisation de la variable $achievement_type supprimé dans ce message
$select = DB::insert(
"INSERT INTO achievements_cities(city_uuid, achievement_uuid, date_earned)
SELECT
stats.city_uuid city_uuid,
achievements.uuid achievement_uuid,
NOW() date_earned
FROM achievements_cities pivot
RIGHT JOIN achievements ON pivot.achievement_uuid = achievements.uuid
LEFT JOIN cities_stats stats ON stats.city_uuid = ?
WHERE achievements.achievement_type = ? AND achievements.amount <= stats.${achievement_type}
AND pivot.city_uuid IS NULL", [$this->uuid, $achievement_type]);
}
La seconde vérifie sur la table pivot les achèvements enregistré pour un certains type et retourne directement de combien une capacité précise du joueur doit être augmenté:
Code PHP :
<?php
public function getIncreaseFor($capacity): Int
{
$query = DB::selectOne('
SELECT SUM(achievements.increase) as increase
FROM achievements_cities pivot
RIGHT JOIN achievements ON pivot.achievement_uuid = achievements.uuid
WHERE achievements.ability = ?
AND pivot.city_uuid = ?
', [$capacity, $this->city->uuid]);
return $query->increase ?: 0;
}