1
0
Fork 0
mirror of https://github.com/archtechx/gloss.git synced 2025-12-12 03:04:04 +00:00

Conditional overrides

This commit is contained in:
Samuel Štancl 2020-12-13 20:28:33 +01:00
parent fbf5049110
commit 914bdfb296
5 changed files with 143 additions and 26 deletions

View file

@ -3,8 +3,8 @@
namespace Lean\Gloss\Tests;
use Lean\Gloss\Gloss;
use Lean\Gloss\GlossServiceProvider;
use Lean\Gloss\GlossTranslator;
use Illuminate\Support\Str;
class GlossTest extends TestCase
{
@ -219,6 +219,78 @@ class GlossTest extends TestCase
$this->assertSame('Je tam <span class="font-medium">5</span> jablek', gloss()->choice('test.apples', 5));
}
/** @test */
public function key_overrides_can_have_conditions()
{
$this->addMessages('en', 'test', [
'resource.create' => 'Create :Resource',
'foo.create' => 'Foo/Create',
]);
Gloss::key('test.resource.create', 'test.foo.create', ['resource' => 'foo']);
$this->assertSame('Foo/Create', Gloss::get('test.resource.create', ['resource' => 'foo']));
$this->assertSame('Create Bar', Gloss::get('test.resource.create', ['resource' => 'bar']));
}
/** @test */
public function value_overrides_can_have_conditions()
{
$this->addMessages('en', 'test', [
'resource.create' => 'Create :Resource',
]);
Gloss::value('test.resource.create', 'Bar/Create', ['resource' => 'bar']);
$this->assertSame('Create Foo', Gloss::get('test.resource.create', ['resource' => 'foo']));
$this->assertSame('Bar/Create', Gloss::get('test.resource.create', ['resource' => 'bar']));
}
/** @test */
public function bulk_value_overrides_can_have_conditions()
{
$this->addMessages('en', 'test', [
'resource.create' => 'Create :Resource',
'resource.edit' => 'Edit :Resource',
]);
gloss([
'test.resource.create' => 'Foo/Create',
'test.resource.edit' => 'Foo/Edit',
], ['resource' => 'foo']);
$this->assertSame('Foo/Create', Gloss::get('test.resource.create', ['resource' => 'foo']));
$this->assertSame('Foo/Edit', Gloss::get('test.resource.edit', ['resource' => 'foo']));
$this->assertSame('Create Bar', Gloss::get('test.resource.create', ['resource' => 'bar']));
$this->assertSame('Edit Bar', Gloss::get('test.resource.edit', ['resource' => 'bar']));
}
/** @test */
public function custom_condition_for_key_and_value_overrides_can_be_used()
{
$this->addMessages('en', 'test', [
'resource.index' => 'Index of :Resource',
'resource.create' => 'Create :Resource',
'resource.show' => 'Detail of :Resource',
'resource.edit' => 'Edit :Resource',
]);
gloss([
'test.resource.index' => 'custom',
'test.resource.create' => 'custom',
], fn ($data) => Str::startsWith($data['resource'], 'f'));
$this->assertSame('custom', Gloss::get('test.resource.index', ['resource' => 'foo']));
$this->assertSame('custom', Gloss::get('test.resource.create', ['resource' => 'foo']));
$this->assertSame('Detail of Foo', Gloss::get('test.resource.show', ['resource' => 'foo']));
$this->assertSame('Edit Foo', Gloss::get('test.resource.edit', ['resource' => 'foo']));
$this->assertSame('Index of Bar', Gloss::get('test.resource.index', ['resource' => 'bar']));
$this->assertSame('Create Bar', Gloss::get('test.resource.create', ['resource' => 'bar']));
$this->assertSame('Detail of Bar', Gloss::get('test.resource.show', ['resource' => 'bar']));
$this->assertSame('Edit Bar', Gloss::get('test.resource.edit', ['resource' => 'bar']));
}
protected function addMessage(string $key, string $value, string $locale = 'en', string $group = 'test', string $namespace = null): void
{
$this->addMessages($locale, $group, [$key => $value], $namespace);