mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-05-16 02:05:01 +00:00
Merge remote-tracking branch 'origin/v2' into oasis
# Conflicts: # app/Http/Controllers/User/AccountController.php # app/Http/helpers.php # public/mix-manifest.json # resources/js/components/FilesView/Icons/AlphabetIcon.vue # resources/js/components/FilesView/MobileActionButton.vue # resources/js/views/Admin/AppSettings/AppSettingsTabs/Appearance.vue # resources/js/views/Admin/Users/UserTabs/UserDetail.vue # resources/js/views/Upgrade/UpgradeBilling.vue # resources/views/index.blade.php # resources/views/vuefilemanager/invoice.blade.php # resources/views/vuefilemanager/others/color-template.blade.php
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature\Accounts;
|
||||
namespace Tests\Feature\Admin;
|
||||
|
||||
use App\Models\File;
|
||||
use App\Models\Folder;
|
||||
@@ -0,0 +1,265 @@
|
||||
<?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_translations', [
|
||||
'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_translations', [
|
||||
'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([
|
||||
"locale" => "en",
|
||||
"actions.close" => "Close",
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @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_translations', [
|
||||
'key' => 'actions.close',
|
||||
'value' => 'Close It, now!',
|
||||
'lang' => 'en',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_get_language_with_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")
|
||||
->assertStatus(200)
|
||||
->assertJsonFragment([
|
||||
"actions.close" => "Close",
|
||||
"locale" => "en",
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_get_language_translations_for_frontend()
|
||||
{
|
||||
$this->setup->seed_default_language();
|
||||
|
||||
$this->getJson("/translations/en")
|
||||
->assertStatus(200)
|
||||
->assertJsonFragment([
|
||||
"actions.close" => "Close",
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_get_custom_translations_from_file_config()
|
||||
{
|
||||
$this->setup->seed_default_language();
|
||||
|
||||
$this->assertDatabaseHas('language_translations', [
|
||||
'key' => 'custom',
|
||||
'value' => 'translation',
|
||||
'lang' => 'en',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_get_translated_string_from_t_helper_function()
|
||||
{
|
||||
$this->setup->seed_default_language();
|
||||
|
||||
Language::first()
|
||||
->languageTranslations()
|
||||
->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'
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -32,7 +32,7 @@ class SchedulerTest extends TestCase
|
||||
$share = Share::factory(Share::class)
|
||||
->create([
|
||||
'expire_in' => 24,
|
||||
'created_at' => Carbon::now()->subDay(),
|
||||
'created_at' => now()->subDay(),
|
||||
]);
|
||||
|
||||
$this->scheduler->delete_expired_shared_links();
|
||||
@@ -58,7 +58,7 @@ class SchedulerTest extends TestCase
|
||||
|
||||
$zip = Zip::factory(Zip::class)->create([
|
||||
'basename' => 'EHWKcuvKzA4Gv29v-archive.zip',
|
||||
'created_at' => Carbon::now()->subDay(),
|
||||
'created_at' => now()->subDay(),
|
||||
]);
|
||||
|
||||
$this->scheduler->delete_old_zips();
|
||||
|
||||
+6
-6
@@ -195,9 +195,9 @@ class SubscriptionTest extends TestCase
|
||||
"capacity" => 1000,
|
||||
"capacity_formatted" => "1TB",
|
||||
"slug" => "business-pack",
|
||||
"canceled_at" => format_date(Carbon::now(), '%d. %B. %Y'),
|
||||
"created_at" => format_date(Carbon::now(), '%d. %B. %Y'),
|
||||
"ends_at" => format_date(Carbon::now()->addMonth(), '%d. %B. %Y'),
|
||||
"canceled_at" => format_date(now(), '%d. %B. %Y'),
|
||||
"created_at" => format_date(now(), '%d. %B. %Y'),
|
||||
"ends_at" => format_date(now()->addMonth(), '%d. %B. %Y'),
|
||||
]
|
||||
]
|
||||
]);
|
||||
@@ -265,9 +265,9 @@ class SubscriptionTest extends TestCase
|
||||
"capacity" => 1000,
|
||||
"capacity_formatted" => "1TB",
|
||||
"slug" => "business-pack",
|
||||
"canceled_at" => format_date(Carbon::now(), '%d. %B. %Y'),
|
||||
"created_at" => format_date(Carbon::now(), '%d. %B. %Y'),
|
||||
"ends_at" => format_date(Carbon::now()->addMonth(), '%d. %B. %Y'),
|
||||
"canceled_at" => format_date(now(), '%d. %B. %Y'),
|
||||
"created_at" => format_date(now(), '%d. %B. %Y'),
|
||||
"ends_at" => format_date(now()->addMonth(), '%d. %B. %Y'),
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
@@ -228,7 +228,7 @@ class BrowseTest extends TestCase
|
||||
"author" => "user",
|
||||
"type" => "file",
|
||||
'user_id' => $user->id,
|
||||
'created_at' => Carbon::now(),
|
||||
'created_at' => now(),
|
||||
]);
|
||||
|
||||
$this->travel(5)->minutes();
|
||||
@@ -242,7 +242,7 @@ class BrowseTest extends TestCase
|
||||
"author" => "user",
|
||||
"type" => "file",
|
||||
'user_id' => $user->id,
|
||||
'created_at' => Carbon::now(),
|
||||
'created_at' => now(),
|
||||
]);
|
||||
|
||||
$this->getJson("/api/browse/latest")
|
||||
@@ -339,7 +339,7 @@ class BrowseTest extends TestCase
|
||||
'name' => 'root',
|
||||
'user_id' => $user->id,
|
||||
"author" => "user",
|
||||
'deleted_at' => Carbon::now(),
|
||||
'deleted_at' => now(),
|
||||
]);
|
||||
|
||||
$file = File::factory(File::class)
|
||||
@@ -351,14 +351,14 @@ class BrowseTest extends TestCase
|
||||
"author" => "user",
|
||||
"type" => "file",
|
||||
'user_id' => $user->id,
|
||||
'deleted_at' => Carbon::now(),
|
||||
'deleted_at' => now(),
|
||||
]);
|
||||
|
||||
File::factory(File::class)
|
||||
->create([
|
||||
'folder_id' => $folder->id,
|
||||
'user_id' => $user->id,
|
||||
'deleted_at' => Carbon::now(),
|
||||
'deleted_at' => now(),
|
||||
]);
|
||||
|
||||
$this->getJson("/api/browse/trash")
|
||||
|
||||
@@ -35,7 +35,7 @@ class TrashTest extends TestCase
|
||||
|
||||
$attributes = [
|
||||
'user_id' => $user->id,
|
||||
'deleted_at' => Carbon::now(),
|
||||
'deleted_at' => now(),
|
||||
];
|
||||
|
||||
$folder = Folder::factory(Folder::class)
|
||||
|
||||
@@ -2,14 +2,17 @@
|
||||
|
||||
namespace Tests\Feature\Setup;
|
||||
|
||||
use App\Models\Language;
|
||||
use App\Models\LanguageTranslation;
|
||||
use App\Models\Setting;
|
||||
use App\Services\SetupService;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||
use Storage;
|
||||
use Tests\TestCase;
|
||||
|
||||
class SetupServiceTest extends TestCase
|
||||
{
|
||||
use DatabaseMigrations;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@@ -31,4 +34,31 @@ class SetupServiceTest extends TestCase
|
||||
Storage::disk('local')->assertExists($directory);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_seed_default_language()
|
||||
{
|
||||
Setting::create([
|
||||
'name' => 'license',
|
||||
'value' => 'Extended',
|
||||
]);
|
||||
|
||||
Language::create([
|
||||
'name' => 'English',
|
||||
'locale' => 'en'
|
||||
]);
|
||||
|
||||
$this->assertDatabaseHas('languages', [
|
||||
'name' => 'English',
|
||||
'locale' => 'en',
|
||||
]);
|
||||
|
||||
$this->assertDatabaseHas('language_translations', [
|
||||
'key' => 'actions.close',
|
||||
'value' => 'Close',
|
||||
'lang' => 'en',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,6 +265,17 @@ class SetupWizardTest extends TestCase
|
||||
'value' => '8624194e-3156-4cd0-944e-3440fcecdacb',
|
||||
]);
|
||||
|
||||
$this->assertDatabaseHas('languages', [
|
||||
'name' => 'English',
|
||||
'locale' => 'en',
|
||||
]);
|
||||
|
||||
$this->assertDatabaseHas('language_translations', [
|
||||
'key' => 'actions.close',
|
||||
'value' => 'Close',
|
||||
'lang' => 'en',
|
||||
]);
|
||||
|
||||
$avatar = User::first()
|
||||
->settings
|
||||
->getRawOriginal('avatar');
|
||||
|
||||
@@ -104,7 +104,7 @@ class VisitorBrowseTest extends TestCase
|
||||
'user_id' => $file->user_id,
|
||||
'type' => 'file',
|
||||
'is_protected' => true,
|
||||
'password' => Hash::make('secret'),
|
||||
'password' => bcrypt('secret'),
|
||||
]);
|
||||
|
||||
$this->postJson("/api/browse/authenticate/$share->token", [
|
||||
@@ -131,7 +131,7 @@ class VisitorBrowseTest extends TestCase
|
||||
'user_id' => $file->user_id,
|
||||
'type' => 'file',
|
||||
'is_protected' => true,
|
||||
'password' => Hash::make('secret'),
|
||||
'password' => bcrypt('secret'),
|
||||
]);
|
||||
|
||||
$this->postJson("/api/browse/authenticate/$share->token", [
|
||||
@@ -545,7 +545,7 @@ class VisitorBrowseTest extends TestCase
|
||||
'type' => 'folder',
|
||||
'permission' => 'editor',
|
||||
'is_protected' => $is_protected,
|
||||
'password' => Hash::make('secret'),
|
||||
'password' => bcrypt('secret'),
|
||||
]);
|
||||
|
||||
$folder_level_2 = Folder::factory(Folder::class)
|
||||
@@ -654,7 +654,7 @@ class VisitorBrowseTest extends TestCase
|
||||
'type' => 'folder',
|
||||
'permission' => 'editor',
|
||||
'is_protected' => $is_protected,
|
||||
'password' => Hash::make('secret'),
|
||||
'password' => bcrypt('secret'),
|
||||
]);
|
||||
|
||||
$file = File::factory(File::class)
|
||||
@@ -711,7 +711,7 @@ class VisitorBrowseTest extends TestCase
|
||||
'type' => 'folder',
|
||||
'permission' => 'editor',
|
||||
'is_protected' => $is_protected,
|
||||
'password' => Hash::make('secret'),
|
||||
'password' => bcrypt('secret'),
|
||||
]);
|
||||
|
||||
File::factory(File::class)
|
||||
@@ -765,7 +765,7 @@ class VisitorBrowseTest extends TestCase
|
||||
'type' => 'file',
|
||||
'permission' => 'editor',
|
||||
'is_protected' => $is_protected,
|
||||
'password' => Hash::make('secret'),
|
||||
'password' => bcrypt('secret'),
|
||||
]);
|
||||
|
||||
// Check shared item protected by password
|
||||
|
||||
Reference in New Issue
Block a user