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); } }