Add tests for the navigation manager (closure) behaviour
This commit is contained in:
parent
970846624f
commit
ec1d5011b6
|
@ -0,0 +1,160 @@
|
|||
<?php
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @author Joas Schilling
|
||||
* @copyright 2015 Joas Schilling nickvergessen@owncloud.com
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
* See the COPYING-README file.
|
||||
*/
|
||||
|
||||
namespace Test;
|
||||
|
||||
use OC\NavigationManager;
|
||||
|
||||
class NavigationManagerTest extends TestCase {
|
||||
/** @var \OC\NavigationManager */
|
||||
protected $navigationManager;
|
||||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->navigationManager = new NavigationManager();
|
||||
}
|
||||
|
||||
public function addArrayData() {
|
||||
return [
|
||||
[
|
||||
[
|
||||
'id' => 'entry id',
|
||||
'name' => 'link text',
|
||||
'order' => 1,
|
||||
'icon' => 'optional',
|
||||
'href' => 'url',
|
||||
],
|
||||
[
|
||||
'id' => 'entry id',
|
||||
'name' => 'link text',
|
||||
'order' => 1,
|
||||
'icon' => 'optional',
|
||||
'href' => 'url',
|
||||
'active' => false,
|
||||
],
|
||||
],
|
||||
[
|
||||
[
|
||||
'id' => 'entry id',
|
||||
'name' => 'link text',
|
||||
'order' => 1,
|
||||
//'icon' => 'optional',
|
||||
'href' => 'url',
|
||||
'active' => true,
|
||||
],
|
||||
[
|
||||
'id' => 'entry id',
|
||||
'name' => 'link text',
|
||||
'order' => 1,
|
||||
'icon' => '',
|
||||
'href' => 'url',
|
||||
'active' => false,
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider addArrayData
|
||||
*
|
||||
* @param array $entry
|
||||
* @param array $expectedEntry
|
||||
*/
|
||||
public function testAddArray(array $entry, array $expectedEntry) {
|
||||
$this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists');
|
||||
$this->navigationManager->add($entry);
|
||||
|
||||
$navigationEntries = $this->navigationManager->getAll();
|
||||
$this->assertEquals(1, sizeof($navigationEntries), 'Expected that 1 navigation entry exists');
|
||||
$this->assertEquals($expectedEntry, $navigationEntries[0]);
|
||||
|
||||
$this->navigationManager->clear();
|
||||
$this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists after clear()');
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider addArrayData
|
||||
*
|
||||
* @param array $entry
|
||||
* @param array $expectedEntry
|
||||
*/
|
||||
public function testAddClosure(array $entry, array $expectedEntry) {
|
||||
global $testAddClosureNumberOfCalls;
|
||||
$testAddClosureNumberOfCalls = 0;
|
||||
|
||||
$this->navigationManager->add(function () use ($entry) {
|
||||
global $testAddClosureNumberOfCalls;
|
||||
$testAddClosureNumberOfCalls++;
|
||||
|
||||
return $entry;
|
||||
});
|
||||
|
||||
$this->assertEquals(0, $testAddClosureNumberOfCalls, 'Expected that the closure is not called by add()');
|
||||
|
||||
$navigationEntries = $this->navigationManager->getAll();
|
||||
$this->assertEquals(1, $testAddClosureNumberOfCalls, 'Expected that the closure is called by getAll()');
|
||||
$this->assertEquals(1, sizeof($navigationEntries), 'Expected that 1 navigation entry exists');
|
||||
$this->assertEquals($expectedEntry, $navigationEntries[0]);
|
||||
|
||||
$navigationEntries = $this->navigationManager->getAll();
|
||||
$this->assertEquals(1, $testAddClosureNumberOfCalls, 'Expected that the closure is only called once for getAll()');
|
||||
$this->assertEquals(1, sizeof($navigationEntries), 'Expected that 1 navigation entry exists');
|
||||
$this->assertEquals($expectedEntry, $navigationEntries[0]);
|
||||
|
||||
$this->navigationManager->clear();
|
||||
$this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists after clear()');
|
||||
}
|
||||
|
||||
public function testAddArrayClearGetAll() {
|
||||
$entry = [
|
||||
'id' => 'entry id',
|
||||
'name' => 'link text',
|
||||
'order' => 1,
|
||||
'icon' => 'optional',
|
||||
'href' => 'url',
|
||||
];
|
||||
|
||||
$this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists');
|
||||
$this->navigationManager->add($entry);
|
||||
$this->navigationManager->clear();
|
||||
$this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists after clear()');
|
||||
}
|
||||
|
||||
public function testAddClosureClearGetAll() {
|
||||
$this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists');
|
||||
|
||||
$entry = [
|
||||
'id' => 'entry id',
|
||||
'name' => 'link text',
|
||||
'order' => 1,
|
||||
'icon' => 'optional',
|
||||
'href' => 'url',
|
||||
];
|
||||
|
||||
global $testAddClosureNumberOfCalls;
|
||||
$testAddClosureNumberOfCalls = 0;
|
||||
|
||||
$this->navigationManager->add(function () use ($entry) {
|
||||
global $testAddClosureNumberOfCalls;
|
||||
$testAddClosureNumberOfCalls++;
|
||||
|
||||
return $entry;
|
||||
});
|
||||
|
||||
$this->assertEquals(0, $testAddClosureNumberOfCalls, 'Expected that the closure is not called by add()');
|
||||
$this->navigationManager->clear();
|
||||
$this->assertEquals(0, $testAddClosureNumberOfCalls, 'Expected that the closure is not called by clear()');
|
||||
$this->assertEmpty($this->navigationManager->getAll(), 'Expected no navigation entry exists after clear()');
|
||||
$this->assertEquals(0, $testAddClosureNumberOfCalls, 'Expected that the closure is not called by getAll()');
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue