330 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			330 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| use DaveJamesMiller\Breadcrumbs\Manager;
 | |
| use Mockery as m;
 | |
| 
 | |
| class ManagerTest extends TestCase {
 | |
| 
 | |
| 	public function setUp()
 | |
| 	{
 | |
| 		parent::setUp();
 | |
| 
 | |
| 		$this->currentRoute = m::mock('DaveJamesMiller\Breadcrumbs\CurrentRoute');
 | |
| 		$this->generator    = m::mock('DaveJamesMiller\Breadcrumbs\Generator');
 | |
| 		$this->view         = m::mock('DaveJamesMiller\Breadcrumbs\View');
 | |
| 		$this->manager      = new Manager($this->currentRoute, $this->generator, $this->view);
 | |
| 
 | |
| 		$this->manager->setView('view');
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::register($name, $callback) is tested by other methods
 | |
| 	protected function register($name)
 | |
| 	{
 | |
| 		$this->manager->register($name, $fn = function() {
 | |
| 			// We're not testing whether the callbacks are executed - see GeneratorTest
 | |
| 			throw new Exception('Callback executed');
 | |
| 		});
 | |
| 
 | |
| 		return $fn;
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::exists() -> boolean
 | |
| 	public function testExists()
 | |
| 	{
 | |
| 		$this->currentRoute->shouldReceive('get')->andReturn(['sample', [1, 'blah']]);
 | |
| 
 | |
| 		$this->assertFalse($this->manager->exists());
 | |
| 
 | |
| 		$this->register('sample');
 | |
| 		$this->assertTrue($this->manager->exists());
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::exists($name) -> boolean
 | |
| 	public function testExists_name()
 | |
| 	{
 | |
| 		$this->assertFalse($this->manager->exists('sample'));
 | |
| 
 | |
| 		$this->register('sample');
 | |
| 		$this->assertTrue($this->manager->exists('sample'));
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::generate() -> array
 | |
| 	public function testGenerate()
 | |
| 	{
 | |
| 		$fn = $this->register('sample');
 | |
| 
 | |
| 		$this->currentRoute->shouldReceive('get')->andReturn(['sample', [1, 'blah']]);
 | |
| 		$this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');;
 | |
| 
 | |
| 		$this->assertSame('generated', $this->manager->generate());
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::generate($name) -> array
 | |
| 	public function testGenerate_name()
 | |
| 	{
 | |
| 		$fn = $this->register('sample');
 | |
| 
 | |
| 		$this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [])->once()->andReturn('generated');;
 | |
| 
 | |
| 		$this->assertSame('generated', $this->manager->generate('sample'));
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::generate($name, $param1, ...) -> array
 | |
| 	public function testGenerate_name_params()
 | |
| 	{
 | |
| 		$fn = $this->register('sample');
 | |
| 
 | |
| 		$this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');;
 | |
| 
 | |
| 		$this->assertSame('generated', $this->manager->generate('sample', 1, 'blah'));
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::generateArray($name, $params) -> array
 | |
| 	public function testGenerateArray_name_params()
 | |
| 	{
 | |
| 		$fn = $this->register('sample');
 | |
| 
 | |
| 		$this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');;
 | |
| 
 | |
| 		$this->assertSame('generated', $this->manager->generateArray('sample', [1, 'blah']));
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::generateIfExists() -> array
 | |
| 	public function testGenerateIfExists_existing()
 | |
| 	{
 | |
| 		$fn = $this->register('sample');
 | |
| 
 | |
| 		$this->currentRoute->shouldReceive('get')->andReturn(['sample', [1, 'blah']]);
 | |
| 		$this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');
 | |
| 
 | |
| 		$this->assertSame('generated', $this->manager->generateIfExists());
 | |
| 	}
 | |
| 
 | |
| 	public function testGenerateIfExists_nonexistant()
 | |
| 	{
 | |
| 		$this->currentRoute->shouldReceive('get')->andReturn(['sample', [1, 'blah']]);
 | |
| 		$this->generator->shouldReceive('generate')->never();
 | |
| 
 | |
| 		$this->assertSame([], $this->manager->generateIfExists());
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::generateIfExists($name) -> array
 | |
| 	public function testGenerateIfExists_name_existing()
 | |
| 	{
 | |
| 		$fn = $this->register('sample');
 | |
| 
 | |
| 		$this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [])->once()->andReturn('generated');
 | |
| 
 | |
| 		$this->assertSame('generated', $this->manager->generateIfExists('sample'));
 | |
| 	}
 | |
| 
 | |
| 	public function testGenerateIfExists_name_nonexistant()
 | |
| 	{
 | |
| 		$this->generator->shouldReceive('generate')->never();
 | |
| 
 | |
| 		$this->assertSame([], $this->manager->generateIfExists('sample'));
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::generateIfExists($name, $param1, ...) -> array
 | |
| 	public function testGenerateIfExists_name_params_existing()
 | |
| 	{
 | |
| 		$fn = $this->register('sample');
 | |
| 
 | |
| 		$this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');
 | |
| 
 | |
| 		$this->assertSame('generated', $this->manager->generateIfExists('sample', 1, 'blah'));
 | |
| 	}
 | |
| 
 | |
| 	public function testGenerateIfExists_name_params_nonexistant()
 | |
| 	{
 | |
| 		$this->generator->shouldReceive('generate')->never();
 | |
| 
 | |
| 		$this->assertSame([], $this->manager->generateIfExists('sample', 1, 'blah'));
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::generateArrayIfExists($name, $params) -> array
 | |
| 	public function testGenerateArrayIfExists_name_params_existing()
 | |
| 	{
 | |
| 		$fn = $this->register('sample');
 | |
| 
 | |
| 		$this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');
 | |
| 
 | |
| 		$this->assertSame('generated', $this->manager->generateArrayIfExists('sample', [1, 'blah']));
 | |
| 	}
 | |
| 
 | |
| 	public function testGenerateArrayIfExists_name_params_nonexistant()
 | |
| 	{
 | |
| 		$this->generator->shouldReceive('generate')->never();
 | |
| 
 | |
| 		$this->assertSame([], $this->manager->generateArrayIfExists('sample', [1, 'blah']));
 | |
| 	}
 | |
| 
 | |
|     // Breadcrumbs::render() -> array
 | |
|     public function testRender()
 | |
|     {
 | |
|         $fn = $this->register('sample');
 | |
| 
 | |
|         $this->currentRoute->shouldReceive('get')->andReturn(['sample', [1, 'blah']]);
 | |
|         $this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');;
 | |
|         $this->view->shouldReceive('render')->with('view', 'generated')->once()->andReturn('rendered');
 | |
| 
 | |
|         $this->assertSame('rendered', $this->manager->render());
 | |
|     }
 | |
| 
 | |
|     // Breadcrumbs::render($name) -> array
 | |
|     public function testRender_name()
 | |
|     {
 | |
|         $fn = $this->register('sample');
 | |
| 
 | |
|         $this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [])->once()->andReturn('generated');;
 | |
|         $this->view->shouldReceive('render')->with('view', 'generated')->once()->andReturn('rendered');
 | |
| 
 | |
|         $this->assertSame('rendered', $this->manager->render('sample'));
 | |
|     }
 | |
| 
 | |
|     // Breadcrumbs::render($name, $param1, ...) -> array
 | |
|     public function testRender_name_params()
 | |
|     {
 | |
|         $fn = $this->register('sample');
 | |
| 
 | |
|         $this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');;
 | |
|         $this->view->shouldReceive('render')->with('view', 'generated')->once()->andReturn('rendered');
 | |
| 
 | |
|         $this->assertSame('rendered', $this->manager->render('sample', 1, 'blah'));
 | |
|     }
 | |
| 
 | |
|     // Breadcrumbs::renderArray($name, $params) -> array
 | |
|     public function testRenderArray_name_params()
 | |
|     {
 | |
|         $fn = $this->register('sample');
 | |
| 
 | |
|         $this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');;
 | |
|         $this->view->shouldReceive('render')->with('view', 'generated')->once()->andReturn('rendered');
 | |
| 
 | |
|         $this->assertSame('rendered', $this->manager->renderArray('sample', [1, 'blah']));
 | |
|     }
 | |
| 
 | |
|     // Breadcrumbs::renderIfExists() -> array
 | |
|     public function testRenderIfExists_existing()
 | |
|     {
 | |
|         $fn = $this->register('sample');
 | |
| 
 | |
|         $this->currentRoute->shouldReceive('get')->andReturn(['sample', [1, 'blah']]);
 | |
|         $this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');
 | |
|         $this->view->shouldReceive('render')->with('view', 'generated')->once()->andReturn('rendered');
 | |
| 
 | |
|         $this->assertSame('rendered', $this->manager->renderIfExists());
 | |
|     }
 | |
| 
 | |
|     public function testRenderIfExists_nonexistant()
 | |
|     {
 | |
|         $this->currentRoute->shouldReceive('get')->andReturn(['sample', [1, 'blah']]);
 | |
|         $this->generator->shouldReceive('generate')->never();
 | |
|         $this->view->shouldReceive('render')->never();
 | |
| 
 | |
|         $this->assertSame('', $this->manager->renderIfExists());
 | |
|     }
 | |
| 
 | |
|     // Breadcrumbs::renderIfExists($name) -> array
 | |
|     public function testRenderIfExists_name_existing()
 | |
|     {
 | |
|         $fn = $this->register('sample');
 | |
| 
 | |
|         $this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [])->once()->andReturn('generated');
 | |
|         $this->view->shouldReceive('render')->with('view', 'generated')->once()->andReturn('rendered');
 | |
| 
 | |
|         $this->assertSame('rendered', $this->manager->renderIfExists('sample'));
 | |
|     }
 | |
| 
 | |
|     public function testRenderIfExists_name_nonexistant()
 | |
|     {
 | |
|         $this->generator->shouldReceive('generate')->never();
 | |
|         $this->view->shouldReceive('render')->never();
 | |
| 
 | |
|         $this->assertSame('', $this->manager->renderIfExists('sample'));
 | |
|     }
 | |
| 
 | |
|     // Breadcrumbs::renderIfExists($name, $param1, ...) -> array
 | |
|     public function testRenderIfExists_name_params_existing()
 | |
|     {
 | |
|         $fn = $this->register('sample');
 | |
| 
 | |
|         $this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');
 | |
|         $this->view->shouldReceive('render')->with('view', 'generated')->once()->andReturn('rendered');
 | |
| 
 | |
|         $this->assertSame('rendered', $this->manager->renderIfExists('sample', 1, 'blah'));
 | |
|     }
 | |
| 
 | |
|     public function testRenderIfExists_name_params_nonexistant()
 | |
|     {
 | |
|         $this->generator->shouldReceive('generate')->never();
 | |
|         $this->view->shouldReceive('render')->never();
 | |
| 
 | |
|         $this->assertSame('', $this->manager->renderIfExists('sample', 1, 'blah'));
 | |
|     }
 | |
| 
 | |
|     // Breadcrumbs::renderArrayIfExists($name, $params) -> array
 | |
|     public function testRenderArrayIfExists_name_params_existing()
 | |
|     {
 | |
|         $fn = $this->register('sample');
 | |
| 
 | |
|         $this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');
 | |
|         $this->view->shouldReceive('render')->with('view', 'generated')->once()->andReturn('rendered');
 | |
| 
 | |
|         $this->assertSame('rendered', $this->manager->renderArrayIfExists('sample', [1, 'blah']));
 | |
|     }
 | |
| 
 | |
|     public function testRenderArrayIfExists_name_params_nonexistant()
 | |
|     {
 | |
|         $this->generator->shouldReceive('generate')->never();
 | |
|         $this->view->shouldReceive('render')->never();
 | |
| 
 | |
|         $this->assertSame('', $this->manager->renderArrayIfExists('sample', [1, 'blah']));
 | |
|     }
 | |
| 
 | |
| 	// Breadcrumbs::setCurrentRoute($name)
 | |
| 	public function testSetCurrentRoute_name()
 | |
| 	{
 | |
| 		$this->currentRoute->shouldReceive('set')->with('sample', [])->once();
 | |
| 
 | |
| 		$this->manager->setCurrentRoute('sample');
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::setCurrentRoute($name, $param1, ...)
 | |
| 	public function testSetCurrentRoute_name_params()
 | |
| 	{
 | |
| 		$this->currentRoute->shouldReceive('set')->with('sample', [1, 'blah'])->once();
 | |
| 
 | |
| 		$this->manager->setCurrentRoute('sample', 1, 'blah');
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::setCurrentRouteArray($name, $params)
 | |
| 	public function testSetCurrentRouteArray_name_params()
 | |
| 	{
 | |
| 		$this->currentRoute->shouldReceive('set')->with('sample', [1, 'blah'])->once();
 | |
| 
 | |
| 		$this->manager->setCurrentRouteArray('sample', [1, 'blah']);
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::clearCurrentRoute()
 | |
| 	public function testClearCurrentRoute()
 | |
| 	{
 | |
| 		$this->currentRoute->shouldReceive('clear')->withNoArgs()->once();
 | |
| 
 | |
| 		$this->manager->clearCurrentRoute();
 | |
| 	}
 | |
| 
 | |
| 	// Breadcrumbs::setView($view)
 | |
| 	public function testSetView()
 | |
| 	{
 | |
|         $fn = $this->register('sample');
 | |
| 
 | |
|         $this->generator->shouldReceive('generate')->with(['sample' => $fn], 'sample', [1, 'blah'])->once()->andReturn('generated');;
 | |
|         $this->view->shouldReceive('render')->with('custom.view', 'generated')->once()->andReturn('rendered');
 | |
| 
 | |
| 		$this->manager->setView($view = 'custom.view');
 | |
|         $this->assertSame('rendered', $this->manager->render('sample', 1, 'blah'));
 | |
| 	}
 | |
| 
 | |
| }
 | 
