VegetealHandlerBugFixTest.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace Tests\Unit\Pet;
  3. use Tests\TestCase;
  4. use App\Module\AppGame\Validations\PetVegetealValidation;
  5. use App\Module\Pet\Validators\PetOwnershipValidator;
  6. use App\Module\Pet\Validators\PetStealValidator;
  7. use Uraus\Kku\Request\RequestPetVegeteal;
  8. /**
  9. * 宠物偷菜Handler BUG修复测试
  10. *
  11. * 测试修复后的宠物偷菜功能:
  12. * 1. 宠物归属权验证
  13. * 2. 宠物状态验证
  14. * 3. plant_id和land_id概念修正
  15. */
  16. class VegetealHandlerBugFixTest extends TestCase
  17. {
  18. /**
  19. * 测试宠物归属权验证器存在
  20. */
  21. public function test_pet_ownership_validator_exists()
  22. {
  23. $this->assertTrue(class_exists(PetOwnershipValidator::class));
  24. }
  25. /**
  26. * 测试偷菜验证器存在
  27. */
  28. public function test_pet_steal_validator_exists()
  29. {
  30. $this->assertTrue(class_exists(PetStealValidator::class));
  31. }
  32. /**
  33. * 测试PetVegetealValidation的验证规则
  34. */
  35. public function test_pet_vegeteal_validation_rules()
  36. {
  37. $validation = new PetVegetealValidation();
  38. $rules = $validation->rules();
  39. // 验证规则数量
  40. $this->assertCount(4, $rules); // required, integer, pet_ownership, steal_validator
  41. // 检查是否包含PetOwnershipValidator
  42. $petOwnershipRule = null;
  43. foreach ($rules as $rule) {
  44. if (isset($rule[1]) && $rule[1] instanceof PetOwnershipValidator) {
  45. $petOwnershipRule = $rule;
  46. break;
  47. }
  48. }
  49. $this->assertNotNull($petOwnershipRule, '应该包含宠物归属权验证规则');
  50. $this->assertEquals('pet_id', $petOwnershipRule[0]);
  51. // 检查是否包含PetStealValidator
  52. $stealValidatorRule = null;
  53. foreach ($rules as $rule) {
  54. if (isset($rule[1]) && $rule[1] instanceof PetStealValidator) {
  55. $stealValidatorRule = $rule;
  56. break;
  57. }
  58. }
  59. $this->assertNotNull($stealValidatorRule, '应该包含偷菜验证规则');
  60. $this->assertEquals('plant_id', $stealValidatorRule[0]);
  61. }
  62. /**
  63. * 测试字段翻译
  64. */
  65. public function test_field_translations()
  66. {
  67. $validation = new PetVegetealValidation();
  68. $translations = $validation->translates();
  69. $this->assertEquals('被偷玩家ID', $translations['user_id']);
  70. $this->assertEquals('宠物ID', $translations['pet_id']);
  71. $this->assertEquals('作物ID', $translations['plant_id']);
  72. $this->assertEquals('当前用户ID', $translations['current_user_id']);
  73. }
  74. /**
  75. * 测试protobuf字段映射
  76. */
  77. public function test_protobuf_field_mapping()
  78. {
  79. $request = new RequestPetVegeteal();
  80. $request->setUserId(39171);
  81. $request->setPetId(36);
  82. $request->setPlantId(562);
  83. // 测试序列化
  84. $jsonString = $request->serializeToJsonString();
  85. $data = json_decode($jsonString, true);
  86. // 验证字段映射正确
  87. $this->assertEquals('39171', $data['userId']);
  88. $this->assertEquals('36', $data['petId']);
  89. $this->assertEquals('562', $data['plantId']);
  90. }
  91. }