Files
saasshop/tests/Feature/AdminPlatformOrderIndexClearErrorButtonsShouldDisableWhenNotInFailedScopeTest.php

94 lines
3.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class AdminPlatformOrderIndexClearErrorButtonsShouldDisableWhenNotInFailedScopeTest extends TestCase
{
use RefreshDatabase;
protected function loginAsPlatformAdmin(): void
{
$this->seed();
$this->post('/admin/login', [
'email' => 'platform.admin@demo.local',
'password' => 'Platform@123456',
])->assertRedirect('/admin');
}
public function test_clear_error_buttons_should_disable_when_filters_not_in_failed_scopes(): void
{
$this->loginAsPlatformAdmin();
// 默认列表(未进入失败集合)
$res = $this->get('/admin/platform-orders');
$res->assertOk();
$html = (string) $res->getContent();
$this->assertStringContainsString('清除同步失败标记(当前筛选范围)', $html);
$this->assertStringContainsString('data-role="clear-sync-errors-blocked-hint"', $html);
$this->assertStringContainsString('同步失败', $html);
$this->assertStringContainsString('清除批量标记支付失败标记(当前筛选范围)', $html);
$this->assertStringContainsString('data-role="clear-bmpa-errors-blocked-hint"', $html);
$this->assertStringContainsString('BMPA失败', $html);
// 按钮 disabled宽松断言
$this->assertTrue(str_contains($html, 'type="submit" disabled') || str_contains($html, 'disabled="disabled"'));
}
public function test_clear_sync_errors_button_should_disable_when_syncable_only_checked_even_if_in_failed_scope(): void
{
$this->loginAsPlatformAdmin();
$res = $this->get('/admin/platform-orders?sync_status=failed&syncable_only=1');
$res->assertOk();
$html = (string) $res->getContent();
$this->assertStringContainsString('清除同步失败标记(当前筛选范围)', $html);
$this->assertStringContainsString('data-role="clear-sync-errors-blocked-hint"', $html);
$this->assertStringContainsString('只看可同步', $html);
// 仍应禁用
$this->assertTrue(str_contains($html, 'type="submit" disabled') || str_contains($html, 'disabled="disabled"'));
}
public function test_clear_bmpa_errors_button_should_disable_when_syncable_only_checked_even_if_in_bmpa_failed_scope(): void
{
$this->loginAsPlatformAdmin();
$res = $this->get('/admin/platform-orders?bmpa_failed_only=1&syncable_only=1');
$res->assertOk();
$html = (string) $res->getContent();
$this->assertStringContainsString('清除批量标记支付失败标记(当前筛选范围)', $html);
$this->assertStringContainsString('data-role="clear-bmpa-errors-blocked-hint"', $html);
$this->assertStringContainsString('只看可同步', $html);
$this->assertTrue(str_contains($html, 'type="submit" disabled') || str_contains($html, 'disabled="disabled"'));
}
public function test_clear_bmpa_errors_button_should_disable_when_sync_failed_filters_present(): void
{
$this->loginAsPlatformAdmin();
// 即使 bmpa_failed_only=1但叠加了 sync_error_keyword/fail_only也应禁用避免误清理
$res = $this->get('/admin/platform-orders?bmpa_failed_only=1&fail_only=1&sync_error_keyword=timeout');
$res->assertOk();
$html = (string) $res->getContent();
$this->assertStringContainsString('清除批量标记支付失败标记(当前筛选范围)', $html);
$this->assertStringContainsString('data-role="clear-bmpa-errors-blocked-hint"', $html);
$this->assertStringContainsString('同步失败', $html);
$this->assertTrue(str_contains($html, 'type="submit" disabled') || str_contains($html, 'disabled="disabled"'));
}
}