update v 1.0.7.5

This commit is contained in:
Sujit Prasad
2016-06-13 20:41:55 +05:30
parent aa9786d829
commit 283d97e3ea
5078 changed files with 339851 additions and 175995 deletions

View File

@@ -0,0 +1,80 @@
<?php
use DaveJamesMiller\Breadcrumbs\CurrentRoute;
use Mockery as m;
class CurrentRouteTest extends TestCase {
public function setUp()
{
parent::setUp();
$this->currentRoute = app('DaveJamesMiller\Breadcrumbs\CurrentRoute');
}
public function testNamedRoute()
{
Route::get('/sample', ['as' => 'sampleroute', function()
{
$this->assertSame(['sampleroute', []], $this->currentRoute->get());
}]);
$this->call('GET', '/sample');
}
public function testNamedRouteWithParameters()
{
$object = new stdClass;
Route::bind('object', function() use ($object) {
return $object;
});
Route::get('/sample/{text}/{object}', ['as' => 'sampleroute', function() use ($object)
{
$this->assertSame(['sampleroute', ['blah', $object]], $this->currentRoute->get());
}]);
$this->call('GET', '/sample/blah/object');
}
/**
* @expectedException DaveJamesMiller\Breadcrumbs\Exception
* @expectedExceptionMessage The current route (GET /sample/unnamed) is not named - please check routes.php for an "as" parameter
*/
public function testUnnamedRoute()
{
Route::get('/sample/unnamed', function()
{
$this->assertSame(['sample', []], $this->currentRoute->get());
});
$this->call('GET', '/sample/unnamed');
}
public function testSet()
{
$this->currentRoute->set('custom', [1, 'blah']);
Route::get('/sample', ['as' => 'sampleroute', function()
{
$this->assertSame(['custom', [1, 'blah']], $this->currentRoute->get());
}]);
$this->call('GET', '/sample');
}
public function testClear()
{
$this->currentRoute->set('custom', [1, 'blah']);
$this->currentRoute->clear();
Route::get('/sample', ['as' => 'sampleroute', function()
{
$this->assertSame(['sampleroute', []], $this->currentRoute->get());
}]);
$this->call('GET', '/sample');
}
}

View File

@@ -0,0 +1,11 @@
<?php
class FacadeTest extends TestCase {
public function testFacade()
{
$this->assertInstanceOf('DaveJamesMiller\Breadcrumbs\Manager', Breadcrumbs::getFacadeRoot());
$this->assertSame($this->app['breadcrumbs'], Breadcrumbs::getFacadeRoot());
}
}

View File

