1
0
mirror of https://github.com/flarum/core.git synced 2025-08-06 08:27:42 +02:00

Slug Extender Test works

This commit is contained in:
Matthew Kilgore
2020-11-23 21:04:49 -05:00
parent 696dc8ef6b
commit 6a1017d4b1
3 changed files with 13 additions and 47 deletions

View File

@@ -50,10 +50,12 @@ class HttpServiceProvider extends AbstractServiceProvider
$compiledDrivers = []; $compiledDrivers = [];
foreach ($this->app->make('flarum.http.slugDrivers') as $resourceClass => $resourceDrivers) { foreach ($this->app->make('flarum.http.slugDrivers') as $resourceClass => $resourceDrivers) {
$driverClass = $resourceDrivers[$settings->get("slug_driver_$resourceClass", 'default')]; $driverKey = $settings->get("slug_driver_$resourceClass", 'default');
echo 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; if (array_key_exists($driverKey, $resourceDrivers)) {
echo "slug_driver_$resourceClass"; $driverClass = $resourceDrivers[$driverKey];
//echo $settings->get("slug_driver_$resourceClass", 'default'); } else {
$driverClass = $resourceDrivers['default'];
}
$compiledDrivers[$resourceClass] = $this->app->make($driverClass); $compiledDrivers[$resourceClass] = $this->app->make($driverClass);
} }
@@ -70,14 +72,14 @@ class HttpServiceProvider extends AbstractServiceProvider
]); ]);
}, },
Post::class => function (UrlGenerator $urlGenerator, Post $post) use ($slugManager) { Post::class => function (UrlGenerator $urlGenerator, Post $post) use ($slugManager) {
return $urlGenerator->to('forum')->route('user', [ return $urlGenerator->to('forum')->route('post', [
'id' => $slugManager->forResource(Discussion::class)->toSlug($post->discussion), 'id' => $slugManager->forResource(Discussion::class)->toSlug($post->discussion),
'near' => $post->id, 'near' => $post->id,
]); ]);
}, },
User::class => function (UrlGenerator $urlGenerator, User $user) use ($slugManager) { User::class => function (UrlGenerator $urlGenerator, User $user) use ($slugManager) {
return $urlGenerator->to('forum')->route('user', [ return $urlGenerator->to('forum')->route('user', [
'id' => $slugManager->forResource(User::class)->toSlug($user) 'username' => $slugManager->forResource(User::class)->toSlug($user)
]); ]);
}, },
]; ];

View File

@@ -79,8 +79,6 @@ class UrlGenerator
{ {
$callback = $this->resourceUrlGenerators[$resourceClass]; $callback = $this->resourceUrlGenerators[$resourceClass];
$result = $callback($this, $instance, ...$args); return $callback($this, $instance, ...$args);
return $result;
} }
} }

View File

@@ -14,6 +14,7 @@ use Flarum\Extend;
use Flarum\Http\SlugDriverInterface; use Flarum\Http\SlugDriverInterface;
use Flarum\Http\SlugManager; use Flarum\Http\SlugManager;
use Flarum\Http\UrlGenerator; use Flarum\Http\UrlGenerator;
use Flarum\Settings\SettingsRepositoryInterface;
use Flarum\Tests\integration\RetrievesAuthorizedUsers; use Flarum\Tests\integration\RetrievesAuthorizedUsers;
use Flarum\Tests\integration\TestCase; use Flarum\Tests\integration\TestCase;
use Flarum\User\User; use Flarum\User\User;
@@ -24,35 +25,18 @@ class ModelUrlTest extends TestCase
protected function prepDb() protected function prepDb()
{ {
$userClass = User::class;
$this->prepareDatabase([ $this->prepareDatabase([
'users' => [ 'users' => [
$this->adminUser(), $this->adminUser(),
$this->normalUser(), $this->normalUser(),
], ],
]);
}
protected function activateCustomDriver()
{
$userClass = User::class;
$this->prepareDatabase([
'settings' => [ 'settings' => [
['key' => "slug_driver_$userClass", 'value' => 'testDriver'], ['key' => "slug_driver_$userClass", 'value' => 'testDriver'],
], ]
]); ]);
} }
// public function tearDown()
// {
// $userClass = User::class;
// $this->prepareDatabase([
// 'settings' => [
// ['key' => "slug_driver_$userClass", 'value' => 'default'],
// ],
// ]);
// parent::tearDown();
// }
/** /**
* @test * @test
*/ */
@@ -102,7 +86,7 @@ class ModelUrlTest extends TestCase
/** /**
* @test * @test
*/ */
public function custom_slug_driver_doesnt_have_effect_unless_enabled() public function custom_slug_driver_has_effect_if_added()
{ {
$this->extend((new Extend\ModelUrl(User::class))->addSlugDriver('testDriver', TestSlugDriver::class)); $this->extend((new Extend\ModelUrl(User::class))->addSlugDriver('testDriver', TestSlugDriver::class));
@@ -112,24 +96,6 @@ class ModelUrlTest extends TestCase
$testUser = User::find(1); $testUser = User::find(1);
$this->assertEquals('admin', $slugManager->forResource(User::class)->toSlug($testUser));
$this->assertEquals('1', $slugManager->forResource(User::class)->fromSlug('admin', $testUser)->id);
}
/**
* @test
*/
public function custom_slug_driver_has_effect_if_enabled()
{
$this->extend((new Extend\ModelUrl(User::class))->addSlugDriver('testDriver', TestSlugDriver::class));
$this->prepDb();
$this->activateCustomDriver();
$slugManager = $this->app()->getContainer()->make(SlugManager::class);
$testUser = User::find(1);
$this->assertEquals('test-slug', $slugManager->forResource(User::class)->toSlug($testUser)); $this->assertEquals('test-slug', $slugManager->forResource(User::class)->toSlug($testUser));
$this->assertEquals('1', $slugManager->forResource(User::class)->fromSlug('random-gibberish', $testUser)->id); $this->assertEquals('1', $slugManager->forResource(User::class)->fromSlug('random-gibberish', $testUser)->id);
} }