blade(<<<'BLADE' BLADE); expect($html) ->toContain('data-md-empty-state') ->toContain('data-md-empty-state-shape') ->toContain('data-md-empty-state-icon') ->toContain('

No shares yet

') ->toContain('data-md-empty-state-description') ->toContain('Files you share appear here.') ->toContain('data-md-empty-state-actions') ->toContain('Upload files') ->and(substr_count($html, 'toBe(2) ->and(ComponentStylesheet::read('empty-state')->declarations('[data-md-empty-state-shape]'))->toMatchArray([ 'color' => 'var(--md-sys-color-secondary-container)', ]) ->and(ComponentStylesheet::read('empty-state')->declarations('[data-md-empty-state-icon]'))->toMatchArray([ 'color' => 'var(--md-sys-color-on-secondary-container)', ]); }); it('draws an illustration in place of the shape and icon', function () { $html = (string) $this->blade(<<<'BLADE' BLADE); expect($html) ->toContain('
') ->not->toContain('data-md-empty-state-shape') ->not->toContain('data-md-empty-state-icon') ->toContain('No routes yet') ->and(substr_count($html, 'toBe(1); }); it('keeps the shape and icon while the illustration slot holds nothing but comments', function () { $html = (string) $this->blade(<<<'BLADE' BLADE); expect($html) ->toContain('data-md-empty-state-shape') ->toContain('data-md-empty-state-icon') ->not->toContain('artwork to come') ->and(substr_count($html, 'toBe(2); });