Files
vuefilemanager/tests/Feature/Admin/LanguageEditorTest.php
2021-03-27 18:53:41 +01:00

239 lines
5.6 KiB
PHP

<?php
namespace Tests\Feature\Admin;
use App\Models\Language;
use App\Models\Setting;
use App\Models\User;
use App\Services\SetupService;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Sanctum\Sanctum;
use Tests\TestCase;
class LanguageEditorTest extends TestCase
{
use DatabaseMigrations;
protected $setup;
public function __construct()
{
parent::__construct();
$this->setup = app()->make(SetupService::class);
}
/**
* @test
*/
public function it_create_language()
{
Setting::create([
'name' => 'license',
'value' => 'Extended',
]);
$admin = User::factory(User::class)
->create(['role' => 'admin']);
Sanctum::actingAs($admin);
$this->postJson('/api/admin/languages', [
'name' => 'Slovenčina',
'locale' => 'sk',
])
->assertStatus(201)
->assertJsonFragment([
'name' => 'Slovenčina',
'locale' => 'sk',
]);
$this->assertDatabaseHas('languages', [
'name' => 'Slovenčina',
'locale' => 'sk',
]);
$this->assertDatabaseHas('language_strings', [
'key' => 'actions.close',
'value' => 'Close',
'lang' => 'sk',
]);
}
/**
* @test
*/
public function it_update_language()
{
$this->setup->seed_default_language();
$admin = User::factory(User::class)
->create(['role' => 'admin']);
Sanctum::actingAs($admin);
$language = Language::first();
$this->patchJson("/api/admin/languages/$language->id", [
'name' => 'name',
'value' => 'Slovenčina',
])
->assertStatus(201)
->assertJsonFragment([
'name' => 'Slovenčina',
]);
$this->assertDatabaseHas('languages', [
'name' => 'Slovenčina',
'locale' => 'en',
]);
}
/**
* @test
*/
public function it_delete_language()
{
$language = Language::create([
'name' => 'Slovenčina',
'locale' => 'sk'
]);
$admin = User::factory(User::class)
->create(['role' => 'admin']);
Sanctum::actingAs($admin);
$this->deleteJson("/api/admin/languages/$language->id")
->assertStatus(204);
$this->assertDatabaseMissing('languages', [
'name' => 'Slovenčina',
'locale' => 'sk',
]);
$this->assertDatabaseMissing('language_strings', [
'key' => 'actions.close',
'value' => 'Close',
'lang' => 'sk',
]);
}
/**
* @test
*/
public function it_try_to_delete_default_language()
{
$this->setup->seed_default_language();
$admin = User::factory(User::class)
->create(['role' => 'admin']);
Sanctum::actingAs($admin);
$language = Language::first();
$this->deleteJson("/api/admin/languages/$language->id")
->assertStatus(401);
}
/**
* @test
*/
public function it_get_all_languages()
{
$this->setup->seed_default_language();
$admin = User::factory(User::class)
->create(['role' => 'admin']);
Sanctum::actingAs($admin);
$this->getJson('/api/admin/languages')
->assertStatus(200)
->assertJsonFragment([
"name" => "English",
"current_language" => "en",
]);
}
/**
* @test
*/
public function it_update_language_string()
{
$this->setup->seed_default_language();
$admin = User::factory(User::class)
->create(['role' => 'admin']);
Sanctum::actingAs($admin);
$language = Language::first();
$this->patchJson("/api/admin/languages/$language->id/strings", [
'name' => 'actions.close',
'value' => 'Close It, now!',
]);
$this->assertDatabaseHas('language_strings', [
'key' => 'actions.close',
'value' => 'Close It, now!',
'lang' => 'en',
]);
}
/**
* @test
*/
public function it_get_language_strings_by_selected_language_id()
{
$this->setup->seed_default_language();
$admin = User::factory(User::class)
->create(['role' => 'admin']);
Sanctum::actingAs($admin);
$language = Language::first();
$this->getJson("/api/admin/languages/$language->id/strings")
->assertStatus(200)
->assertJsonFragment([
"key" => "actions.close",
"value" => "Close",
"lang" => "en",
]);
}
/**
* @test
*/
public function it_get_translated_string_from_t_helper_function()
{
$this->setup->seed_default_language();
Language::first()
->languageStrings()
->forceCreate([
"key" => "test",
"value" => "Hi, my name is :name :surname",
"lang" => "en",
]);
$this->assertEquals(
__t('actions.close'),
'Close'
);
$this->assertEquals(
__t('shared_link_email_subject', ['user' => 'John']),
'🙋 John share some files with you. Look at it!'
);
$this->assertEquals(
__t('test', ['name' => 'John', 'surname' => 'Doe']),
'Hi, my name is John Doe'
);
}
}