|
@@ -0,0 +1,45 @@
|
|
|
|
|
+<?php
|
|
|
|
|
+
|
|
|
|
|
+namespace Tests\Unit;
|
|
|
|
|
+
|
|
|
|
|
+use App\Services\PointsStatsService;
|
|
|
|
|
+use Tests\TestCase;
|
|
|
|
|
+
|
|
|
|
|
+class PointsStatsServiceNicknameSearchTest extends TestCase
|
|
|
|
|
+{
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 反射调用 buildStatsQuery,返回查询构建器。
|
|
|
|
|
+ */
|
|
|
|
|
+ private function buildQuery(array $params, array $groupBy = ['uid'])
|
|
|
|
|
+ {
|
|
|
|
|
+ app()->instance('siteData', ['role' => 'superadmin', 'cpid' => 0]);
|
|
|
|
|
+
|
|
|
|
|
+ $service = new PointsStatsService();
|
|
|
|
|
+ $method = new \ReflectionMethod($service, 'buildStatsQuery');
|
|
|
|
|
+ $method->setAccessible(true);
|
|
|
|
|
+
|
|
|
|
|
+ [$query] = $method->invoke($service, $params, $groupBy);
|
|
|
|
|
+ return $query;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function testNicknameParamAddsNicknameAndAccountLikeConditions()
|
|
|
|
|
+ {
|
|
|
|
|
+ $query = $this->buildQuery(['nickname' => 'Fenzu5']);
|
|
|
|
|
+
|
|
|
|
|
+ $sql = $query->toSql();
|
|
|
|
|
+
|
|
|
|
|
+ $this->assertStringContainsString('`u`.`nickname` like ?', $sql);
|
|
|
|
|
+ $this->assertStringContainsString('`u`.`account` like ?', $sql);
|
|
|
|
|
+ $this->assertContains('%Fenzu5%', $query->getBindings());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function testEmptyNicknameParamDoesNotAddLikeConditions()
|
|
|
|
|
+ {
|
|
|
|
|
+ $query = $this->buildQuery(['nickname' => '']);
|
|
|
|
|
+
|
|
|
|
|
+ $sql = $query->toSql();
|
|
|
|
|
+
|
|
|
|
|
+ $this->assertStringNotContainsString('`u`.`nickname` like ?', $sql);
|
|
|
|
|
+ $this->assertStringNotContainsString('`u`.`account` like ?', $sql);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|