blade('The page'); expect(layoutRoot($html))->toMatchArray(['<' => 'div', 'data-md-pane' => 'data-md-pane']) ->not->toHaveKeys(['data-md-width', 'data-md-hide-below', 'data-md-hide-from']) ->and($html)->toMatch('/
The page<\/div>/') ->not->toContain('data-app-bar') ->not->toContain('data-md-pane-navigation'); }); it('gives the pane its own app bar, a direct child spanning it, with the title, subtitle and actions', function () { $html = (string) $this->blade(<<<'BLADE' ACTIONS BODY BLADE); expect($html) ->toMatch('/^\s*
]*>\s*]*data-app-bar[^>]*data-md-pane-bar/s') ->toContain('

Settings

') ->toContain('

Your account

') ->toMatch('/
ACTIONS<\/span><\/div>/') ->toContain('data-sticky') ->toMatch('/<\/header>\s*
\s*BODY\s*<\/div>/s') ->and((string) $this->blade(''))->not->toContain('data-sticky'); }); it('draws a bar for actions alone, and names the heading h1 by default', function () { expect((string) $this->blade('ACTIONS'))->toContain('data-md-pane-bar') ->and((string) $this->blade(''))->toContain('

Inbox

'); }); it('puts the section navigation under the bar and above the body', function () { $html = (string) $this->blade(<<<'BLADE' BODY BLADE); expect($html)->toMatch('/<\/header>\s*