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:
@@ -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)
|
||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
@@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user