view('filament.partials.diff.row', [ 'row' => new DiffRow( key: 'description', label: 'Description', status: DiffRowStatus::Changed, oldValue: 'Before', newValue: 'After', ), 'compact' => false, 'dimUnchanged' => true, ]) ->assertSee('Changed') ->assertSee('Description') ->assertSee('Changed value') ->assertSee('From') ->assertSee('Before') ->assertSee('To') ->assertSee('After') ->assertSee('border-warning-200') ->assertSee('bg-warning-50/70'); }); it('renders added removed and unchanged rows through the shared dispatcher', function (): void { $added = (string) $this->view('filament.partials.diff.row', [ 'row' => new DiffRow( key: 'new_setting', label: 'New setting', status: DiffRowStatus::Added, newValue: 'Enabled', ), 'compact' => false, 'dimUnchanged' => true, ]); $removed = (string) $this->view('filament.partials.diff.row', [ 'row' => new DiffRow( key: 'retired_setting', label: 'Retired setting', status: DiffRowStatus::Removed, oldValue: 'Legacy', ), 'compact' => false, 'dimUnchanged' => true, ]); $unchanged = (string) $this->view('filament.partials.diff.row', [ 'row' => new DiffRow( key: 'display_name', label: 'Display name', status: DiffRowStatus::Unchanged, oldValue: 'TenantPilot', newValue: 'TenantPilot', ), 'compact' => false, 'dimUnchanged' => true, ]); expect($added)->toContain('Added') ->and($added)->toContain('Enabled') ->and($removed)->toContain('Removed') ->and($removed)->toContain('Legacy') ->and($unchanged)->toContain('Unchanged') ->and($unchanged)->toContain('TenantPilot'); }); it('delegates list-like rows to the inline list partial and dims unchanged content when requested', function (): void { $listRow = (string) $this->view('filament.partials.diff.row', [ 'row' => new DiffRow( key: 'scope_tags', label: 'Scope tags', status: DiffRowStatus::Changed, oldValue: ['Default', 'Legacy', 'Shared'], newValue: ['Default', 'Shared', 'Workspace'], isListLike: true, addedItems: ['Workspace'], removedItems: ['Legacy'], unchangedItems: ['Default', 'Shared'], ), 'compact' => false, 'dimUnchanged' => true, ]); $unchanged = (string) $this->view('filament.partials.diff.row', [ 'row' => new DiffRow( key: 'display_name', label: 'Display name', status: DiffRowStatus::Unchanged, oldValue: 'TenantPilot', newValue: 'TenantPilot', ), 'compact' => false, 'dimUnchanged' => true, ]); expect($listRow)->toContain('Added items') ->and($listRow)->toContain('Removed items') ->and($listRow)->toContain('Unchanged items') ->and($unchanged)->toContain('text-gray-500') ->and($unchanged)->toContain('dark:text-gray-400'); }); it('keeps unchanged rows quieter than changed rows while preserving shared state badges', function (): void { $changed = (string) $this->view('filament.partials.diff.row', [ 'row' => new DiffRow( key: 'description', label: 'Description', status: DiffRowStatus::Changed, oldValue: 'Before', newValue: 'After', ), 'compact' => false, 'dimUnchanged' => true, ]); $unchanged = (string) $this->view('filament.partials.diff.row', [ 'row' => new DiffRow( key: 'display_name', label: 'Display name', status: DiffRowStatus::Unchanged, oldValue: 'TenantPilot', newValue: 'TenantPilot', ), 'compact' => false, 'dimUnchanged' => true, ]); expect($changed)->toContain('border-warning-200') ->and($changed)->toContain('Changed value') ->and($unchanged)->toContain('No material change') ->and($unchanged)->toContain('rounded-xl border border-gray-200 bg-white'); });