themesPath = base_path('themes');
if (! File::exists($this->themesPath)) {
File::makeDirectory($this->themesPath);
}
if (! File::exists($this->themesPath . '/test-theme')) {
File::makeDirectory($this->themesPath . '/test-theme');
}
File::put($this->themesPath . '/test-theme/theme.md', "title: Test Theme");
\App\Models\Setting::set('active_theme', 'test-theme', 'cms');
Config::set('app.url', 'http://localhost');
}
protected function tearDown(): void
{
File::deleteDirectory($this->themesPath . '/test-theme');
parent::tearDown();
}
public function test_css_helper_generates_correct_tag(): void
{
$html = css('css/style.css', ['id' => 'main-css', 'media' => 'all']);
$this->assertStringContainsString('assertStringContainsString('href="http://localhost/themes/test-theme/css/style.css"', $html);
$this->assertStringContainsString('id="main-css"', $html);
$this->assertStringContainsString('media="all"', $html);
}
public function test_js_helper_generates_correct_tag(): void
{
$html = js('js/app.js', ['defer' => true, 'async' => true]);
$this->assertStringContainsString('', $html);
}
public function test_sw_file_generates_img_tag_for_images(): void
{
$html = sw_file('img/logo.png', ['alt' => 'Site Logo', 'class' => 'ui image']);
$this->assertStringContainsString('
assertStringContainsString('alt="Site Logo"', $html);
$this->assertStringContainsString('class="ui image"', $html);
}
public function test_sw_file_handles_jit_parameters(): void
{
$html = sw_file('img/hero.jpg', ['w' => 800, 'h' => 400, 'fit' => 'crop', 'fm' => 'webp']);
$this->assertStringContainsString('w=800', $html);
$this->assertStringContainsString('h=400', $html);
$this->assertStringContainsString('fit=crop', $html);
$this->assertStringContainsString('fm=webp', $html);
$this->assertStringContainsString('
assertStringContainsString('controls', $video);
$audio = sw_file('audio/podcast.mp3', ['autoplay' => false]);
$this->assertStringContainsString('