/** * Creates and instance of the mock object. * * @param PHPUnit_Framework_TestCase $test A test object. * * @return PHPUnit_Framework_MockObject_MockObject */ public static function create($test) { // Collect all the relevant methods in JDatabase. $methods = array('getProjectId', 'setProjectId', 'getProject', 'getProjects', 'resolveAlias'); // Create the mock. $mockObject = $test->getMock('MonitorModelProject', $methods, array(), '', false); self::createSampleData(); $setterCallback = function ($id) { self::$projectId = (int) $id; return $id; }; $mockObject->expects($test->any())->method('setProjectId')->will($test->returnCallback($setterCallback)); $mockObject->expects($test->any())->method('getProjectId')->will($test->returnValue(self::$projectId)); $mockObject->expects($test->any())->method('getProject')->will($test->returnValue(self::$data[self::$projectId])); $mockObject->expects($test->any())->method('getProjects')->will($test->returnValue(self::$data)); $mockObject->expects($test->any())->method('resolveAlias')->will($test->returnValue(1)); return $mockObject; }
/** * Test of the build function. * * @param array $queryExpected The expected parsed query.. * @param string $url URL to be parsed. * @param array $exceptions Array of exceptional menu items, where the URL is different. * * @dataProvider buildProvider * @return null */ public function testParse($queryExpected, $url, $exceptions) { $modelProject = MonitorTestMockModelProject::create($this); $modelIssue = MonitorTestMockModelIssue::create($this); MonitorTestMockMenu::createMenuSampleData(); for ($i = 0; $i < MonitorTestMockMenu::getItemCount(); $i++) { MonitorTestMockMenu::setActiveIndex($i); $menu = MonitorTestMockMenu::create($this); $router = new MonitorRouter($this->getMockCmsApp(), $menu, $modelProject, $modelIssue); $description = "Active Item: ({$i}) " . $menu->getActive()->link . "\n"; // TODO: Test query rest if (isset($exceptions[$i])) { $segments = explode('/', $exceptions[$i]); $description .= "URL: " . $exceptions[$i]; } else { $segments = explode('/', $url); $description .= "URL: " . $url; } $query = $router->parse($segments); MonitorRouter::convertTaskToView($query); MonitorRouter::convertTaskToView($queryExpected); $this->assertEquals($queryExpected, $query, $description); } }