62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| class IntegrationTest extends TestCase {
 | |
| 
 | |
| 	public function setUp()
 | |
| 	{
 | |
| 		parent::setUp();
 | |
| 
 | |
| 		Breadcrumbs::register('home', function($breadcrumbs) {
 | |
| 			$breadcrumbs->push('Home', '/');
 | |
| 		});
 | |
| 
 | |
| 		Breadcrumbs::register('category', function($breadcrumbs, $category) {
 | |
| 			$breadcrumbs->parent('home');
 | |
| 			$breadcrumbs->push($category->title, '/category/' . $category->id);
 | |
| 		});
 | |
| 
 | |
| 		Breadcrumbs::register('post', function($breadcrumbs, $post) {
 | |
| 			$breadcrumbs->parent('category', $post->category);
 | |
| 			$breadcrumbs->push($post->title, '/blog/' . $post->id);
 | |
| 		});
 | |
| 
 | |
| 		$this->post = (object) [
 | |
| 			'id'       => 123,
 | |
| 			'title'    => 'Sample Post',
 | |
| 			'category' => (object) [
 | |
| 				'id'    => 456,
 | |
| 				'title' => 'Sample Category',
 | |
| 			],
 | |
| 		];
 | |
| 	}
 | |
| 
 | |
| 	public function testGenerate()
 | |
| 	{
 | |
| 		$breadcrumbs = Breadcrumbs::generate('post', $this->post);
 | |
| 
 | |
| 		$this->assertCount(3, $breadcrumbs);
 | |
| 
 | |
| 		$this->assertSame('Home', $breadcrumbs[0]->title);
 | |
| 		$this->assertSame('/', $breadcrumbs[0]->url);
 | |
| 		$this->assertTrue($breadcrumbs[0]->first);
 | |
| 		$this->assertFalse($breadcrumbs[0]->last);
 | |
| 
 | |
| 		$this->assertSame('Sample Category', $breadcrumbs[1]->title);
 | |
| 		$this->assertSame('/category/456', $breadcrumbs[1]->url);
 | |
| 		$this->assertFalse($breadcrumbs[1]->first);
 | |
| 		$this->assertFalse($breadcrumbs[1]->last);
 | |
| 
 | |
| 		$this->assertSame('Sample Post', $breadcrumbs[2]->title);
 | |
| 		$this->assertSame('/blog/123', $breadcrumbs[2]->url);
 | |
| 		$this->assertFalse($breadcrumbs[2]->first);
 | |
| 		$this->assertTrue($breadcrumbs[2]->last);
 | |
| 	}
 | |
| 
 | |
| 	public function testRender()
 | |
| 	{
 | |
| 		$html = Breadcrumbs::render('post', $this->post);
 | |
| 		$this->assertXmlStringEqualsXmlFile(__DIR__ . '/../fixtures/integration.html', $html);
 | |
| 	}
 | |
| 
 | |
| }
 | 
