<?php

App::uses('BemmelhorComponent', 'Controller/Component');
App::uses('Component', 'Controller');
App::uses('AppController', 'Controller');
App::uses('BemmelhorTestCase', 'TestSuite');
app::uses('BemmelhorComponent', 'Controller/Component');

class MockBemmelhorComponent extends BemmelhorComponent {

	public function startup(Controller $controller) {
		$this->controller = $controller;
		$this->_BemmelhorPlugin = new BemmelhorPlugin();
		$this->_BemmelhorPlugin->Setting->writeConfiguration();
	}

}

class BemmelhorTestController extends AppController {
}

class BemmelhorComponentTest extends BemmelhorTestCase {

	public $fixtures = array(
		'aco', 'aro', 'aros_aco', 'setting',
		);

	public function setUp() {
		parent::setUp();

		$this->Controller = new BemmelhorTestController(new CakeRequest(), new CakeResponse());
		$this->Controller->constructClasses();
		$this->Controller->Bemmelhor = new MockBemmelhorComponent($this->Controller->Components);
		$this->Controller->Components->set('Bemmelhor', $this->Controller->Bemmelhor);
		$this->Controller->startupProcess();
	}

	public function testAddRemoveAcos() {
		$Aco = ClassRegistry::init('Aco');

		$this->Controller->Bemmelhor->addAco('BemmelhorTestController');
		$parent = $Aco->findByAlias('BemmelhorTestController');
		$this->assertNotEmpty($parent);

		$this->Controller->Bemmelhor->addAco('BemmelhorTestController/index');
		$child = $Aco->findByParentId($parent['Aco']['id']);
		$this->assertNotEmpty($child);

		$this->Controller->Bemmelhor->removeAco('BemmelhorTestController/index');
		$child = $Aco->findByParentId($parent['Aco']['id']);
		$this->assertEmpty($child);

		$this->Controller->Bemmelhor->removeAco('BemmelhorTestController');
		$parent = $Aco->findByAlias('BemmelhorTestController');
		$this->assertEmpty($parent);
	}

	public function testPluginIsActive() {
		$result = $this->Controller->Bemmelhor->pluginIsActive('Example');
		$this->assertTrue($result);
		$result = $this->Controller->Bemmelhor->pluginIsActive('example');
		$this->assertTrue($result);
		$result = $this->Controller->Bemmelhor->pluginIsActive('Shops');
		$this->assertFalse($result);
	}

}
