PointsStatsServiceNicknameSearchTest.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace Tests\Unit;
  3. use App\Services\PointsStatsService;
  4. use Tests\TestCase;
  5. class PointsStatsServiceNicknameSearchTest extends TestCase
  6. {
  7. /**
  8. * 反射调用 buildStatsQuery,返回查询构建器。
  9. */
  10. private function buildQuery(array $params, array $groupBy = ['uid'])
  11. {
  12. app()->instance('siteData', ['role' => 'superadmin', 'cpid' => 0]);
  13. $service = new PointsStatsService();
  14. $method = new \ReflectionMethod($service, 'buildStatsQuery');
  15. $method->setAccessible(true);
  16. [$query] = $method->invoke($service, $params, $groupBy);
  17. return $query;
  18. }
  19. public function testNicknameParamAddsNicknameAndAccountLikeConditions()
  20. {
  21. $query = $this->buildQuery(['nickname' => 'Fenzu5']);
  22. $sql = $query->toSql();
  23. $this->assertStringContainsString('`u`.`nickname` like ?', $sql);
  24. $this->assertStringContainsString('`u`.`account` like ?', $sql);
  25. $this->assertContains('%Fenzu5%', $query->getBindings());
  26. }
  27. public function testEmptyNicknameParamDoesNotAddLikeConditions()
  28. {
  29. $query = $this->buildQuery(['nickname' => '']);
  30. $sql = $query->toSql();
  31. $this->assertStringNotContainsString('`u`.`nickname` like ?', $sql);
  32. $this->assertStringNotContainsString('`u`.`account` like ?', $sql);
  33. }
  34. }