diff --git a/composer.json b/composer.json index 305dba9..c355bca 100755 --- a/composer.json +++ b/composer.json @@ -10,17 +10,24 @@ } ], "require": { - "php": ">=5.5.0", - "illuminate/support": "5.*" + "php": "^5.5.9 || ^7.0", + "illuminate/support": "5.1.* || 5.2.*" }, "require-dev" :{ - "phpspec/phpspec": "~2.0" + "graham-campbell/testbench": "^3.1", + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.8 || ^5.0" }, "autoload": { "psr-4": { "TomLingham\\Searchy\\": "src/" } }, + "autoload-dev": { + "psr-4": { + "TomLingham\\Tests\\Searchy\\": "tests/" + } + }, "config": { "preferred-install": "dist" }, diff --git a/src/SearchyServiceProvider.php b/src/SearchyServiceProvider.php index b2fb6cc..ef51203 100755 --- a/src/SearchyServiceProvider.php +++ b/src/SearchyServiceProvider.php @@ -2,67 +2,82 @@ namespace TomLingham\Searchy; +use Illuminate\Contracts\Container\Container; +use Illuminate\Foundation\Application as LaravelApplication; use Illuminate\Support\ServiceProvider; +use Laravel\Lumen\Application as LumenApplication; +/** + * This is the searchy service provider class. + * + * @author Tom Lingham + * @author Vincent Klaiber + */ class SearchyServiceProvider extends ServiceProvider { /** - * Indicates if loading of the provider is deferred. + * Boot the service provider. * - * @var bool - */ - protected $defer = false; - - /** - * Register the service provider. + * @return void */ - public function register() + public function boot() { - // + $this->setupConfig(); } /** - * Registers searchy. + * Setup the config. + * + * @return void */ - public function registerSearchy() + protected function setupConfig() { - // Laravel <= 5.1 - $closure = function ($app) { - return new SearchBuilder( $app['config'] ); - }; - + $source = realpath(__DIR__.'/../config/searchy.php'); - if ( method_exists($this->app, 'bindShared') ) - { - $this->app->bindShared('searchy', $closure); + if ($this->app instanceof LaravelApplication && $this->app->runningInConsole()) { + $this->publishes([$source => config_path('searchy.php')]); + } elseif ($this->app instanceof LumenApplication) { + $this->app->configure('searchy'); } - // Laravel 5.2 Goodness :) - else { - $this->app->singleton('searchy', $closure); - } + $this->mergeConfigFrom($source, 'searchy'); } /** - * Loads the configuration file. + * Register the service provider. + * + * @return void */ - public function setupConfig() + public function register() { - $source = realpath(__DIR__.'/../config/searchy.php'); + $this->registerSearchBuilder(); + } - if (class_exists('Illuminate\Foundation\Application', false)) { - $this->publishes([$source => config_path('searchy.php')]); - } + /** + * Register the search builder class. + * + * @return void + */ + public function registerSearchBuilder() + { + $this->app->singleton('searchy', function (Container $app) { + $config = $app['config']; - $this->mergeConfigFrom($source, 'searchy'); + return new SearchBuilder($config); + }); + + $this->app->alias('searchy', HashidsFactory::class); } /** - * Boot the service provider. + * Get the services provided by the provider. + * + * @return string[] */ - public function boot() + public function provides() { - $this->setupConfig(); - $this->registerSearchy(); + return [ + 'searchy', + ]; } } diff --git a/tests/.gitkeep b/tests/.gitkeep deleted file mode 100755 index e69de29..0000000 diff --git a/tests/AbstractTestCase.php b/tests/AbstractTestCase.php new file mode 100644 index 0000000..01ff1ca --- /dev/null +++ b/tests/AbstractTestCase.php @@ -0,0 +1,26 @@ + + */ +abstract class AbstractTestCase extends AbstractPackageTestCase +{ + /** + * Get the service provider class. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * + * @return string + */ + protected function getServiceProviderClass($app) + { + return SearchyServiceProvider::class; + } +} diff --git a/tests/Facades/SearchyTest.php b/tests/Facades/SearchyTest.php new file mode 100644 index 0000000..81a925a --- /dev/null +++ b/tests/Facades/SearchyTest.php @@ -0,0 +1,48 @@ + + */ +class SearchyTest extends AbstractTestCase +{ + use FacadeTrait; + + /** + * Get the facade accessor. + * + * @return string + */ + protected function getFacadeAccessor() + { + return 'searchy'; + } + + /** + * Get the facade class. + * + * @return string + */ + protected function getFacadeClass() + { + return Searchy::class; + } + + /** + * Get the facade root. + * + * @return string + */ + protected function getFacadeRoot() + { + return SearchBuilder::class; + } +} diff --git a/tests/ServiceProviderTest.php b/tests/ServiceProviderTest.php new file mode 100644 index 0000000..0d26e52 --- /dev/null +++ b/tests/ServiceProviderTest.php @@ -0,0 +1,15 @@ + + */ +class ServiceProviderTest extends AbstractTestCase +{ + use ServiceProviderTrait; +}