| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
- namespace Illuminate\Tests\Support;
- use Illuminate\Foundation\Application;
- use Illuminate\Support\ServiceProvider;
- use Mockery as m;
- use PHPUnit\Framework\TestCase;
- class SupportServiceProviderTest extends TestCase
- {
- protected function setUp(): void
- {
- ServiceProvider::$publishes = [];
- ServiceProvider::$publishGroups = [];
- $app = m::mock(Application::class)->makePartial();
- $one = new ServiceProviderForTestingOne($app);
- $one->boot();
- $two = new ServiceProviderForTestingTwo($app);
- $two->boot();
- }
- protected function tearDown(): void
- {
- m::close();
- }
- public function testPublishableServiceProviders()
- {
- $toPublish = ServiceProvider::publishableProviders();
- $expected = [
- ServiceProviderForTestingOne::class,
- ServiceProviderForTestingTwo::class,
- ];
- $this->assertEquals($expected, $toPublish, 'Publishable service providers do not return expected set of providers.');
- }
- public function testPublishableGroups()
- {
- $toPublish = ServiceProvider::publishableGroups();
- $this->assertEquals(['some_tag', 'tag_one', 'tag_two'], $toPublish, 'Publishable groups do not return expected set of groups.');
- }
- public function testSimpleAssetsArePublishedCorrectly()
- {
- $toPublish = ServiceProvider::pathsToPublish(ServiceProviderForTestingOne::class);
- $this->assertArrayHasKey('source/unmarked/one', $toPublish, 'Service provider does not return expected published path key.');
- $this->assertArrayHasKey('source/tagged/one', $toPublish, 'Service provider does not return expected published path key.');
- $this->assertEquals(['source/unmarked/one' => 'destination/unmarked/one', 'source/tagged/one' => 'destination/tagged/one', 'source/tagged/multiple' => 'destination/tagged/multiple'], $toPublish, 'Service provider does not return expected set of published paths.');
- }
- public function testMultipleAssetsArePublishedCorrectly()
- {
- $toPublish = ServiceProvider::pathsToPublish(ServiceProviderForTestingTwo::class);
- $this->assertArrayHasKey('source/unmarked/two/a', $toPublish, 'Service provider does not return expected published path key.');
- $this->assertArrayHasKey('source/unmarked/two/b', $toPublish, 'Service provider does not return expected published path key.');
- $this->assertArrayHasKey('source/unmarked/two/c', $toPublish, 'Service provider does not return expected published path key.');
- $this->assertArrayHasKey('source/tagged/two/a', $toPublish, 'Service provider does not return expected published path key.');
- $this->assertArrayHasKey('source/tagged/two/b', $toPublish, 'Service provider does not return expected published path key.');
- $expected = [
- 'source/unmarked/two/a' => 'destination/unmarked/two/a',
- 'source/unmarked/two/b' => 'destination/unmarked/two/b',
- 'source/unmarked/two/c' => 'destination/tagged/two/a',
- 'source/tagged/two/a' => 'destination/tagged/two/a',
- 'source/tagged/two/b' => 'destination/tagged/two/b',
- ];
- $this->assertEquals($expected, $toPublish, 'Service provider does not return expected set of published paths.');
- }
- public function testSimpleTaggedAssetsArePublishedCorrectly()
- {
- $toPublish = ServiceProvider::pathsToPublish(ServiceProviderForTestingOne::class, 'some_tag');
- $this->assertArrayNotHasKey('source/tagged/two/a', $toPublish, 'Service provider does return unexpected tagged path key.');
- $this->assertArrayNotHasKey('source/tagged/two/b', $toPublish, 'Service provider does return unexpected tagged path key.');
- $this->assertArrayHasKey('source/tagged/one', $toPublish, 'Service provider does not return expected tagged path key.');
- $this->assertEquals(['source/tagged/one' => 'destination/tagged/one'], $toPublish, 'Service provider does not return expected set of published tagged paths.');
- }
- public function testMultipleTaggedAssetsArePublishedCorrectly()
- {
- $toPublish = ServiceProvider::pathsToPublish(ServiceProviderForTestingTwo::class, 'some_tag');
- $this->assertArrayHasKey('source/tagged/two/a', $toPublish, 'Service provider does not return expected tagged path key.');
- $this->assertArrayHasKey('source/tagged/two/b', $toPublish, 'Service provider does not return expected tagged path key.');
- $this->assertArrayNotHasKey('source/tagged/one', $toPublish, 'Service provider does return unexpected tagged path key.');
- $this->assertArrayNotHasKey('source/unmarked/two/c', $toPublish, 'Service provider does return unexpected tagged path key.');
- $expected = [
- 'source/tagged/two/a' => 'destination/tagged/two/a',
- 'source/tagged/two/b' => 'destination/tagged/two/b',
- ];
- $this->assertEquals($expected, $toPublish, 'Service provider does not return expected set of published tagged paths.');
- }
- public function testMultipleTaggedAssetsAreMergedCorrectly()
- {
- $toPublish = ServiceProvider::pathsToPublish(null, 'some_tag');
- $this->assertArrayHasKey('source/tagged/two/a', $toPublish, 'Service provider does not return expected tagged path key.');
- $this->assertArrayHasKey('source/tagged/two/b', $toPublish, 'Service provider does not return expected tagged path key.');
- $this->assertArrayHasKey('source/tagged/one', $toPublish, 'Service provider does not return expected tagged path key.');
- $this->assertArrayNotHasKey('source/unmarked/two/c', $toPublish, 'Service provider does return unexpected tagged path key.');
- $expected = [
- 'source/tagged/one' => 'destination/tagged/one',
- 'source/tagged/two/a' => 'destination/tagged/two/a',
- 'source/tagged/two/b' => 'destination/tagged/two/b',
- ];
- $this->assertEquals($expected, $toPublish, 'Service provider does not return expected set of published tagged paths.');
- }
- }
- class ServiceProviderForTestingOne extends ServiceProvider
- {
- public function register()
- {
- //
- }
- public function boot()
- {
- $this->publishes(['source/unmarked/one' => 'destination/unmarked/one']);
- $this->publishes(['source/tagged/one' => 'destination/tagged/one'], 'some_tag');
- $this->publishes(['source/tagged/multiple' => 'destination/tagged/multiple'], ['tag_one', 'tag_two']);
- }
- }
- class ServiceProviderForTestingTwo extends ServiceProvider
- {
- public function register()
- {
- //
- }
- public function boot()
- {
- $this->publishes(['source/unmarked/two/a' => 'destination/unmarked/two/a']);
- $this->publishes(['source/unmarked/two/b' => 'destination/unmarked/two/b']);
- $this->publishes(['source/unmarked/two/c' => 'destination/tagged/two/a']);
- $this->publishes(['source/tagged/two/a' => 'destination/tagged/two/a'], 'some_tag');
- $this->publishes(['source/tagged/two/b' => 'destination/tagged/two/b'], 'some_tag');
- }
- }
|