Skip to content

Commit

Permalink
Merge pull request #4026 from HungDV2022/unittest_BcCustomContentCont…
Browse files Browse the repository at this point in the history
…rollerEventListener_startup

BcCustomContentControllerEventListener::startup()&setAdminMenu() のユニットテスト
  • Loading branch information
HungDV2022 authored Nov 22, 2024
2 parents 1ff2e7a + 3471fcd commit ccf6124
Show file tree
Hide file tree
Showing 2 changed files with 118 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class BcCustomContentControllerEventListener extends \BaserCore\Event\BcControll
* Before render
* @checked
* @noTodo
* @unitTest
*/
public function startup(Event $event)
{
Expand All @@ -51,6 +52,7 @@ public function startup(Event $event)
* 管理画面メニュー用のデータをセットする
* @checked
* @noTodo
* @unitTest
*/
public function setAdminMenu()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
<?php
/**
* baserCMS : Based Website Development Project <https://basercms.net>
* Copyright (c) NPO baser foundation <https://baserfoundation.org/>
*
* @copyright Copyright (c) NPO baser foundation
* @link https://basercms.net baserCMS Project
* @since 5.0.0
* @license https://basercms.net/license/index.html MIT License
*/

namespace BcCustomContent\Test\TestCase\Event;

use BaserCore\Controller\Admin\UsersController;
use BaserCore\Service\BcDatabaseServiceInterface;
use BaserCore\Test\Factory\ContentFactory;
use BaserCore\Test\Scenario\InitAppScenario;
use BaserCore\TestSuite\BcTestCase;
use BcCustomContent\Event\BcCustomContentControllerEventListener;
use BcCustomContent\Service\CustomTablesServiceInterface;
use BcCustomContent\Test\Factory\CustomContentFactory;
use Cake\Core\Configure;
use Cake\Event\Event;
use Cake\Event\EventManager;
use CakephpFixtureFactories\Scenario\ScenarioAwareTrait;

/**
* Class BcCustomContentControllerEventListenerTest
*
* @property BcCustomContentControllerEventListener $BcCustomContentControllerEventListener
*/
class BcCustomContentControllerEventListenerTest extends BcTestCase
{
/**
* Trait
*/
use ScenarioAwareTrait;

/**
* @var UsersController
*/
public $UsersController;

/**
* @var EventManager|null
*/
public $eventManager;

/**
* setUp
*
* @return void
*/
public function setUp(): void
{
parent::setUp();
$this->loadFixtureScenario(InitAppScenario::class);
$this->eventManager = EventManager::instance();

$this->BcCustomContentControllerEventListener = new BcCustomContentControllerEventListener();
foreach ($this->BcCustomContentControllerEventListener->implementedEvents() as $key => $event) {
$this->eventManager->off($key);
}
$this->UsersController = new UsersController($this->loginAdmin($this->getRequest('/baser/admin/baser-core/users/')));
}

/**
* tearDown
*
* @return void
*/
public function tearDown(): void
{
$this->BcCustomContentControllerEventListener = null;
parent::tearDown();
}

/**
* test startup
*/
public function testStartupAnSetAdminMenu()
{
//データを生成
$dataBaseService = $this->getService(BcDatabaseServiceInterface::class);
$customTable = $this->getService(CustomTablesServiceInterface::class);
//カスタムテーブルとカスタムエントリテーブルを生成
$customTable->create(['id' => 1, 'name' => 'recruit_categories']);
CustomContentFactory::make(['id' => 1, 'custom_table_id' => 1])->persist();
ContentFactory::make([
'plugin' => 'BcCustomContent',
'type' => 'CustomContent',
'site_id' => 1,
'title' => 'サービスタイトル',
'entity_id' => 1,
])->persist();

$listener = $this->getMockBuilder(BcCustomContentControllerEventListener::class)
->onlyMethods(['implementedEvents'])
->addMethods(['usersStartup'])
->getMock();

$listener->method('implementedEvents')
->willReturn(['Controller.BaserCore.Users.startup' => ['callable' => 'usersStartup']]);

$this->eventManager
->on($listener)
->on($this->BcCustomContentControllerEventListener)
->dispatch(new Event('Controller.startup', $this->UsersController, []));

//メーニューにカスタムタイトルがあるか確認
$menu = Configure::read('BcApp.adminNavigation.Contents');
$this->assertEquals('サービスタイトル', $menu['CustomContent1']['title']);
//不要なテーブルを削除
$dataBaseService->dropTable('custom_entry_1_recruit_categories');
}
}

0 comments on commit ccf6124

Please sign in to comment.