<?php

namespace Kylin\Modules\Tests\Unit;

use Kylin\Modules\ModuleManager;
use Kylin\Modules\Tests\TestCase;

/**
 * 模块管理器测试
 *
 * 测试模块管理器的功能
 */
class ModuleManagerTest extends TestCase
{
    /**
     * 模块管理器实例
     */
    protected ModuleManager $moduleManager;

    /**
     * 设置测试环境
     */
    protected function setUp(): void
    {
        parent::setUp();

        $this->moduleManager = $this->app->make(ModuleManager::class);
    }

    /**
     * 测试模块管理器可以被实例化
     */
    public function testModuleManagerCanBeInstantiated(): void
    {
        $this->assertInstanceOf(ModuleManager::class, $this->moduleManager);
    }

    /**
     * 测试模块管理器可以加载模块
     */
    public function testModuleManagerCanLoadModules(): void
    {
        $modules = $this->moduleManager->all();

        $this->assertInstanceOf('Kylin\Modules\ModuleCollection', $modules);
    }

    /**
     * 测试模块管理器可以通过名称获取模块
     */
    public function testModuleManagerCanGetModuleByName(): void
    {
        // 假设我们有一个 'blog' 模块
        $module = $this->moduleManager->get('blog');

        if ($module) {
            $this->assertEquals('blog', $module->getName());
        }
    }
}

