|
|
@@ -21,7 +21,7 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
$reflection = new ReflectionClass($controller);
|
|
|
$method = $reflection->getMethod('formatRelativeTime');
|
|
|
$method->setAccessible(true);
|
|
|
-
|
|
|
+
|
|
|
return [$controller, $method];
|
|
|
}
|
|
|
|
|
|
@@ -31,10 +31,10 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeWithNull()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$result = $method->invoke($controller, null);
|
|
|
$this->assertEquals('无', $result);
|
|
|
-
|
|
|
+
|
|
|
$result = $method->invoke($controller, '');
|
|
|
$this->assertEquals('无', $result);
|
|
|
}
|
|
|
@@ -45,12 +45,12 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeWithPastTime()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$pastTime = Carbon::now()->subHours(1);
|
|
|
$result = $method->invoke($controller, $pastTime);
|
|
|
-
|
|
|
- $this->assertStringContains('已过期', $result);
|
|
|
- $this->assertStringContains('text-danger', $result);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('已过期', $result);
|
|
|
+ $this->assertStringContainsString('text-danger', $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -59,12 +59,12 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeWithSeconds()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$futureTime = Carbon::now()->addSeconds(30);
|
|
|
$result = $method->invoke($controller, $futureTime);
|
|
|
-
|
|
|
- $this->assertStringContains('秒后', $result);
|
|
|
- $this->assertStringContains('text-warning', $result);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('秒后', $result);
|
|
|
+ $this->assertStringContainsString('text-warning', $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -73,12 +73,12 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeWithMinutes()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$futureTime = Carbon::now()->addMinutes(30);
|
|
|
$result = $method->invoke($controller, $futureTime);
|
|
|
-
|
|
|
- $this->assertStringContains('分钟后', $result);
|
|
|
- $this->assertStringContains('text-info', $result);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('分钟后', $result);
|
|
|
+ $this->assertStringContainsString('text-info', $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -87,12 +87,38 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeWithHours()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$futureTime = Carbon::now()->addHours(5);
|
|
|
$result = $method->invoke($controller, $futureTime);
|
|
|
-
|
|
|
- $this->assertStringContains('小时后', $result);
|
|
|
- $this->assertStringContains('text-primary', $result);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('小时后', $result);
|
|
|
+ $this->assertStringContainsString('text-primary', $result);
|
|
|
+
|
|
|
+ // 测试整数小时不显示小数
|
|
|
+ $this->assertStringContainsString('5小时后', $result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 测试小时级时间差的小数位数优化
|
|
|
+ */
|
|
|
+ public function testFormatRelativeTimeHoursDecimalOptimization()
|
|
|
+ {
|
|
|
+ [$controller, $method] = $this->getController();
|
|
|
+
|
|
|
+ // 测试3.5小时
|
|
|
+ $futureTime = Carbon::now()->addMinutes(210); // 3.5小时
|
|
|
+ $result = $method->invoke($controller, $futureTime);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('3.5小时后', $result);
|
|
|
+ $this->assertStringNotContainsString('3.50', $result);
|
|
|
+
|
|
|
+ // 测试3.97小时应该显示为4.0小时
|
|
|
+ $futureTime = Carbon::now()->addMinutes(238); // 约3.97小时
|
|
|
+ $result = $method->invoke($controller, $futureTime);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('小时后', $result);
|
|
|
+ // 应该四舍五入到1位小数
|
|
|
+ $this->assertStringNotContainsString('3.97', $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -101,12 +127,12 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeWithDays()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$futureTime = Carbon::now()->addDays(3);
|
|
|
$result = $method->invoke($controller, $futureTime);
|
|
|
-
|
|
|
- $this->assertStringContains('天后', $result);
|
|
|
- $this->assertStringContains('text-secondary', $result);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('天后', $result);
|
|
|
+ $this->assertStringContainsString('text-secondary', $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -115,12 +141,12 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeWithWeeks()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$futureTime = Carbon::now()->addDays(10);
|
|
|
$result = $method->invoke($controller, $futureTime);
|
|
|
-
|
|
|
+
|
|
|
// 超过7天应该显示具体日期
|
|
|
- $this->assertStringContains($futureTime->format('Y-m-d H:i:s'), $result);
|
|
|
+ $this->assertStringContainsString($futureTime->format('Y-m-d H:i:s'), $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -129,12 +155,12 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeWithStringInput()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$futureTimeString = Carbon::now()->addHours(2)->toDateTimeString();
|
|
|
$result = $method->invoke($controller, $futureTimeString);
|
|
|
-
|
|
|
- $this->assertStringContains('小时后', $result);
|
|
|
- $this->assertStringContains('text-primary', $result);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('小时后', $result);
|
|
|
+ $this->assertStringContainsString('text-primary', $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -143,11 +169,11 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeWithInvalidFormat()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$result = $method->invoke($controller, 'invalid-date-format');
|
|
|
-
|
|
|
- $this->assertStringContains('时间格式错误', $result);
|
|
|
- $this->assertStringContains('text-muted', $result);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('时间格式错误', $result);
|
|
|
+ $this->assertStringContainsString('text-muted', $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -156,12 +182,12 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeExactlyOneMinute()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$futureTime = Carbon::now()->addMinutes(1);
|
|
|
$result = $method->invoke($controller, $futureTime);
|
|
|
-
|
|
|
- $this->assertStringContains('分钟后', $result);
|
|
|
- $this->assertStringContains('text-info', $result);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('分钟后', $result);
|
|
|
+ $this->assertStringContainsString('text-info', $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -170,12 +196,12 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeExactlyOneHour()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$futureTime = Carbon::now()->addHours(1);
|
|
|
$result = $method->invoke($controller, $futureTime);
|
|
|
-
|
|
|
- $this->assertStringContains('小时后', $result);
|
|
|
- $this->assertStringContains('text-primary', $result);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('小时后', $result);
|
|
|
+ $this->assertStringContainsString('text-primary', $result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -184,11 +210,11 @@ class FarmUserSummaryRelativeTimeTest extends TestCase
|
|
|
public function testFormatRelativeTimeExactlyOneDay()
|
|
|
{
|
|
|
[$controller, $method] = $this->getController();
|
|
|
-
|
|
|
+
|
|
|
$futureTime = Carbon::now()->addDays(1);
|
|
|
$result = $method->invoke($controller, $futureTime);
|
|
|
-
|
|
|
- $this->assertStringContains('天后', $result);
|
|
|
- $this->assertStringContains('text-secondary', $result);
|
|
|
+
|
|
|
+ $this->assertStringContainsString('天后', $result);
|
|
|
+ $this->assertStringContainsString('text-secondary', $result);
|
|
|
}
|
|
|
}
|