| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?php
- namespace Tests\Unit\Pet;
- use Tests\TestCase;
- use App\Module\AppGame\Validations\PetVegetealValidation;
- use App\Module\Pet\Validators\PetOwnershipValidator;
- use App\Module\Pet\Validators\PetStealValidator;
- use Uraus\Kku\Request\RequestPetVegeteal;
- /**
- * 宠物偷菜Handler BUG修复测试
- *
- * 测试修复后的宠物偷菜功能:
- * 1. 宠物归属权验证
- * 2. 宠物状态验证
- * 3. plant_id和land_id概念修正
- */
- class VegetealHandlerBugFixTest extends TestCase
- {
- /**
- * 测试宠物归属权验证器存在
- */
- public function test_pet_ownership_validator_exists()
- {
- $this->assertTrue(class_exists(PetOwnershipValidator::class));
- }
- /**
- * 测试偷菜验证器存在
- */
- public function test_pet_steal_validator_exists()
- {
- $this->assertTrue(class_exists(PetStealValidator::class));
- }
- /**
- * 测试PetVegetealValidation的验证规则
- */
- public function test_pet_vegeteal_validation_rules()
- {
- $validation = new PetVegetealValidation();
- $rules = $validation->rules();
- // 验证规则数量
- $this->assertCount(4, $rules); // required, integer, pet_ownership, steal_validator
- // 检查是否包含PetOwnershipValidator
- $petOwnershipRule = null;
- foreach ($rules as $rule) {
- if (isset($rule[1]) && $rule[1] instanceof PetOwnershipValidator) {
- $petOwnershipRule = $rule;
- break;
- }
- }
- $this->assertNotNull($petOwnershipRule, '应该包含宠物归属权验证规则');
- $this->assertEquals('pet_id', $petOwnershipRule[0]);
- // 检查是否包含PetStealValidator
- $stealValidatorRule = null;
- foreach ($rules as $rule) {
- if (isset($rule[1]) && $rule[1] instanceof PetStealValidator) {
- $stealValidatorRule = $rule;
- break;
- }
- }
- $this->assertNotNull($stealValidatorRule, '应该包含偷菜验证规则');
- $this->assertEquals('plant_id', $stealValidatorRule[0]);
- }
- /**
- * 测试字段翻译
- */
- public function test_field_translations()
- {
- $validation = new PetVegetealValidation();
- $translations = $validation->translates();
- $this->assertEquals('被偷玩家ID', $translations['user_id']);
- $this->assertEquals('宠物ID', $translations['pet_id']);
- $this->assertEquals('作物ID', $translations['plant_id']);
- $this->assertEquals('当前用户ID', $translations['current_user_id']);
- }
- /**
- * 测试protobuf字段映射
- */
- public function test_protobuf_field_mapping()
- {
- $request = new RequestPetVegeteal();
- $request->setUserId(39171);
- $request->setPetId(36);
- $request->setPlantId(562);
- // 测试序列化
- $jsonString = $request->serializeToJsonString();
- $data = json_decode($jsonString, true);
- // 验证字段映射正确
- $this->assertEquals('39171', $data['userId']);
- $this->assertEquals('36', $data['petId']);
- $this->assertEquals('562', $data['plantId']);
- }
- }
|