feat: 前台整页响应缓存(匿名 GET,浏览量走 track-view 独立端点)+ 后台缓存管理页 + 侧边栏 nav-groups 负 margin 归零
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Blog\Support\PageCacheMiddleware;
|
||||
use App\Models\Category;
|
||||
use App\Models\Post;
|
||||
use App\Models\User;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Tests\TestCase;
|
||||
|
||||
class PageCacheTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->seed();
|
||||
|
||||
$user = User::create(['name' => '作者', 'email' => 'w@t.com', 'password' => bcrypt('x')]);
|
||||
$cat = Category::create(['name' => '技术', 'slug' => 'tech']);
|
||||
Post::create([
|
||||
'user_id' => $user->id,
|
||||
'category_id' => $cat->id,
|
||||
'title' => '缓存测试',
|
||||
'slug' => 'cache-test',
|
||||
'content' => '内容',
|
||||
'content_format' => 'markdown',
|
||||
'status' => 'published',
|
||||
'published_at' => now(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function test_anonymous_page_is_cached(): void
|
||||
{
|
||||
PageCacheMiddleware::flush();
|
||||
|
||||
$this->get('/')->assertOk();
|
||||
$this->assertSame(1, PageCacheMiddleware::count());
|
||||
|
||||
// 第二次命中缓存
|
||||
$this->get('/')->assertOk();
|
||||
$this->assertSame(1, PageCacheMiddleware::count());
|
||||
}
|
||||
|
||||
public function test_authenticated_user_not_cached(): void
|
||||
{
|
||||
PageCacheMiddleware::flush();
|
||||
|
||||
$user = User::where('email', 'admin@laralog.test')->first();
|
||||
$this->actingAs($user)->get('/')->assertOk();
|
||||
|
||||
$this->assertSame(0, PageCacheMiddleware::count());
|
||||
}
|
||||
|
||||
public function test_track_view_increments_without_caching(): void
|
||||
{
|
||||
PageCacheMiddleware::flush();
|
||||
|
||||
$post = Post::where('slug', 'cache-test')->first();
|
||||
$views = $post->views;
|
||||
|
||||
$this->get('/posts/cache-test.shtml')->assertOk();
|
||||
$this->get('/track-view/'.$post->id)->assertStatus(204);
|
||||
|
||||
$post->refresh();
|
||||
$this->assertSame($views + 1, $post->views);
|
||||
}
|
||||
|
||||
public function test_flush_clears_pages(): void
|
||||
{
|
||||
$this->get('/')->assertOk();
|
||||
$this->assertSame(1, PageCacheMiddleware::count());
|
||||
|
||||
PageCacheMiddleware::flush();
|
||||
|
||||
$this->assertSame(0, PageCacheMiddleware::count());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user