UrsTeamStatsTest.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace Tests\Unit\UrsPromotion;
  3. use Tests\TestCase;
  4. use App\Module\UrsPromotion\Services\UrsReferralService;
  5. use App\Module\UrsPromotion\Services\UrsActiveUserService;
  6. use App\Module\UrsPromotion\Enums\UrsPromotionRelationLevel;
  7. /**
  8. * URS团队统计测试
  9. *
  10. * 测试20代团队统计功能是否正常工作
  11. */
  12. class UrsTeamStatsTest extends TestCase
  13. {
  14. /**
  15. * 测试团队统计深度配置
  16. */
  17. public function testTeamStatsDepthConfiguration()
  18. {
  19. // 测试配置常量是否正确
  20. $this->assertEquals(20, UrsPromotionRelationLevel::getTeamStatsDepth());
  21. $this->assertEquals(20, UrsPromotionRelationLevel::getMaxLevel());
  22. }
  23. /**
  24. * 测试getTeamMembers方法的默认参数
  25. */
  26. public function testGetTeamMembersDefaultParameters()
  27. {
  28. // 创建一个测试用户ID(这里使用一个不存在的ID进行测试)
  29. $testUserId = 999999;
  30. // 测试默认参数是否使用20代
  31. $teamMembers = UrsReferralService::getTeamMembers($testUserId);
  32. // 由于是测试环境,可能没有实际数据,但方法应该能正常执行
  33. $this->assertIsArray($teamMembers);
  34. }
  35. /**
  36. * 测试活跃团队成员统计
  37. */
  38. public function testGetActiveTeamMembers()
  39. {
  40. // 创建一个测试用户ID
  41. $testUserId = 999999;
  42. // 测试活跃团队成员统计
  43. $activeStats = UrsActiveUserService::getActiveTeamMembers($testUserId);
  44. // 验证返回结构
  45. $this->assertIsArray($activeStats);
  46. $this->assertArrayHasKey('active_direct_count', $activeStats);
  47. $this->assertArrayHasKey('active_total_count', $activeStats);
  48. $this->assertArrayHasKey('active_members', $activeStats);
  49. }
  50. /**
  51. * 测试层级名称生成
  52. */
  53. public function testLevelNameGeneration()
  54. {
  55. // 测试直推
  56. $this->assertEquals('直推', UrsPromotionRelationLevel::getLevelNameByDepth(1));
  57. // 测试间推
  58. $this->assertEquals('2级间推', UrsPromotionRelationLevel::getLevelNameByDepth(2));
  59. $this->assertEquals('5级间推', UrsPromotionRelationLevel::getLevelNameByDepth(5));
  60. $this->assertEquals('20级间推', UrsPromotionRelationLevel::getLevelNameByDepth(20));
  61. // 测试超级间推
  62. $this->assertEquals('超级间推', UrsPromotionRelationLevel::getLevelNameByDepth(21));
  63. }
  64. /**
  65. * 测试层级有效性检查
  66. */
  67. public function testLevelValidation()
  68. {
  69. // 测试有效层级
  70. $this->assertTrue(UrsPromotionRelationLevel::isValidLevel(1));
  71. $this->assertTrue(UrsPromotionRelationLevel::isValidLevel(10));
  72. $this->assertTrue(UrsPromotionRelationLevel::isValidLevel(20));
  73. // 测试无效层级
  74. $this->assertFalse(UrsPromotionRelationLevel::isValidLevel(0));
  75. $this->assertFalse(UrsPromotionRelationLevel::isValidLevel(21));
  76. $this->assertFalse(UrsPromotionRelationLevel::isValidLevel(-1));
  77. }
  78. }