Skip to content

Commit

Permalink
Refactor.
Browse files Browse the repository at this point in the history
  • Loading branch information
jumilla committed Oct 18, 2015
1 parent c7894b8 commit b748d68
Show file tree
Hide file tree
Showing 28 changed files with 140 additions and 55 deletions.
Expand Up @@ -2,7 +2,7 @@

namespace LaravelPlus\Extension\Addons;

class AddonClassLoader
class ClassLoader
{
/**
* @var static
Expand Down Expand Up @@ -61,7 +61,7 @@ public function load($className)
$relativeClassName = substr($className, strlen($namespacePrefix));

// クラスの相対パスを作成する(PSR-4)
$relativePath = AddonDirectory::classToPath($relativeClassName);
$relativePath = Directory::classToPath($relativeClassName);

// 全ディレクトリ下を探索する (PSR-4)
foreach ($addon->config('addon.directories') as $directory) {
Expand Down
2 changes: 1 addition & 1 deletion sources/Addons/Console/AddonCheckCommand.php
Expand Up @@ -4,7 +4,7 @@

use Illuminate\Console\Command;
use Symfony\Component\Finder\Finder;
use LaravelPlus\Extension\Addons\AddonDirectory;
use LaravelPlus\Extension\Addons\Directory as AddonDirectory;

class AddonCheckCommand extends Command
{
Expand Down
7 changes: 0 additions & 7 deletions sources/Addons/Console/AddonCommandTrait.php

This file was deleted.

5 changes: 2 additions & 3 deletions sources/Addons/Console/AddonMakeCommand.php
Expand Up @@ -5,8 +5,8 @@
use Illuminate\Console\Command;
use Illuminate\Filesystem\Filesystem;
use LaravelPlus\Extension\Addons\MakeCommandTrait;
use LaravelPlus\Extension\Addons\AddonDirectory;
use LaravelPlus\Extension\Addons\AddonGenerator;
use LaravelPlus\Extension\Addons\Directory as AddonDirectory;
use LaravelPlus\Extension\Addons\Generator as AddonGenerator;
use UnexpectedValueException;
use Exception;

Expand All @@ -17,7 +17,6 @@
*/
class AddonMakeCommand extends Command
{
use AddonCommandTrait;
use MakeCommandTrait;

/**
Expand Down
2 changes: 1 addition & 1 deletion sources/Addons/Console/AddonNameCommand.php
Expand Up @@ -5,7 +5,7 @@
use Illuminate\Console\Command;
use Illuminate\Filesystem\Filesystem;
use Symfony\Component\Finder\Finder;
use LaravelPlus\Extension\Addons\AddonDirectory;
use LaravelPlus\Extension\Addons\Directory as AddonDirectory;
use LaravelPlus\Extension\Addons\Addon;
use UnexpectedValueException;

Expand Down
2 changes: 1 addition & 1 deletion sources/Addons/Console/AddonRemoveCommand.php
Expand Up @@ -4,7 +4,7 @@

use Illuminate\Console\Command;
use Illuminate\Filesystem\Filesystem;
use LaravelPlus\Extension\Addons\AddonDirectory;
use LaravelPlus\Extension\Addons\Directory as AddonDirectory;
use UnexpectedValueException;

class AddonRemoveCommand extends Command
Expand Down
2 changes: 1 addition & 1 deletion sources/Addons/Console/AddonStatusCommand.php
Expand Up @@ -4,7 +4,7 @@

use Illuminate\Console\Command;
use Illuminate\Filesystem\Filesystem;
use LaravelPlus\Extension\Addons\AddonDirectory;
use LaravelPlus\Extension\Addons\Directory as AddonDirectory;

class AddonStatusCommand extends Command
{
Expand Down
Expand Up @@ -4,7 +4,7 @@

use Illuminate\Filesystem\Filesystem;

class AddonDirectory
class Directory
{
/**
* @param string $name
Expand Down
4 changes: 1 addition & 3 deletions sources/Addons/Environment.php
Expand Up @@ -2,8 +2,6 @@

namespace LaravelPlus\Extension\Addons;

use LaravelPlus\Extension\Addons\AddonDirectory;

class Environment
{
/**
Expand All @@ -17,7 +15,7 @@ class Environment
public function getAddons()
{
if ($this->addons === null) {
$this->addons = AddonDirectory::addons();
$this->addons = Directory::addons();
}

return $this->addons;
Expand Down
Expand Up @@ -5,7 +5,7 @@
use Jumilla\Generators\Php\ClassName;
use Jumilla\Generators\FileGenerator;

class AddonGenerator
class Generator
{
/**
* @param string $path
Expand Down
33 changes: 24 additions & 9 deletions sources/Console/AppContainerCommand.php
Expand Up @@ -34,7 +34,8 @@ public function handle()
{
$app = new ApplicationHook($this->laravel);

$objects = $app->getInstances();
$instances = $app->getInstances();
$objects = $app->getBindings();
$aliases = [];

foreach ($app->getAliases() as $alias => $abstract) {
Expand All @@ -46,28 +47,42 @@ public function handle()
foreach ($objects as $name => $instance) {
$this->info($name.': ');

$this->output($instance);
if (is_array($instance)) {
if ($instance['shared']) {
$this->output(array_get($instances, $name));
}
else {
$this->output($instance['concrete']);
}
}
else {
$this->output($instance);
}

if (isset($aliases[$name])) {
foreach ($aliases[$name] as $value) {
echo "\t", '[alias] "', $value, '"', "\n";
$this->line("\t[alias] \"$value\"\n");
}
}
}
}

private function output($instance)
{
echo "\t";
$line = "\t";
if (is_object($instance)) {
echo 'object "', get_class($instance), '"';
$line .= 'object "'.get_class($instance).'"';
} elseif (is_string($instance)) {
echo 'string "', $instance, '"';
$line .= 'string "'.$instance.'"';
} elseif (is_bool($instance)) {
echo 'bool ', $instance, '';
$line .= 'bool '.$instance.'';
} elseif (is_null($instance)) {
$line .= 'null';
} else {
echo '(unknown) ', $instance, '';
$line .= '(unknown) '.$instance;
}
echo "\n";
$line .= "\n";

$this->line($line);
}
}
2 changes: 1 addition & 1 deletion sources/Generators/GeneratorCommandTrait.php
Expand Up @@ -2,7 +2,7 @@

namespace LaravelPlus\Extension\Generators;

use LaravelPlus\Extension\Addons\AddonDirectory;
use LaravelPlus\Extension\Addons\Directory as AddonDirectory;
use LaravelPlus\Extension\Addons\Addon;
use UnexpectedValueException;

Expand Down
4 changes: 2 additions & 2 deletions sources/Hooks/ApplicationHook.php
Expand Up @@ -6,12 +6,12 @@
use Illuminate\Foundation\Application as LaravelApplication;

/**
* @author Fumio Furukawa <fumio.furukawa@gmail.com>
* @author Fumio Furukawa <fumio@jumilla.me>
*/
class ApplicationHook extends LaravelApplication implements ApplicationInterface
{
/**
* @var Illuminate\Contracts\Foundation\Application
* @var \Illuminate\Contracts\Foundation\Application
*/
private $app;

Expand Down
8 changes: 4 additions & 4 deletions sources/ServiceProvider.php
Expand Up @@ -3,10 +3,10 @@
namespace LaravelPlus\Extension;

use Illuminate\Support\Facades\Blade;
use LaravelPlus\Extension\Addons\Environment as AddonEnvironment;
use LaravelPlus\Extension\Addons\Addon;
use LaravelPlus\Extension\Addons\AddonClassLoader;
use LaravelPlus\Extension\Addons\AddonGenerator;
use LaravelPlus\Extension\Addons\Environment as AddonEnvironment;
use LaravelPlus\Extension\Addons\ClassLoader as AddonClassLoader;
use LaravelPlus\Extension\Addons\Generator as AddonGenerator;
use LaravelPlus\Extension\Templates\BladeExtension;
use Jumilla\Versionia\Laravel\Migrator;

Expand All @@ -15,7 +15,7 @@ class ServiceProvider extends \Illuminate\Support\ServiceProvider
/**
* Addon environment.
*
* @var LaravelPlus\Extension\Addons\Environment
* @var \LaravelPlus\Extension\Addons\Environment
*/
protected $addonEnvironment;

Expand Down
2 changes: 1 addition & 1 deletion tests/Addons/AddonClassLoaderTests.php
@@ -1,6 +1,6 @@
<?php

use LaravelPlus\Extension\Addons\AddonClassLoader;
use LaravelPlus\Extension\Addons\ClassLoader as AddonClassLoader;
use LaravelPlus\Extension\Addons\Addon;
use Illuminate\Config\Repository;

Expand Down
29 changes: 25 additions & 4 deletions tests/Addons/AddonDirectoryTests.php
@@ -1,13 +1,34 @@
<?php

use LaravelPlus\Extension\Addons\AddonDirectory;
use LaravelPlus\Extension\Addons\Directory as AddonDirectory;

class AddonDirectoryTests extends TestCase
{
public function test_withNoParameter()
public function test_classToPathMethod()
{
$command = new AddonDirectory();
$app = $this->createApplication();
$instance = new AddonDirectory();

Assert::isInstanceOf(AddonDirectory::class, $command);
Assert::same('DatabaseServiceProvider.php', $instance->classToPath('DatabaseServiceProvider'));
Assert::same('Providers/DatabaseServiceProvider.php', $instance->classToPath('Providers\DatabaseServiceProvider'));
}

public function test_pathToClassMethod()
{
$app = $this->createApplication();
$instance = new AddonDirectory();

Assert::same('DatabaseServiceProvider', $instance->pathToClass('DatabaseServiceProvider.php'));
Assert::same('Providers\DatabaseServiceProvider', $instance->pathToClass('Providers/DatabaseServiceProvider.php'));
}

public function test_addonsMethod()
{
$app = $this->createApplication();
$instance = new AddonDirectory();

$app['config']->set('addon.path', 'tmp');

Assert::same([], $instance->addons());
}
}
Expand Up @@ -2,7 +2,7 @@

use LaravelPlus\Extension\Addons\Environment;

class EnvironmentTests extends TestCase
class AddonEnvironmentTests extends TestCase
{
/**
* @test
Expand Down
2 changes: 1 addition & 1 deletion tests/Addons/AddonGeneratorTests.php
@@ -1,6 +1,6 @@
<?php

use LaravelPlus\Extension\Addons\AddonGenerator;
use LaravelPlus\Extension\Addons\Generator as AddonGenerator;

class AddonGeneratorTests extends TestCase
{
Expand Down
1 change: 1 addition & 0 deletions tests/Console/AppContainerCommandTests.php
Expand Up @@ -14,6 +14,7 @@ public function test_run()
// 2. condition
// TODO
$app->singleton('foo', 'string');
$app['qux'] = 'quux';

// 3. test
$command = $app->make(Command::class);
Expand Down
5 changes: 5 additions & 0 deletions tests/Console/TailCommandTests.php
Expand Up @@ -75,8 +75,13 @@ public function test_run_withConnectArgument_andPathOption()
{
// 1. setup
$app = $this->createApplication();
$remote = $this->createMock('remote');
$remoteConnection = $this->createMock('Illuminate\Remote\Connection');
$app['remote'] = $remote;

// 2. condition
$remote->shouldReceive('connection')->andReturn($remoteConnection)->once();
$remoteConnection->shouldReceive('run')->once();

// 3. test
$command = $app->make(Command::class);
Expand Down
13 changes: 13 additions & 0 deletions tests/Generators/GeneratorCommandRegistrarTests.php
Expand Up @@ -52,6 +52,19 @@ public function test_makeRegisteredCommands()
Assert::isInstanceOf(Generators\Console\TestMakeCommand::class, $app->make('command+.test.make'));
}

public function test_makeRegisteredCommands_alreadyRegistered()
{
$app = $this->createApplication();
$registrar = new GeneratorCommandRegistrar($app);

$app['command+.model.make'] = new stdClass();

$registrar->register();

Assert::true($app->bound('command+.model.make'));
Assert::isInstanceOf(Generators\Console\ModelMakeCommand::class, $app->make('command+.model.make'));
}

public function test_makeLegacyCommands()
{
$app = $this->createApplication();
Expand Down
50 changes: 45 additions & 5 deletions tests/Hooks/ApplicationHookTests.php
@@ -1,16 +1,56 @@
<?php

use LaravelPlus\Extension\Hooks\ApplicationHook;
use Illuminate\Foundation\Application;
use Illuminate\Contracts\Foundation\Application;

class ApplicationHookTests extends TestCase
{
public function test_withNoParameter()
public function test_getResolvedMethod()
{
$app = $this->createMock(Application::class);
$app = $this->createApplication();

$hook = new ApplicationHook($app);

Assert::notNull($hook->getResolved());
}

public function test_getBindingsMethod()
{
$app = $this->createApplication();
$app->bind('foo', 'bar');

$hook = new ApplicationHook($app);

Assert::arrayHasKey('foo', $hook->getBindings());
}

public function test_getInstancesMethod()
{
$app = $this->createApplication();
$app->instance('foo', 'bar');

$hook = new ApplicationHook($app);

Assert::isInstanceOf(Application::class, $app);
Assert::isInstanceOf(ApplicationHook::class, $hook);
Assert::same(['foo' => 'bar'], $hook->getInstances());
}

public function test_getAliasesMethod()
{
$app = $this->createApplication();
$app->alias('foo', 'bar');

$hook = new ApplicationHook($app);

Assert::same(['bar' => 'foo'], $hook->getAliases());
}

public function test_getTagsMethod()
{
$app = $this->createApplication();

$hook = new ApplicationHook($app);

Assert::same([], $hook->getTags());
}

}

0 comments on commit b748d68

Please sign in to comment.