78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
namespace Tests;
 | 
						|
 | 
						|
use BookStack\Entities\Repos\PageRepo;
 | 
						|
 | 
						|
class PageRepoTest extends TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var PageRepo $pageRepo
 | 
						|
     */
 | 
						|
    protected $pageRepo;
 | 
						|
 | 
						|
    protected function setUp()
 | 
						|
    {
 | 
						|
        parent::setUp();
 | 
						|
        $this->pageRepo = app()->make(PageRepo::class);
 | 
						|
    }
 | 
						|
 | 
						|
    public function test_get_page_nav_sets_correct_properties()
 | 
						|
    {
 | 
						|
        $content = '<h1 id="testa">Hello</h1><h2 id="testb">There</h2><h3 id="testc">Donkey</h3>';
 | 
						|
        $navMap = $this->pageRepo->getPageNav($content);
 | 
						|
 | 
						|
        $this->assertCount(3, $navMap);
 | 
						|
        $this->assertArraySubset([
 | 
						|
            'nodeName' => 'h1',
 | 
						|
            'link' => '#testa',
 | 
						|
            'text' => 'Hello',
 | 
						|
            'level' => 1,
 | 
						|
        ], $navMap[0]);
 | 
						|
        $this->assertArraySubset([
 | 
						|
            'nodeName' => 'h2',
 | 
						|
            'link' => '#testb',
 | 
						|
            'text' => 'There',
 | 
						|
            'level' => 2,
 | 
						|
        ], $navMap[1]);
 | 
						|
        $this->assertArraySubset([
 | 
						|
            'nodeName' => 'h3',
 | 
						|
            'link' => '#testc',
 | 
						|
            'text' => 'Donkey',
 | 
						|
            'level' => 3,
 | 
						|
        ], $navMap[2]);
 | 
						|
    }
 | 
						|
 | 
						|
    public function test_get_page_nav_does_not_show_empty_titles()
 | 
						|
    {
 | 
						|
        $content = '<h1 id="testa">Hello</h1><h2 id="testb"> </h2><h3 id="testc"></h3>';
 | 
						|
        $navMap = $this->pageRepo->getPageNav($content);
 | 
						|
 | 
						|
        $this->assertCount(1, $navMap);
 | 
						|
        $this->assertArraySubset([
 | 
						|
            'nodeName' => 'h1',
 | 
						|
            'link' => '#testa',
 | 
						|
            'text' => 'Hello'
 | 
						|
        ], $navMap[0]);
 | 
						|
    }
 | 
						|
 | 
						|
    public function test_get_page_nav_shifts_headers_if_only_smaller_ones_are_used()
 | 
						|
    {
 | 
						|
        $content = '<h4 id="testa">Hello</h4><h5 id="testb">There</h5><h6 id="testc">Donkey</h6>';
 | 
						|
        $navMap = $this->pageRepo->getPageNav($content);
 | 
						|
 | 
						|
        $this->assertCount(3, $navMap);
 | 
						|
        $this->assertArraySubset([
 | 
						|
            'nodeName' => 'h4',
 | 
						|
            'level' => 1,
 | 
						|
        ], $navMap[0]);
 | 
						|
        $this->assertArraySubset([
 | 
						|
            'nodeName' => 'h5',
 | 
						|
            'level' => 2,
 | 
						|
        ], $navMap[1]);
 | 
						|
        $this->assertArraySubset([
 | 
						|
            'nodeName' => 'h6',
 | 
						|
            'level' => 3,
 | 
						|
        ], $navMap[2]);
 | 
						|
    }
 | 
						|
 | 
						|
} |