Files
Tstore/tests/Feature/WebAdminPackageScreenshotsTest.php
浪子 04a2034975 前端极简黑白重设计,并纳入客户端注册、站点设置与后台相关改动
- storefront 全站改为极简黑白配色:直角、细线分隔、卡片 hover 浅底、深色模式(跟随系统+手动切换)
- 抽出 storefront/partials/card 复用卡片
- 一并提交此前暂存的客户端注册 API、站点设置、后台页面与测试

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-22 08:35:49 +08:00

126 lines
3.9 KiB
PHP

<?php
namespace Tests\Feature;
use App\Models\Package;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class WebAdminPackageScreenshotsTest extends TestCase
{
use RefreshDatabase;
public function test_admin_can_add_and_delete_package_screenshot(): void
{
$user = User::factory()->create();
$package = Package::query()->create([
'type' => 'theme',
'slug' => 'Mango',
'name' => 'Mango',
'summary' => '',
'description' => '',
'author' => '',
'homepage' => '',
'icon_url' => '',
'license' => '',
'status' => 'published',
'is_featured' => false,
'sort_order' => 0,
'download_count' => 0,
'latest_version' => '',
]);
$this->actingAs($user)
->post('/admin/packages/theme/Mango/screenshots', [
'image_url' => 'https://cdn.example.com/mango/home.webp',
'caption' => '首页预览',
'sort_order' => 3,
])
->assertRedirect('/admin/packages/theme/Mango')
->assertSessionHas('success', '截图已添加');
$this->assertDatabaseHas('store_screenshots', [
'package_id' => $package->id,
'image_url' => 'https://cdn.example.com/mango/home.webp',
'caption' => '首页预览',
'sort_order' => 3,
]);
$shotId = (int) $package->screenshots()->value('id');
$this->actingAs($user)
->delete('/admin/packages/theme/Mango/screenshots/' . $shotId)
->assertRedirect('/admin/packages/theme/Mango')
->assertSessionHas('success', '截图已删除');
$this->assertDatabaseMissing('store_screenshots', [
'id' => $shotId,
]);
}
public function test_storefront_detail_page_uses_screenshot_preview_section_instead_of_related_cards(): void
{
$package = Package::query()->create([
'type' => 'theme',
'slug' => 'Mango',
'name' => 'Mango',
'summary' => 'A clean theme.',
'description' => 'Theme description.',
'author' => 'Team Store',
'homepage' => 'https://example.com/mango',
'icon_url' => '',
'license' => 'MIT',
'status' => 'published',
'is_featured' => false,
'sort_order' => 0,
'download_count' => 12,
'latest_version' => '1.5.0',
]);
$package->screenshots()->createMany([
[
'image_url' => 'https://cdn.example.com/mango/hero.webp',
'caption' => '首页展示',
'sort_order' => 1,
],
[
'image_url' => 'https://cdn.example.com/mango/post.webp',
'caption' => '文章页展示',
'sort_order' => 2,
],
]);
$this->get('/theme/Mango')
->assertOk()
->assertSee('预览截图')
->assertSee('首页展示')
->assertSee('文章页展示')
->assertDontSee('主题继续浏览');
}
public function test_legacy_package_detail_route_redirects_to_short_theme_route(): void
{
$package = Package::query()->create([
'type' => 'theme',
'slug' => 'Mango',
'name' => 'Mango',
'summary' => '',
'description' => '',
'author' => '',
'homepage' => '',
'icon_url' => '',
'license' => '',
'status' => 'published',
'is_featured' => false,
'sort_order' => 0,
'download_count' => 0,
'latest_version' => '1.5.0',
]);
$this->get('/packages/theme/' . $package->slug)
->assertRedirect('/theme/' . $package->slug);
}
}