@@ -0,0 +1,189 @@
<?php
use DaveJamesMiller\Breadcrumbs\Generator;
use Mockery as m;
class GeneratorTest extends TestCase {
public function setUp()
{
parent::setUp();
$this->generator = new Generator;
}
public function testCallbacks()
{
$this->generator->generate([
'sample' => function($breadcrumbs)
{
$this->assertSame($this->generator, $breadcrumbs);
},
], 'sample', []);
}
public function testCallbackParameters()
{
$this->generator->generate([
'sample' => function($breadcrumbs, $num, $text)
{
$this->assertSame(1, $num);
$this->assertSame('blah', $text);
},
], 'sample', [1, 'blah']);
}
// $breadcrumbs->push($title)
// $breadcrumb->title
public function testPush_title()
{
$breadcrumbs = $this->generator->generate([
'sample' => function($breadcrumbs)
{
$breadcrumbs->push('Home');
},
], 'sample', []);
$this->assertCount(1, $breadcrumbs);
$this->assertSame('Home', $breadcrumbs[0]->title);
$this->assertNull($breadcrumbs[0]->url);
}
// $breadcrumbs->push($title, $url)
// $breadcrumb->url
public function testPush_title_url()
{
$breadcrumbs = $this->generator->generate([
'sample' => function($breadcrumbs)
{
$breadcrumbs->push('Home', '/');
},
], 'sample', []);
$this->assertCount(1, $breadcrumbs);
$this->assertSame('Home', $breadcrumbs[0]->title);
$this->assertSame('/', $breadcrumbs[0]->url);
}
// $breadcrumbs->push($title, $url, $data)
// $breadcrumb->custom_attribute_name
public function testPush_title_url_data()
{
$data = [
'foo' => 'bar',
'baz' => 'qux',
'title' => 'should not be overwritten by custom data',
];
$breadcrumbs = $this->generator->generate([
'sample' => function($breadcrumbs)
{
$breadcrumbs->push('Home', '/', ['foo' => 'bar', 'title' => 'ignored']);
},
], 'sample', []);
$this->assertCount(1, $breadcrumbs);
$this->assertSame('Home', $breadcrumbs[0]->title);
$this->assertSame('/', $breadcrumbs[0]->url);
$this->assertSame('bar', $breadcrumbs[0]->foo);
}
public function testPushMultipleTimes()
{
$breadcrumbs = $this->generator->generate([
'sample' => function($breadcrumbs)
{
$breadcrumbs->push('Level 1', '/1');
$breadcrumbs->push('Level 2', '/2');
$breadcrumbs->push('Level 3', '/3');
},
], 'sample', []);
$this->assertCount(3, $breadcrumbs);
$this->assertSame('Level 1', $breadcrumbs[0]->title);
$this->assertSame('Level 2', $breadcrumbs[1]->title);
$this->assertSame('Level 3', $breadcrumbs[2]->title);
$this->assertSame('/1', $breadcrumbs[0]->url);
$this->assertSame('/2', $breadcrumbs[1]->url);
$this->assertSame('/3', $breadcrumbs[2]->url);
}
// $breadcrumbs->parent($name)
public function testParent_name()
{
$breadcrumbs = $this->generator->generate([
'home' => function($breadcrumbs)
{
$breadcrumbs->push('Home', '/');
},
'sample' => function($breadcrumbs)
{
$breadcrumbs->parent('home');
$breadcrumbs->push('Page', '/page');
},
], 'sample', []);
$this->assertCount(2, $breadcrumbs);
$this->assertSame('Home', $breadcrumbs[0]->title);
$this->assertSame('/', $breadcrumbs[0]->url);
$this->assertSame('Page', $breadcrumbs[1]->title);
$this->assertSame('/page', $breadcrumbs[1]->url);
}
// $breadcrumbs->parent($name, $param1, ...)
public function testParent_name_params()
{
$breadcrumbs = $this->generator->generate([
'parent' => function($breadcrumbs, $num, $text)
{
$this->assertSame(1, $num);
$this->assertSame('blah', $text);
},
'sample' => function($breadcrumbs)
{
$breadcrumbs->parent('parent', 1, 'blah');
},
], 'sample', []);
}
// $breadcrumbs->parentArray($name, $params)
public function testParentArray_name_params()
{
$breadcrumbs = $this->generator->generate([
'parent' => function($breadcrumbs, $num, $text)
{
$this->assertSame(1, $num);
$this->assertSame('blah', $text);
},
'sample' => function($breadcrumbs)
{
$breadcrumbs->parentArray('parent', [1, 'blah']);
},
], 'sample', []);
}
// $breadcrumb->first
// $breadcrumb->last
public function testFirstLast()
{
$breadcrumbs = $this->generator->generate([
'sample' => function($breadcrumbs)
{
$breadcrumbs->push('Level 1', '/1');
$breadcrumbs->push('Level 2', '/2');
$breadcrumbs->push('Level 3', '/3');
},
], 'sample', []);
$this->assertCount(3, $breadcrumbs);
$this->assertTrue($breadcrumbs[0]->first, '$breadcrumbs[0]->first');
$this->assertFalse($breadcrumbs[1]->first, '$breadcrumbs[1]->first');
$this->assertFalse($breadcrumbs[2]->first, '$breadcrumbs[2]->first');
$this->assertFalse($breadcrumbs[0]->last, '$breadcrumbs[0]->last');
$this->assertFalse($breadcrumbs[1]->last, '$breadcrumbs[1]->last');
$this->assertTrue($breadcrumbs[2]->last, '$breadcrumbs[2]->last');
}
}

View File

@@ -0,0 +1,329 @@
<?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'));
}
}

View File

@@ -0,0 +1,51 @@
<?php
class ViewTest extends TestCase {
public function setUp()
{
parent::setUp();
$this->view = app('DaveJamesMiller\Breadcrumbs\View');
$this->breadcrumbs = [
(object) [
'title' => 'Home',
'url' => '/',
'first' => true,
'last' => false,
],
(object) [
'title' => 'Not a link',
'url' => null, // Test non-links
'first' => false,
'last' => false,
],
(object) [
'title' => 'Blog & < >', // Test HTML escaping
'url' => '/blog',
'first' => false,
'last' => false,
],
(object) [
'title' => 'Sample Post',
'url' => '/blog/123',
'first' => false,
'last' => true,
],
];
}
public function testBootstrap2()
{
$html = $this->view->render('breadcrumbs::bootstrap2', $this->breadcrumbs);
$this->assertXmlStringEqualsXmlFile(__DIR__ . '/../fixtures/bootstrap2.html', $html);
}
public function testBootstrap3()
{
$html = $this->view->render('breadcrumbs::bootstrap3', $this->breadcrumbs);
$this->assertXmlStringEqualsXmlFile(__DIR__ . '/../fixtures/bootstrap3.html', $html);
}
}