mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
huge Laravel 10 upgrade
This commit is contained in:
375
support/laravel-translation/tests/DatabaseDriverTest.php
Normal file
375
support/laravel-translation/tests/DatabaseDriverTest.php
Normal file
@@ -0,0 +1,375 @@
|
||||
<?php
|
||||
|
||||
namespace JoeDixon\Translation\Tests;
|
||||
|
||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use JoeDixon\Translation\Drivers\Translation;
|
||||
use JoeDixon\Translation\Events\TranslationAdded;
|
||||
use JoeDixon\Translation\Exceptions\LanguageExistsException;
|
||||
use JoeDixon\Translation\Language;
|
||||
use JoeDixon\Translation\Translation as TranslationModel;
|
||||
use JoeDixon\Translation\TranslationBindingsServiceProvider;
|
||||
use JoeDixon\Translation\TranslationServiceProvider;
|
||||
use Orchestra\Testbench\TestCase;
|
||||
|
||||
class DatabaseDriverTest extends TestCase
|
||||
{
|
||||
use DatabaseMigrations;
|
||||
|
||||
private $translation;
|
||||
|
||||
/**
|
||||
* Setup the test environment.
|
||||
*/
|
||||
public function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
$this->withFactories(__DIR__.'/../database/factories');
|
||||
$this->translation = $this->app[Translation::class];
|
||||
}
|
||||
|
||||
protected function getEnvironmentSetUp($app)
|
||||
{
|
||||
$app['config']->set('translation.driver', 'database');
|
||||
$app['config']->set('database.default', 'testing');
|
||||
$app['config']->set('database.connections.testing', [
|
||||
'driver' => 'sqlite',
|
||||
'database' => ':memory:',
|
||||
]);
|
||||
}
|
||||
|
||||
protected function getPackageProviders($app)
|
||||
{
|
||||
return [
|
||||
TranslationServiceProvider::class,
|
||||
TranslationBindingsServiceProvider::class,
|
||||
];
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_returns_all_languages()
|
||||
{
|
||||
$newLanguages = factory(Language::class, 2)->create();
|
||||
$newLanguages = $newLanguages->mapWithKeys(function ($language) {
|
||||
return [$language->language => $language->name];
|
||||
})->toArray();
|
||||
$languages = $this->translation->allLanguages();
|
||||
|
||||
$this->assertEquals($languages->count(), 3);
|
||||
$this->assertEquals($languages->toArray(), ['en' => 'en'] + $newLanguages);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_returns_all_translations()
|
||||
{
|
||||
$default = Language::where('language', config('app.locale'))->first();
|
||||
factory(Language::class)->create(['language' => 'es', 'name' => 'Español']);
|
||||
factory(TranslationModel::class)->states('group')->create(['language_id' => $default->id, 'group' => 'test', 'key' => 'hello', 'value' => 'Hello']);
|
||||
factory(TranslationModel::class)->states('group')->create(['language_id' => $default->id, 'group' => 'test', 'key' => 'whats_up', 'value' => "What's up!"]);
|
||||
factory(TranslationModel::class)->states('single')->create(['language_id' => $default->id, 'group' => 'single', 'key' => 'Hello', 'value' => 'Hello']);
|
||||
factory(TranslationModel::class)->states('single')->create(['language_id' => $default->id, 'group' => 'single', 'key' => "What's up", 'value' => "What's up!"]);
|
||||
|
||||
$translations = $this->translation->allTranslations();
|
||||
|
||||
$this->assertEquals($translations->count(), 2);
|
||||
$this->assertEquals(['single' => ['single' => ['Hello' => 'Hello', "What's up" => "What's up!"]], 'group' => ['test' => ['hello' => 'Hello', 'whats_up' => "What's up!"]]], $translations->toArray()['en']);
|
||||
$this->assertArrayHasKey('en', $translations->toArray());
|
||||
$this->assertArrayHasKey('es', $translations->toArray());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_returns_all_translations_for_a_given_language()
|
||||
{
|
||||
$default = Language::where('language', config('app.locale'))->first();
|
||||
factory(TranslationModel::class)->states('group')->create(['language_id' => $default->id, 'group' => 'test', 'key' => 'hello', 'value' => 'Hello']);
|
||||
factory(TranslationModel::class)->states('group')->create(['language_id' => $default->id, 'group' => 'test', 'key' => 'whats_up', 'value' => "What's up!"]);
|
||||
factory(TranslationModel::class)->states('single')->create(['language_id' => $default->id, 'group' => 'single', 'key' => 'Hello', 'value' => 'Hello']);
|
||||
factory(TranslationModel::class)->states('single')->create(['language_id' => $default->id, 'group' => 'single', 'key' => "What's up", 'value' => "What's up!"]);
|
||||
|
||||
$translations = $this->translation->allTranslationsFor('en');
|
||||
$this->assertEquals($translations->count(), 2);
|
||||
$this->assertEquals(['single' => ['single' => ['Hello' => 'Hello', "What's up" => "What's up!"]], 'group' => ['test' => ['hello' => 'Hello', 'whats_up' => "What's up!"]]], $translations->toArray());
|
||||
$this->assertArrayHasKey('single', $translations->toArray());
|
||||
$this->assertArrayHasKey('group', $translations->toArray());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_throws_an_exception_if_a_language_exists()
|
||||
{
|
||||
$this->expectException(LanguageExistsException::class);
|
||||
$this->translation->addLanguage('en');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_new_language()
|
||||
{
|
||||
$this->assertDatabaseMissing(config('translation.database.languages_table'), [
|
||||
'language' => 'fr',
|
||||
'name' => 'Français',
|
||||
]);
|
||||
|
||||
$this->translation->addLanguage('fr', 'Français');
|
||||
$this->assertDatabaseHas(config('translation.database.languages_table'), [
|
||||
'language' => 'fr',
|
||||
'name' => 'Français',
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_new_translation_to_a_new_group()
|
||||
{
|
||||
$this->translation->addGroupTranslation('es', 'test', 'hello', 'Hola!');
|
||||
|
||||
$translations = $this->translation->allTranslationsFor('es');
|
||||
|
||||
$this->assertEquals(['test' => ['hello' => 'Hola!']], $translations->toArray()['group']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_new_translation_to_an_existing_translation_group()
|
||||
{
|
||||
$translation = factory(TranslationModel::class)->create();
|
||||
|
||||
$this->translation->addGroupTranslation($translation->language->language, "{$translation->group}", 'test', 'Testing');
|
||||
|
||||
$translations = $this->translation->allTranslationsFor($translation->language->language);
|
||||
$this->assertSame([$translation->group => [$translation->key => $translation->value, 'test' => 'Testing']], $translations->toArray()['group']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_new_single_translation()
|
||||
{
|
||||
$this->translation->addSingleTranslation('es', 'single', 'Hello', 'Hola!');
|
||||
|
||||
$translations = $this->translation->allTranslationsFor('es');
|
||||
|
||||
$this->assertEquals(['single' => ['Hello' => 'Hola!']], $translations->toArray()['single']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_new_single_translation_to_an_existing_language()
|
||||
{
|
||||
$translation = factory(TranslationModel::class)->states('single')->create();
|
||||
|
||||
$this->translation->addSingleTranslation($translation->language->language, 'single', 'Test', 'Testing');
|
||||
|
||||
$translations = $this->translation->allTranslationsFor($translation->language->language);
|
||||
|
||||
$this->assertEquals(['single' => ['Test' => 'Testing', $translation->key => $translation->value]], $translations->toArray()['single']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_get_a_collection_of_group_names_for_a_given_language()
|
||||
{
|
||||
$language = factory(Language::class)->create(['language' => 'en']);
|
||||
factory(TranslationModel::class)->create([
|
||||
'language_id' => $language->id,
|
||||
'group' => 'test',
|
||||
]);
|
||||
|
||||
$groups = $this->translation->getGroupsFor('en');
|
||||
|
||||
$this->assertEquals($groups->toArray(), ['test']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_merge_a_language_with_the_base_language()
|
||||
{
|
||||
$default = Language::where('language', config('app.locale'))->first();
|
||||
factory(TranslationModel::class)->states('group')->create(['language_id' => $default->id, 'group' => 'test', 'key' => 'hello', 'value' => 'Hello']);
|
||||
factory(TranslationModel::class)->states('group')->create(['language_id' => $default->id, 'group' => 'test', 'key' => 'whats_up', 'value' => "What's up!"]);
|
||||
factory(TranslationModel::class)->states('single')->create(['language_id' => $default->id, 'group' => 'single', 'key' => 'Hello', 'value' => 'Hello']);
|
||||
factory(TranslationModel::class)->states('single')->create(['language_id' => $default->id, 'group' => 'single', 'key' => "What's up", 'value' => "What's up!"]);
|
||||
|
||||
$this->translation->addGroupTranslation('es', 'test', 'hello', 'Hola!');
|
||||
$translations = $this->translation->getSourceLanguageTranslationsWith('es');
|
||||
|
||||
$this->assertEquals($translations->toArray(), [
|
||||
'group' => [
|
||||
'test' => [
|
||||
'hello' => ['en' => 'Hello', 'es' => 'Hola!'],
|
||||
'whats_up' => ['en' => "What's up!", 'es' => ''],
|
||||
],
|
||||
],
|
||||
'single' => [
|
||||
'single' => [
|
||||
'Hello' => [
|
||||
'en' => 'Hello',
|
||||
'es' => '',
|
||||
],
|
||||
"What's up" => [
|
||||
'en' => "What's up!",
|
||||
'es' => '',
|
||||
],
|
||||
],
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_vendor_namespaced_translations()
|
||||
{
|
||||
$this->translation->addGroupTranslation('es', 'translation_test::test', 'hello', 'Hola!');
|
||||
|
||||
$this->assertEquals($this->translation->allTranslationsFor('es')->toArray(), [
|
||||
'group' => [
|
||||
'translation_test::test' => [
|
||||
'hello' => 'Hola!',
|
||||
],
|
||||
],
|
||||
'single' => [],
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_nested_translation()
|
||||
{
|
||||
$this->translation->addGroupTranslation('en', 'test', 'test.nested', 'Nested!');
|
||||
|
||||
$this->assertEquals($this->translation->getGroupTranslationsFor('en')->toArray(), [
|
||||
'test' => [
|
||||
'test.nested' => 'Nested!',
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_nested_vendor_namespaced_translations()
|
||||
{
|
||||
$this->translation->addGroupTranslation('es', 'translation_test::test', 'nested.hello', 'Hola!');
|
||||
|
||||
$this->assertEquals($this->translation->allTranslationsFor('es')->toArray(), [
|
||||
'group' => [
|
||||
'translation_test::test' => [
|
||||
'nested.hello' => 'Hola!',
|
||||
],
|
||||
],
|
||||
'single' => [],
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_merge_a_namespaced_language_with_the_base_language()
|
||||
{
|
||||
$this->translation->addGroupTranslation('en', 'translation_test::test', 'hello', 'Hello');
|
||||
$this->translation->addGroupTranslation('es', 'translation_test::test', 'hello', 'Hola!');
|
||||
$translations = $this->translation->getSourceLanguageTranslationsWith('es');
|
||||
|
||||
$this->assertEquals($translations->toArray(), [
|
||||
'group' => [
|
||||
'translation_test::test' => [
|
||||
'hello' => ['en' => 'Hello', 'es' => 'Hola!'],
|
||||
],
|
||||
],
|
||||
'single' => [],
|
||||
]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_list_of_languages_can_be_viewed()
|
||||
{
|
||||
$newLanguages = factory(Language::class, 2)->create();
|
||||
$response = $this->get(config('translation.ui_url'));
|
||||
|
||||
$response->assertSee(config('app.locale'));
|
||||
foreach ($newLanguages as $language) {
|
||||
$response->assertSee($language->language);
|
||||
}
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function the_language_creation_page_can_be_viewed()
|
||||
{
|
||||
$this->translation->addGroupTranslation(config('app.locale'), 'translation::translation', 'add_language', 'Add a new language');
|
||||
$this->get(config('translation.ui_url').'/create')
|
||||
->assertSee('Add a new language');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_language_can_be_added()
|
||||
{
|
||||
$this->post(config('translation.ui_url'), ['locale' => 'de'])
|
||||
->assertRedirect();
|
||||
|
||||
$this->assertDatabaseHas('languages', ['language' => 'de']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_list_of_translations_can_be_viewed()
|
||||
{
|
||||
$default = Language::where('language', config('app.locale'))->first();
|
||||
factory(TranslationModel::class)->states('group')->create(['language_id' => $default->id, 'group' => 'test', 'key' => 'hello', 'value' => 'Hello']);
|
||||
factory(TranslationModel::class)->states('group')->create(['language_id' => $default->id, 'group' => 'test', 'key' => 'whats_up', 'value' => "What's up!"]);
|
||||
factory(TranslationModel::class)->states('single')->create(['language_id' => $default->id, 'key' => 'Hello', 'value' => 'Hello!']);
|
||||
factory(TranslationModel::class)->states('single')->create(['language_id' => $default->id, 'key' => "What's up", 'value' => 'Sup!']);
|
||||
|
||||
$this->get(config('translation.ui_url').'/en/translations')
|
||||
->assertSee('hello')
|
||||
->assertSee('whats_up')
|
||||
->assertSee('Hello')
|
||||
->assertSee('Sup!');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function the_translation_creation_page_can_be_viewed()
|
||||
{
|
||||
$this->translation->addGroupTranslation('en', 'translation::translation', 'add_translation', 'Add a translation');
|
||||
$this->get(config('translation.ui_url').'/'.config('app.locale').'/translations/create')
|
||||
->assertSee('Add a translation');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_new_translation_can_be_added()
|
||||
{
|
||||
$this->post(config('translation.ui_url').'/'.config('app.locale').'/translations', ['group' => 'single', 'key' => 'joe', 'value' => 'is cool'])
|
||||
->assertRedirect();
|
||||
|
||||
$this->assertDatabaseHas('translations', ['language_id' => 1, 'key' => 'joe', 'value' => 'is cool']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_translation_can_be_updated()
|
||||
{
|
||||
$default = Language::where('language', config('app.locale'))->first();
|
||||
factory(TranslationModel::class)->states('group')->create(['language_id' => $default->id, 'group' => 'test', 'key' => 'hello', 'value' => 'Hello']);
|
||||
$this->assertDatabaseHas('translations', ['language_id' => 1, 'group' => 'test', 'key' => 'hello', 'value' => 'Hello']);
|
||||
|
||||
$this->post(config('translation.ui_url').'/en', ['group' => 'test', 'key' => 'hello', 'value' => 'Hello there!'])
|
||||
->assertStatus(200);
|
||||
|
||||
$this->assertDatabaseHas('translations', ['language_id' => 1, 'group' => 'test', 'key' => 'hello', 'value' => 'Hello there!']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function adding_a_translation_fires_an_event_with_the_expected_data()
|
||||
{
|
||||
Event::fake();
|
||||
|
||||
$data = ['key' => 'joe', 'value' => 'is cool'];
|
||||
$this->post(config('translation.ui_url').'/en/translations', $data);
|
||||
|
||||
Event::assertDispatched(TranslationAdded::class, function ($event) use ($data) {
|
||||
return $event->language === 'en' &&
|
||||
$event->group === 'single' &&
|
||||
$event->value === $data['value'] &&
|
||||
$event->key === $data['key'];
|
||||
});
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function updating_a_translation_fires_an_event_with_the_expected_data()
|
||||
{
|
||||
Event::fake();
|
||||
|
||||
$data = ['group' => 'test', 'key' => 'hello', 'value' => 'Hello there!'];
|
||||
$this->post(config('translation.ui_url').'/en/translations', $data);
|
||||
|
||||
Event::assertDispatched(TranslationAdded::class, function ($event) use ($data) {
|
||||
return $event->language === 'en' &&
|
||||
$event->group === $data['group'] &&
|
||||
$event->value === $data['value'] &&
|
||||
$event->key === $data['key'];
|
||||
});
|
||||
}
|
||||
}
|
||||
380
support/laravel-translation/tests/FileDriverTest.php
Normal file
380
support/laravel-translation/tests/FileDriverTest.php
Normal file
@@ -0,0 +1,380 @@
|
||||
<?php
|
||||
|
||||
namespace JoeDixon\Translation\Tests;
|
||||
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use JoeDixon\Translation\Drivers\Translation;
|
||||
use JoeDixon\Translation\Events\TranslationAdded;
|
||||
use JoeDixon\Translation\Exceptions\LanguageExistsException;
|
||||
use JoeDixon\Translation\TranslationBindingsServiceProvider;
|
||||
use JoeDixon\Translation\TranslationServiceProvider;
|
||||
use Orchestra\Testbench\TestCase;
|
||||
|
||||
class FileDriverTest extends TestCase
|
||||
{
|
||||
private $translation;
|
||||
|
||||
/**
|
||||
* Setup the test environment.
|
||||
*/
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
app()['path.lang'] = __DIR__.'/fixtures/lang';
|
||||
$this->translation = app()->make(Translation::class);
|
||||
}
|
||||
|
||||
protected function getPackageProviders($app)
|
||||
{
|
||||
return [
|
||||
TranslationServiceProvider::class,
|
||||
TranslationBindingsServiceProvider::class,
|
||||
];
|
||||
}
|
||||
|
||||
protected function getEnvironmentSetUp($app)
|
||||
{
|
||||
$app['config']->set('translation.driver', 'file');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_returns_all_languages()
|
||||
{
|
||||
$languages = $this->translation->allLanguages();
|
||||
|
||||
$this->assertEquals($languages->count(), 2);
|
||||
$this->assertEquals($languages->toArray(), ['en' => 'en', 'es' => 'es']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_returns_all_translations()
|
||||
{
|
||||
$translations = $this->translation->allTranslations();
|
||||
|
||||
$this->assertEquals($translations->count(), 2);
|
||||
$this->assertEquals(['single' => ['single' => ['Hello' => 'Hello', "What's up" => "What's up!"]], 'group' => ['test' => ['hello' => 'Hello', 'whats_up' => "What's up!"]]], $translations->toArray()['en']);
|
||||
$this->assertArrayHasKey('en', $translations->toArray());
|
||||
$this->assertArrayHasKey('es', $translations->toArray());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_returns_all_translations_for_a_given_language()
|
||||
{
|
||||
$translations = $this->translation->allTranslationsFor('en');
|
||||
$this->assertEquals($translations->count(), 2);
|
||||
$this->assertEquals(['single' => ['single' => ['Hello' => 'Hello', "What's up" => "What's up!"]], 'group' => ['test' => ['hello' => 'Hello', 'whats_up' => "What's up!"]]], $translations->toArray());
|
||||
$this->assertArrayHasKey('single', $translations->toArray());
|
||||
$this->assertArrayHasKey('group', $translations->toArray());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_throws_an_exception_if_a_language_exists()
|
||||
{
|
||||
$this->expectException(LanguageExistsException::class);
|
||||
$this->translation->addLanguage('en');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_new_language()
|
||||
{
|
||||
$this->translation->addLanguage('fr');
|
||||
|
||||
$this->assertTrue(file_exists(__DIR__.'/fixtures/lang/fr.json'));
|
||||
$this->assertTrue(file_exists(__DIR__.'/fixtures/lang/fr'));
|
||||
|
||||
rmdir(__DIR__.'/fixtures/lang/fr');
|
||||
unlink(__DIR__.'/fixtures/lang/fr.json');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_new_translation_to_a_new_group()
|
||||
{
|
||||
$this->translation->addGroupTranslation('es', 'test', 'hello', 'Hola!');
|
||||
|
||||
$translations = $this->translation->allTranslationsFor('es');
|
||||
|
||||
$this->assertEquals(['test' => ['hello' => 'Hola!']], $translations->toArray()['group']);
|
||||
|
||||
unlink(__DIR__.'/fixtures/lang/es/test.php');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_new_translation_to_an_existing_translation_group()
|
||||
{
|
||||
$this->translation->addGroupTranslation('en', 'test', 'test', 'Testing');
|
||||
|
||||
$translations = $this->translation->allTranslationsFor('en');
|
||||
|
||||
$this->assertEquals(['test' => ['hello' => 'Hello', 'whats_up' => 'What\'s up!', 'test' => 'Testing']], $translations->toArray()['group']);
|
||||
|
||||
file_put_contents(
|
||||
app()['path.lang'].'/en/test.php',
|
||||
"<?php\n\nreturn ".var_export(['hello' => 'Hello', 'whats_up' => 'What\'s up!'], true).';'.\PHP_EOL
|
||||
);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_new_single_translation()
|
||||
{
|
||||
$this->translation->addSingleTranslation('es', 'single', 'Hello', 'Hola!');
|
||||
|
||||
$translations = $this->translation->allTranslationsFor('es');
|
||||
|
||||
$this->assertEquals(['single' => ['Hello' => 'Hola!']], $translations->toArray()['single']);
|
||||
|
||||
unlink(__DIR__.'/fixtures/lang/es.json');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_new_single_translation_to_an_existing_language()
|
||||
{
|
||||
$this->translation->addSingleTranslation('en', 'single', 'Test', 'Testing');
|
||||
|
||||
$translations = $this->translation->allTranslationsFor('en');
|
||||
|
||||
$this->assertEquals(['single' => ['Hello' => 'Hello', 'What\'s up' => 'What\'s up!', 'Test' => 'Testing']], $translations->toArray()['single']);
|
||||
|
||||
file_put_contents(
|
||||
app()['path.lang'].'/en.json',
|
||||
json_encode((object) ['Hello' => 'Hello', 'What\'s up' => 'What\'s up!'], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)
|
||||
);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_get_a_collection_of_group_names_for_a_given_language()
|
||||
{
|
||||
$groups = $this->translation->getGroupsFor('en');
|
||||
|
||||
$this->assertEquals($groups->toArray(), ['test']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_merge_a_language_with_the_base_language()
|
||||
{
|
||||
$this->translation->addGroupTranslation('es', 'test', 'hello', 'Hola!');
|
||||
$translations = $this->translation->getSourceLanguageTranslationsWith('es');
|
||||
|
||||
$this->assertEquals($translations->toArray(), [
|
||||
'group' => [
|
||||
'test' => [
|
||||
'hello' => ['en' => 'Hello', 'es' => 'Hola!'],
|
||||
'whats_up' => ['en' => "What's up!", 'es' => ''],
|
||||
],
|
||||
],
|
||||
'single' => [
|
||||
'single' => [
|
||||
'Hello' => [
|
||||
'en' => 'Hello',
|
||||
'es' => '',
|
||||
],
|
||||
"What's up" => [
|
||||
'en' => "What's up!",
|
||||
'es' => '',
|
||||
],
|
||||
],
|
||||
],
|
||||
]);
|
||||
|
||||
unlink(__DIR__.'/fixtures/lang/es/test.php');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_vendor_namespaced_translations()
|
||||
{
|
||||
$this->translation->addGroupTranslation('es', 'translation_test::test', 'hello', 'Hola!');
|
||||
|
||||
$this->assertEquals($this->translation->allTranslationsFor('es')->toArray(), [
|
||||
'group' => [
|
||||
'translation_test::test' => [
|
||||
'hello' => 'Hola!',
|
||||
],
|
||||
],
|
||||
'single' => [],
|
||||
]);
|
||||
|
||||
\File::deleteDirectory(__DIR__.'/fixtures/lang/vendor');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_a_nested_translation()
|
||||
{
|
||||
$this->translation->addGroupTranslation('en', 'test', 'test.nested', 'Nested!');
|
||||
|
||||
$this->assertEquals($this->translation->getGroupTranslationsFor('en')->toArray(), [
|
||||
'test' => [
|
||||
'hello' => 'Hello',
|
||||
'test.nested' => 'Nested!',
|
||||
'whats_up' => 'What\'s up!',
|
||||
],
|
||||
]);
|
||||
|
||||
file_put_contents(
|
||||
app()['path.lang'].'/en/test.php',
|
||||
"<?php\n\nreturn ".var_export(['hello' => 'Hello', 'whats_up' => 'What\'s up!'], true).';'.\PHP_EOL
|
||||
);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_add_nested_vendor_namespaced_translations()
|
||||
{
|
||||
$this->translation->addGroupTranslation('es', 'translation_test::test', 'nested.hello', 'Hola!');
|
||||
|
||||
$this->assertEquals($this->translation->allTranslationsFor('es')->toArray(), [
|
||||
'group' => [
|
||||
'translation_test::test' => [
|
||||
'nested.hello' => 'Hola!',
|
||||
],
|
||||
],
|
||||
'single' => [],
|
||||
]);
|
||||
|
||||
\File::deleteDirectory(__DIR__.'/fixtures/lang/vendor');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_can_merge_a_namespaced_language_with_the_base_language()
|
||||
{
|
||||
$this->translation->addGroupTranslation('en', 'translation_test::test', 'hello', 'Hello');
|
||||
$this->translation->addGroupTranslation('es', 'translation_test::test', 'hello', 'Hola!');
|
||||
$translations = $this->translation->getSourceLanguageTranslationsWith('es');
|
||||
|
||||
$this->assertEquals($translations->toArray(), [
|
||||
'group' => [
|
||||
'test' => [
|
||||
'hello' => ['en' => 'Hello', 'es' => ''],
|
||||
'whats_up' => ['en' => "What's up!", 'es' => ''],
|
||||
],
|
||||
'translation_test::test' => [
|
||||
'hello' => ['en' => 'Hello', 'es' => 'Hola!'],
|
||||
],
|
||||
],
|
||||
'single' => [
|
||||
'single' => [
|
||||
'Hello' => [
|
||||
'en' => 'Hello',
|
||||
'es' => '',
|
||||
],
|
||||
"What's up" => [
|
||||
'en' => "What's up!",
|
||||
'es' => '',
|
||||
],
|
||||
],
|
||||
],
|
||||
]);
|
||||
|
||||
\File::deleteDirectory(__DIR__.'/fixtures/lang/vendor');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_list_of_languages_can_be_viewed()
|
||||
{
|
||||
$this->get(config('translation.ui_url'))
|
||||
->assertSee('en');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function the_language_creation_page_can_be_viewed()
|
||||
{
|
||||
$this->get(config('translation.ui_url').'/create')
|
||||
->assertSee('Add a new language');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_language_can_be_added()
|
||||
{
|
||||
$this->post(config('translation.ui_url'), ['locale' => 'de'])
|
||||
->assertRedirect();
|
||||
|
||||
$this->assertTrue(file_exists(__DIR__.'/fixtures/lang/de.json'));
|
||||
$this->assertTrue(file_exists(__DIR__.'/fixtures/lang/de'));
|
||||
|
||||
rmdir(__DIR__.'/fixtures/lang/de');
|
||||
unlink(__DIR__.'/fixtures/lang/de.json');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_list_of_translations_can_be_viewed()
|
||||
{
|
||||
$this->get(config('translation.ui_url').'/en/translations')
|
||||
->assertSee('hello')
|
||||
->assertSee('whats_up');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function the_translation_creation_page_can_be_viewed()
|
||||
{
|
||||
$this->get(config('translation.ui_url').'/'.config('app.locale').'/translations/create')
|
||||
->assertSee('Add a translation');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_new_translation_can_be_added()
|
||||
{
|
||||
$this->post(config('translation.ui_url').'/en/translations', ['key' => 'joe', 'value' => 'is cool'])
|
||||
->assertRedirect();
|
||||
$translations = $this->translation->getSingleTranslationsFor('en');
|
||||
|
||||
$this->assertEquals(['Hello' => 'Hello', 'What\'s up' => 'What\'s up!', 'joe' => 'is cool'], $translations->toArray()['single']);
|
||||
|
||||
file_put_contents(
|
||||
app()['path.lang'].'/en.json',
|
||||
json_encode((object) ['Hello' => 'Hello', 'What\'s up' => 'What\'s up!'], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)
|
||||
);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function a_translation_can_be_updated()
|
||||
{
|
||||
$this->post(config('translation.ui_url').'/en', ['group' => 'test', 'key' => 'hello', 'value' => 'Hello there!'])
|
||||
->assertStatus(200);
|
||||
|
||||
$translations = $this->translation->getGroupTranslationsFor('en');
|
||||
|
||||
$this->assertEquals(['hello' => 'Hello there!', 'whats_up' => 'What\'s up!'], $translations->toArray()['test']);
|
||||
|
||||
file_put_contents(
|
||||
app()['path.lang'].'/en/test.php',
|
||||
"<?php\n\nreturn ".var_export(['hello' => 'Hello', 'whats_up' => 'What\'s up!'], true).';'.\PHP_EOL
|
||||
);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function adding_a_translation_fires_an_event_with_the_expected_data()
|
||||
{
|
||||
Event::fake();
|
||||
|
||||
$data = ['key' => 'joe', 'value' => 'is cool'];
|
||||
$this->post(config('translation.ui_url').'/en/translations', $data);
|
||||
|
||||
Event::assertDispatched(TranslationAdded::class, function ($event) use ($data) {
|
||||
return $event->language === 'en' &&
|
||||
$event->group === 'single' &&
|
||||
$event->value === $data['value'] &&
|
||||
$event->key === $data['key'];
|
||||
});
|
||||
file_put_contents(
|
||||
app()['path.lang'].'/en.json',
|
||||
json_encode((object) ['Hello' => 'Hello', 'What\'s up' => 'What\'s up!'], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)
|
||||
);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function updating_a_translation_fires_an_event_with_the_expected_data()
|
||||
{
|
||||
Event::fake();
|
||||
|
||||
$data = ['group' => 'test', 'key' => 'hello', 'value' => 'Hello there!'];
|
||||
$this->post(config('translation.ui_url').'/en/translations', $data);
|
||||
|
||||
Event::assertDispatched(TranslationAdded::class, function ($event) use ($data) {
|
||||
return $event->language === 'en' &&
|
||||
$event->group === $data['group'] &&
|
||||
$event->value === $data['value'] &&
|
||||
$event->key === $data['key'];
|
||||
});
|
||||
file_put_contents(
|
||||
app()['path.lang'].'/en/test.php',
|
||||
"<?php\n\nreturn ".var_export(['hello' => 'Hello', 'whats_up' => 'What\'s up!'], true).';'.\PHP_EOL
|
||||
);
|
||||
}
|
||||
}
|
||||
25
support/laravel-translation/tests/PackageIsLoadedTest.php
Normal file
25
support/laravel-translation/tests/PackageIsLoadedTest.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace JoeDixon\Translation\Tests;
|
||||
|
||||
use JoeDixon\Translation\TranslationBindingsServiceProvider;
|
||||
use JoeDixon\Translation\TranslationServiceProvider;
|
||||
use Orchestra\Testbench\TestCase;
|
||||
|
||||
class PackageIsLoadedTest extends TestCase
|
||||
{
|
||||
protected function getPackageProviders($app)
|
||||
{
|
||||
return [
|
||||
TranslationServiceProvider::class,
|
||||
TranslationBindingsServiceProvider::class,
|
||||
];
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function the_translation_pacakage_is_loaded()
|
||||
{
|
||||
$this->assertArrayHasKey(TranslationServiceProvider::class, app()->getLoadedProviders());
|
||||
$this->assertArrayHasKey(TranslationBindingsServiceProvider::class, app()->getLoadedProviders());
|
||||
}
|
||||
}
|
||||
37
support/laravel-translation/tests/ScannerTest.php
Normal file
37
support/laravel-translation/tests/ScannerTest.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace JoeDixon\Translation\Tests;
|
||||
|
||||
use JoeDixon\Translation\Scanner;
|
||||
use JoeDixon\Translation\TranslationBindingsServiceProvider;
|
||||
use JoeDixon\Translation\TranslationServiceProvider;
|
||||
use Orchestra\Testbench\TestCase;
|
||||
|
||||
class ScannerTest extends TestCase
|
||||
{
|
||||
private $scanner;
|
||||
|
||||
protected function getPackageProviders($app)
|
||||
{
|
||||
return [
|
||||
TranslationServiceProvider::class,
|
||||
TranslationBindingsServiceProvider::class,
|
||||
];
|
||||
}
|
||||
|
||||
protected function getEnvironmentSetUp($app)
|
||||
{
|
||||
$app['config']->set('translation.scan_paths', __DIR__.'/fixtures/scan-tests');
|
||||
$app['config']->set('translation.translation_methods', ['__', 'trans', 'trans_choice', '@lang', 'Lang::get']);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function it_finds_all_translations()
|
||||
{
|
||||
$this->scanner = app()->make(Scanner::class);
|
||||
$matches = $this->scanner->findTranslations();
|
||||
|
||||
$this->assertEquals($matches, ['single' => ['single' => ['This will go in the JSON array' => '', 'This will also go in the JSON array' => '', 'trans' => '']], 'group' => ['lang' => ['first_match' => ''], 'lang_get' => ['first' => '', 'second' => ''], 'trans' => ['first_match' => '', 'third_match' => ''], 'trans_choice' => ['with_params' => '']]]);
|
||||
$this->assertCount(2, $matches);
|
||||
}
|
||||
}
|
||||
4
support/laravel-translation/tests/fixtures/lang/en.json
vendored
Normal file
4
support/laravel-translation/tests/fixtures/lang/en.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"Hello": "Hello",
|
||||
"What's up": "What's up!"
|
||||
}
|
||||
6
support/laravel-translation/tests/fixtures/lang/en/test.php
vendored
Normal file
6
support/laravel-translation/tests/fixtures/lang/en/test.php
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array (
|
||||
'hello' => 'Hello',
|
||||
'whats_up' => 'What\'s up!',
|
||||
);
|
||||
0
support/laravel-translation/tests/fixtures/lang/es/.gitignore
vendored
Normal file
0
support/laravel-translation/tests/fixtures/lang/es/.gitignore
vendored
Normal file
6
support/laravel-translation/tests/fixtures/scan-tests/__.txt
vendored
Normal file
6
support/laravel-translation/tests/fixtures/scan-tests/__.txt
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
|
||||
__('This will go in the JSON array')
|
||||
|
||||
__(
|
||||
'This will also go in the JSON array'
|
||||
)
|
||||
2
support/laravel-translation/tests/fixtures/scan-tests/at_lang.txt
vendored
Normal file
2
support/laravel-translation/tests/fixtures/scan-tests/at_lang.txt
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
@lang('lang.first_match')
|
||||
3
support/laravel-translation/tests/fixtures/scan-tests/lang_get.txt
vendored
Normal file
3
support/laravel-translation/tests/fixtures/scan-tests/lang_get.txt
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
Lang::get('lang_get.first')
|
||||
Lang::get('lang_get.second');
|
||||
4
support/laravel-translation/tests/fixtures/scan-tests/trans.txt
vendored
Normal file
4
support/laravel-translation/tests/fixtures/scan-tests/trans.txt
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
trans('trans.first_match');
|
||||
trans('trans');
|
||||
trans('trans.third_match');
|
||||
2
support/laravel-translation/tests/fixtures/scan-tests/trans_choice.txt
vendored
Normal file
2
support/laravel-translation/tests/fixtures/scan-tests/trans_choice.txt
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
trans_choice('trans_choice.with_params', ['parameters' => 'Go here'])
|
||||
Reference in New Issue
Block a user