added test for getRecordsCount, format code

This commit is contained in:
Milos Holba
2022-05-02 18:21:20 +02:00
parent ad8793ce28
commit f75c20e5a7
24 changed files with 147 additions and 102 deletions

View File

@@ -905,7 +905,7 @@ return [
'total_x_of_x_members' => 'Total ${use} of ${total} Members', 'total_x_of_x_members' => 'Total ${use} of ${total} Members',
'go_back_from_x' => 'Go back from {location}', 'go_back_from_x' => 'Go back from {location}',
'new_team_invitation' => 'New Team Invitation', 'new_team_invitation' => 'New Team Invitation',
'x_invite_to_join_team' => ":name invite you to join into Team Folder.", 'x_invite_to_join_team' => ':name invite you to join into Team Folder.',
'team_invitation_notify_title' => 'You are invited to collaboration with team folder in :app', 'team_invitation_notify_title' => 'You are invited to collaboration with team folder in :app',
'team_invitation_notify_desc' => 'You are invited to collaboration with team folder', 'team_invitation_notify_desc' => 'You are invited to collaboration with team folder',
'team_invitation_notify_desc_without_account' => 'You are invited to collaboration with team folder. But at first, you have to create an account to proceed into team folder.', 'team_invitation_notify_desc_without_account' => 'You are invited to collaboration with team folder. But at first, you have to create an account to proceed into team folder.',
@@ -915,12 +915,12 @@ return [
'file_request_filled_desc' => "Your file request for ':name' folder was filled successfully.", 'file_request_filled_desc' => "Your file request for ':name' folder was filled successfully.",
'show_files' => 'Show Files', 'show_files' => 'Show Files',
'file_request_filled_mail' => "Your file request was fulfilled in your ':name' folder", 'file_request_filled_mail' => "Your file request was fulfilled in your ':name' folder",
'file_request_filled_mail_note' => "We are emailing you because your file request was fulfilled. Please click on the link below to show uploaded files.", 'file_request_filled_mail_note' => 'We are emailing you because your file request was fulfilled. Please click on the link below to show uploaded files.',
'thanks_salutation' => 'Thank you for using our application!', 'thanks_salutation' => 'Thank you for using our application!',
'upload_your_files' => 'Upload your Files', 'upload_your_files' => 'Upload your Files',
'file_request_optional_message' => "PS: :name left you a message: :notes", 'file_request_optional_message' => 'PS: :name left you a message: :notes',
'file_request_notify_title' => ':name Request You for File Upload', 'file_request_notify_title' => ':name Request You for File Upload',
'file_request_notify_description' => "We are emailing you because :name requested files from you. Please click on the link below and upload your files for :name.", 'file_request_notify_description' => 'We are emailing you because :name requested files from you. Please click on the link below and upload your files for :name.',
'user_action_not_allowed' => 'This user action is not allowed.', 'user_action_not_allowed' => 'This user action is not allowed.',
'pcs.' => 'Pcs.', 'pcs.' => 'Pcs.',
'mem.' => 'Mem.', 'mem.' => 'Mem.',

View File

@@ -62,6 +62,6 @@ return [
], ],
'paginate' => [ 'paginate' => [
'perPage' => 15 'perPage' => 15,
] ],
]; ];

View File

@@ -1,8 +1,8 @@
<?php <?php
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Schema; use Schema;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {

View File

@@ -1,5 +1,4 @@
<?php <?php
namespace App\Socialite\Controllers; namespace App\Socialite\Controllers;
use App\Users\Models\User; use App\Users\Models\User;
@@ -8,15 +7,16 @@ use App\Http\Controllers\Controller;
use Laravel\Socialite\Facades\Socialite; use Laravel\Socialite\Facades\Socialite;
use App\Users\Actions\CreateNewUserAction; use App\Users\Actions\CreateNewUserAction;
use Illuminate\Contracts\Auth\StatefulGuard; use Illuminate\Contracts\Auth\StatefulGuard;
use VueFileManager\Subscription\Domain\Plans\Exceptions\MeteredBillingPlanDoesntExist;
use VueFileManager\Subscription\Domain\Plans\Models\Plan; use VueFileManager\Subscription\Domain\Plans\Models\Plan;
use VueFileManager\Subscription\Domain\Plans\Exceptions\MeteredBillingPlanDoesntExist;
class SocialiteCallbackController extends Controller class SocialiteCallbackController extends Controller
{ {
public function __construct( public function __construct(
protected StatefulGuard $guard, protected StatefulGuard $guard,
public CreateNewUserAction $createNewUser, public CreateNewUserAction $createNewUser,
) {} ) {
}
/** /**
* @throws MeteredBillingPlanDoesntExist * @throws MeteredBillingPlanDoesntExist
@@ -60,7 +60,7 @@ class SocialiteCallbackController extends Controller
} }
// Check if account registration is enabled // Check if account registration is enabled
if (!$isAllowedRegistration) { if (! $isAllowedRegistration) {
return response([ return response([
'type' => 'error', 'type' => 'error',
'message' => 'User registration is not allowed', 'message' => 'User registration is not allowed',

View File

@@ -1,10 +1,9 @@
<?php <?php
namespace App\Users\Actions; namespace App\Users\Actions;
use App\Users\Rules\PasswordValidationRules;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use App\Users\Rules\PasswordValidationRules;
use Laravel\Fortify\Contracts\UpdatesUserPasswords; use Laravel\Fortify\Contracts\UpdatesUserPasswords;
class UpdateUserPassword implements UpdatesUserPasswords class UpdateUserPassword implements UpdatesUserPasswords
@@ -25,7 +24,7 @@ class UpdateUserPassword implements UpdatesUserPasswords
'current_password' => ['required', 'string'], 'current_password' => ['required', 'string'],
'password' => $this->passwordRules(), 'password' => $this->passwordRules(),
])->after(function ($validator) use ($user, $input) { ])->after(function ($validator) use ($user, $input) {
if (!isset($input['current_password']) || !Hash::check($input['current_password'], $user->password)) { if (! isset($input['current_password']) || ! Hash::check($input['current_password'], $user->password)) {
$validator->errors()->add('current_password', __t('password_doesnt_match')); $validator->errors()->add('current_password', __t('password_doesnt_match'));
} }
})->validateWithBag('updatePassword'); })->validateWithBag('updatePassword');

View File

@@ -5,7 +5,9 @@ use Str;
use Domain\Files\Models\File; use Domain\Files\Models\File;
use Domain\Folders\Models\Folder; use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Resources\FolderResource; use Domain\Folders\Resources\FolderResource;
use Domain\Folders\Resources\FolderCollection;
class BrowseFolderController class BrowseFolderController
{ {
@@ -18,16 +20,16 @@ class BrowseFolderController
'parent_id' => $root_id, 'parent_id' => $root_id,
'team_folder' => false, 'team_folder' => false,
'user_id' => Auth::id(), 'user_id' => Auth::id(),
'deleted_at' => null 'deleted_at' => null,
]; ];
$fileQuery = [ $fileQuery = [
'parent_id' => $root_id, 'parent_id' => $root_id,
'user_id' => Auth::id(), 'user_id' => Auth::id(),
'deleted_at' => null 'deleted_at' => null,
]; ];
list($foldersTake, $foldersSkip, $filesTake, $filesSkip, $totalItemsCount) = getRecordsCount($folderQuery, $fileQuery); list($foldersTake, $foldersSkip, $filesTake, $filesSkip, $totalItemsCount) = getRecordsCount($folderQuery, $fileQuery, request()->input('page'));
$folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in']) $folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in'])
->where($folderQuery) ->where($folderQuery)
@@ -42,16 +44,21 @@ class BrowseFolderController
->skip($filesSkip) ->skip($filesSkip)
->take($filesTake) ->take($filesTake)
->get(); ->get();
$entries = collect([
$folders ? json_decode((new FolderCollection($folders))->toJson(), true) : null,
$files ? json_decode((new FilesCollection($files))->toJson(), true) : null,
])->collapse();
list($data, $paginate, $links) = groupPaginate($folders, $files, $totalItemsCount); list($paginate, $links) = generatePaginationCounts($totalItemsCount);
return [ return [
'data' => $data, 'data' => $entries,
'links' => $links, 'links' => $links,
'meta' => [ 'meta' => [
'paginate' => $paginate, 'paginate' => $paginate,
'root' => $root_id ? new FolderResource(Folder::findOrFail($root_id)) : null, 'root' => $root_id ? new FolderResource(Folder::findOrFail($root_id)) : null,
] ],
]; ];
} }
} }

View File

@@ -2,8 +2,8 @@
namespace Domain\Browsing\Controllers; namespace Domain\Browsing\Controllers;
use App\Users\Models\User; use App\Users\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class BrowseLatestFilesController class BrowseLatestFilesController
{ {
@@ -23,7 +23,7 @@ class BrowseLatestFilesController
'meta' => [ 'meta' => [
'paginate' => $paginate, 'paginate' => $paginate,
'root' => null, 'root' => null,
] ],
]; ];
} }
} }

View File

@@ -1,11 +1,11 @@
<?php <?php
namespace Domain\Browsing\Controllers; namespace Domain\Browsing\Controllers;
use Illuminate\Http\Request;
use Domain\Files\Models\File; use Domain\Files\Models\File;
use Domain\Sharing\Models\Share; use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder; use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
class BrowseSharedItemsController class BrowseSharedItemsController
{ {
@@ -44,7 +44,7 @@ class BrowseSharedItemsController
'meta' => [ 'meta' => [
'paginate' => $paginate, 'paginate' => $paginate,
'root' => null, 'root' => null,
] ],
]; ];
} }
} }

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace Domain\Browsing\Controllers; namespace Domain\Browsing\Controllers;
use Illuminate\Http\Request;
use Domain\Files\Models\File; use Domain\Files\Models\File;
use Domain\Folders\Models\Folder; use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
class BrowseTrashContentController class BrowseTrashContentController
{ {
@@ -27,14 +27,12 @@ class BrowseTrashContentController
->where('parent_id', $root_id) ->where('parent_id', $root_id)
->sortable() ->sortable()
->get(); ->get();
} else { } else {
// Get folders and files // Get folders and files
$folders_trashed = Folder::onlyTrashed() $folders_trashed = Folder::onlyTrashed()
->with(['trashedFolders', 'parent']) ->with(['trashedFolders', 'parent'])
->where('user_id', $user_id) ->where('user_id', $user_id)
->get(['parent_id', 'id', 'name']); ->get(['parent_id', 'id', 'name']);
$folders = Folder::onlyTrashed() $folders = Folder::onlyTrashed()
->with(['parent']) ->with(['parent'])
@@ -64,7 +62,7 @@ class BrowseTrashContentController
'meta' => [ 'meta' => [
'paginate' => $paginate, 'paginate' => $paginate,
'root' => $requestedFolder, 'root' => $requestedFolder,
] ],
]; ];
} }
} }

View File

@@ -1,13 +1,13 @@
<?php <?php
namespace Domain\Browsing\Controllers; namespace Domain\Browsing\Controllers;
use Illuminate\Http\Request;
use Domain\Files\Models\File; use Domain\Files\Models\File;
use Domain\Sharing\Models\Share; use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder; use Domain\Folders\Models\Folder;
use Domain\Folders\Resources\FolderResource; use Domain\Folders\Resources\FolderResource;
use Domain\Sharing\Actions\ProtectShareRecordAction; use Domain\Sharing\Actions\ProtectShareRecordAction;
use Domain\Sharing\Actions\VerifyAccessToItemAction; use Domain\Sharing\Actions\VerifyAccessToItemAction;
use Illuminate\Http\Request;
/** /**
* Browse shared folder * Browse shared folder
@@ -56,7 +56,7 @@ class VisitorBrowseFolderController
'meta' => [ 'meta' => [
'paginate' => $paginate, 'paginate' => $paginate,
'root' => new FolderResource($requestedFolder), 'root' => new FolderResource($requestedFolder),
] ],
]; ];
} }
} }

View File

@@ -19,7 +19,6 @@ class GenerateImageThumbnailAction
collect(config("vuefilemanager.image_sizes.$execution")) collect(config("vuefilemanager.image_sizes.$execution"))
->each(function ($size) use ($userId, $fileName, $imageWidth) { ->each(function ($size) use ($userId, $fileName, $imageWidth) {
if ($imageWidth > $size['size']) { if ($imageWidth > $size['size']) {
// Create intervention image // Create intervention image
$intervention = Image::make( $intervention = Image::make(
Storage::disk('local')->path("temp/$userId/$fileName") Storage::disk('local')->path("temp/$userId/$fileName")

View File

@@ -2,7 +2,6 @@
namespace Domain\Files\Controllers; namespace Domain\Files\Controllers;
use Domain\Files\Models\File; use Domain\Files\Models\File;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Domain\Files\Requests\UploadRequest; use Domain\Files\Requests\UploadRequest;
use Domain\Files\Resources\FileResource; use Domain\Files\Resources\FileResource;
@@ -21,7 +20,8 @@ class UploadFileController extends Controller
/** /**
* Upload file for authenticated master|editor user * Upload file for authenticated master|editor user
*/ */
public function __invoke(UploadRequest $request) { public function __invoke(UploadRequest $request)
{
if (is_demo_account()) { if (is_demo_account()) {
return ($this->fakeUploadFile)($request); return ($this->fakeUploadFile)($request);
} }

View File

@@ -1,5 +1,4 @@
<?php <?php
namespace Domain\Files\Requests; namespace Domain\Files\Requests;
use Domain\Admin\Rules\DisabledMimetypes; use Domain\Admin\Rules\DisabledMimetypes;

View File

@@ -1,10 +1,10 @@
<?php <?php
namespace Domain\Items\Controllers; namespace Domain\Items\Controllers;
use App\Http\Controllers\Controller;
use Domain\Files\Models\File; use Domain\Files\Models\File;
use Domain\Files\Resources\FileResource;
use Domain\Folders\Models\Folder; use Domain\Folders\Models\Folder;
use App\Http\Controllers\Controller;
use Domain\Files\Resources\FileResource;
use Domain\Folders\Resources\FolderResource; use Domain\Folders\Resources\FolderResource;
use Domain\Items\Requests\RenameItemRequest; use Domain\Items\Requests\RenameItemRequest;
use Domain\Items\Actions\RenameFileOrFolderAction; use Domain\Items\Actions\RenameFileOrFolderAction;

View File

@@ -3,7 +3,6 @@ namespace Domain\SetupWizard\Controllers;
use Artisan; use Artisan;
use App\Users\Models\User; use App\Users\Models\User;
use Domain\SetupWizard\Actions\CreateDiskDirectoriesAction;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Domain\Settings\Models\Setting; use Domain\Settings\Models\Setting;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
@@ -12,6 +11,7 @@ use Domain\Pages\Actions\SeedDefaultPagesAction;
use Domain\Settings\Actions\SeedDefaultSettingsAction; use Domain\Settings\Actions\SeedDefaultSettingsAction;
use Domain\SetupWizard\Requests\StoreAdminAccountRequest; use Domain\SetupWizard\Requests\StoreAdminAccountRequest;
use Domain\Localization\Actions\SeedDefaultLanguageAction; use Domain\Localization\Actions\SeedDefaultLanguageAction;
use Domain\SetupWizard\Actions\CreateDiskDirectoriesAction;
/** /**
* Create and login admin account * Create and login admin account

View File

@@ -53,8 +53,8 @@ class BrowseSharedWithMeController
'links' => $links, 'links' => $links,
'meta' => [ 'meta' => [
'paginate' => $paginate, 'paginate' => $paginate,
'root' => $id ? new FolderResource(Folder::findOrFail($id)) : null 'root' => $id ? new FolderResource(Folder::findOrFail($id)) : null,
] ],
]; ];
} }
} }

View File

@@ -61,7 +61,7 @@ class TeamFoldersController extends Controller
'meta' => [ 'meta' => [
'paginate' => $paginate, 'paginate' => $paginate,
'root' => $id ? new FolderResource(Folder::findOrFail($id)) : null, 'root' => $id ? new FolderResource(Folder::findOrFail($id)) : null,
] ],
]; ];
} }

View File

@@ -61,7 +61,7 @@ class InvitationIntoTeamFolder extends Notification implements ShouldQueue
return [ return [
'category' => 'team-invitation', 'category' => 'team-invitation',
'title' => __t('new_team_invitation'), 'title' => __t('new_team_invitation'),
'description' => __t('x_invite_to_join_team', ['name' => $this->invitation->inviter->settings->name,]), 'description' => __t('x_invite_to_join_team', ['name' => $this->invitation->inviter->settings->name, ]),
'action' => [ 'action' => [
'type' => 'invitation', 'type' => 'invitation',
'params' => [ 'params' => [

View File

@@ -1,5 +1,4 @@
<?php <?php
namespace Domain\UploadRequest\Notifications; namespace Domain\UploadRequest\Notifications;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
@@ -19,7 +18,8 @@ class UploadRequestFulfilledNotification extends Notification implements ShouldQ
*/ */
public function __construct( public function __construct(
public UploadRequest $uploadRequest public UploadRequest $uploadRequest
) {} ) {
}
/** /**
* Get the notification's delivery channels. * Get the notification's delivery channels.
@@ -50,7 +50,7 @@ class UploadRequestFulfilledNotification extends Notification implements ShouldQ
return [ return [
'category' => 'file-request', 'category' => 'file-request',
'title' => __t('file_request_filled'), 'title' => __t('file_request_filled'),
'description' => __t('file_request_filled_desc', ['name' => $this->uploadRequest->parent->name,]), 'description' => __t('file_request_filled_desc', ['name' => $this->uploadRequest->parent->name, ]),
'action' => [ 'action' => [
'type' => 'route', 'type' => 'route',
'params' => [ 'params' => [

View File

@@ -9,15 +9,13 @@ use Domain\Files\Models\File;
use Domain\Sharing\Models\Share; use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder; use Domain\Folders\Models\Folder;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Domain\Settings\Models\Setting;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Domain\Settings\Models\Setting;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\QueryException; use Illuminate\Database\QueryException;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Domain\Localization\Models\Language; use Domain\Localization\Models\Language;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Resources\FolderCollection;
use Intervention\Image\ImageManagerStatic as Image; use Intervention\Image\ImageManagerStatic as Image;
use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Database\Eloquent\ModelNotFoundException;
@@ -1152,30 +1150,20 @@ if (! function_exists('replace_occurrence')) {
} }
} }
if(! function_exists('groupPaginate')) { if (! function_exists('generatePaginationCounts')) {
/** /**
* Group paginate of Foldes and Files * Group paginate of Foldes and Files
*/ */
function groupPaginate( function generatePaginationCounts(
?Collection $folders = null,
?Collection $files = null,
int $totalItemsCount int $totalItemsCount
) : array { ) : array {
$perPage = config('vuefilemanager.paginate.perPage'); $perPage = config('vuefilemanager.paginate.perPage');
$currentPage = request()->input('page') === 'all' ? 1 : (int)request()->input('page'); $currentPage = request()->input('page') === 'all' ? 1 : (int) request()->input('page');
// Collect Folders with Files
$entries = collect([
$folders ? json_decode((new FolderCollection($folders))->toJson(), true) : null,
$files ? json_decode((new FilesCollection($files))->toJson(), true) : null,
])->collapse();
$uri = request()->fullUrl(); $uri = request()->fullUrl();
$lastPage = ceil($totalItemsCount / $perPage); $lastPage = ceil($totalItemsCount / $perPage);
return [ return [
$entries,
[ [
'currentPage' => $currentPage, 'currentPage' => $currentPage,
'from' => 1, 'from' => 1,
@@ -1188,28 +1176,29 @@ if (! function_exists('replace_occurrence')) {
[ [
'first' => $uri . '&page=' . 1, 'first' => $uri . '&page=' . 1,
'last' => $uri . '&page=' . $lastPage, 'last' => $uri . '&page=' . $lastPage,
'next' => $currentPage == $lastPage ? null : $uri . '&page=' . $currentPage + 1, 'next' => $currentPage == $lastPage ? null : $uri . '&page=' . $currentPage + 1,
'prev' => $currentPage == 1 ? null : $uri . '&page=' . $currentPage -1, 'prev' => $currentPage == 1 ? null : $uri . '&page=' . $currentPage - 1,
] ],
]; ];
} }
}
if(! function_exists('getRecordsCount')) {
if (! function_exists('getRecordsCount')) {
/** /**
* Get count of items from the Database * Get count of items from the Database
*/ */
function getRecordsCount ( function getRecordsCount(
array $folderQuery, array $folderQuery,
array $fileQuery array $fileQuery,
) : array { string $page
) : array {
$perPage = config('vuefilemanager.paginate.perPage'); $perPage = config('vuefilemanager.paginate.perPage');
$currentPage = request()->input('page') === 'all' ? 1 : (int)request()->input('page'); $currentPage = $page === 'all' ? 1 : (int) $page;
$foldersSkip = 0; $foldersSkip = 0;
$foldersTake = 0; $foldersTake = 0;
$filesSkip = 0; $filesSkip = 0;
$filesTake = 0; $filesTake = 0;
$foldersCount = DB::table('folders') $foldersCount = DB::table('folders')
->where($folderQuery) ->where($folderQuery)
@@ -1221,34 +1210,32 @@ if (! function_exists('replace_occurrence')) {
$totalItemsCount = $foldersCount + $filesCount; $totalItemsCount = $foldersCount + $filesCount;
if(request()->input('page') !== 'all') { if ($page !== 'all') {
// Folders pages // Folders pages
if($foldersCount >= $currentPage * $perPage) { if ($foldersCount >= $currentPage * $perPage) {
$foldersTake = $perPage; $foldersTake = $perPage;
$foldersSkip = ($currentPage - 1) * $perPage; $foldersSkip = ($currentPage - 1) * $perPage;
} }
// Mixed page // Mixed page
if($foldersCount < $currentPage * $perPage && ceil($currentPage) === ceil($foldersCount / $perPage) ) { if ($foldersCount < $currentPage * $perPage && ceil($currentPage) === ceil($foldersCount / $perPage)) {
$foldersSkip = ($currentPage - 1) * $perPage; $foldersSkip = ($currentPage - 1) * $perPage;
$foldersTake = $foldersCount - $foldersSkip; $foldersTake = $foldersCount - $foldersSkip;
$filesTake = ($currentPage * $perPage) - $foldersCount; $filesTake = ($currentPage * $perPage) - $foldersCount;
$filesSkip = 0; $filesSkip = 0;
} }
// Files pages // Files pages
if($currentPage > ceil($foldersCount / $perPage)) { if ($currentPage > ceil($foldersCount / $perPage)) {
$filesTake = $perPage; $filesTake = $perPage;
$filesSkip = ((ceil($foldersCount / $perPage) * $perPage) - $foldersCount) + ($currentPage - (ceil($foldersCount / $perPage)) -1) * $perPage; $filesSkip = ((ceil($foldersCount / $perPage) * $perPage) - $foldersCount) + ($currentPage - (ceil($foldersCount / $perPage)) - 1) * $perPage;
} }
} else { } else {
$foldersTake = $foldersCount; $foldersTake = $foldersCount;
$filesTake = $filesCount; $filesTake = $filesCount;
} }
return [$foldersTake, $foldersSkip, $filesTake, $filesSkip, $totalItemsCount]; return [$foldersTake, $foldersSkip, $filesTake, $filesSkip, $totalItemsCount];
} }
}
} }
} }

View File

@@ -1,5 +1,4 @@
<?php <?php
namespace Tests\App\Users; namespace Tests\App\Users;
use Storage; use Storage;

View File

@@ -133,7 +133,7 @@ class AdminLanguageTranslatorTest extends TestCase
->assertStatus(200) ->assertStatus(200)
->assertJsonFragment([ ->assertJsonFragment([
'locale' => 'en', 'locale' => 'en',
'close' => 'Close', 'close' => 'Close',
]); ]);
} }
@@ -180,7 +180,7 @@ class AdminLanguageTranslatorTest extends TestCase
->getJson("/api/admin/languages/$language->id") ->getJson("/api/admin/languages/$language->id")
->assertStatus(200) ->assertStatus(200)
->assertJsonFragment([ ->assertJsonFragment([
'close' => 'Close', 'close' => 'Close',
'locale' => 'en', 'locale' => 'en',
]); ]);
} }

View File

@@ -61,21 +61,21 @@ class SetupWizardTest extends TestCase
Setting::all()->each->delete(); Setting::all()->each->delete();
$this->postJson('/api/setup/app-setup', [ $this->postJson('/api/setup/app-setup', [
'color' => '#00BC72', 'color' => '#00BC72',
'title' => 'VueFileManager', 'title' => 'VueFileManager',
'description' => 'The best file manager on the internet', 'description' => 'The best file manager on the internet',
'googleAnalytics' => 'UA-12345678-1', 'googleAnalytics' => 'UA-12345678-1',
'contactMail' => 'john@doe.com', 'contactMail' => 'john@doe.com',
'subscriptionType' => 'metered', 'subscriptionType' => 'metered',
'userVerification' => 1, 'userVerification' => 1,
'userRegistration' => 1, 'userRegistration' => 1,
'storageLimitation' => 1, 'storageLimitation' => 1,
'defaultStorage' => 10, 'defaultStorage' => 10,
'logo' => UploadedFile::fake()->image('fake-logo.jpg'), 'logo' => UploadedFile::fake()->image('fake-logo.jpg'),
'logo_dark' => UploadedFile::fake()->image('fake-logo-dark.jpg'), 'logo_dark' => UploadedFile::fake()->image('fake-logo-dark.jpg'),
'logo_horizontal' => UploadedFile::fake()->image('fake-logo-horizontal.jpg'), 'logo_horizontal' => UploadedFile::fake()->image('fake-logo-horizontal.jpg'),
'logo_horizontal_dark' => UploadedFile::fake()->image('fake-logo-horizontal-dark.jpg'), 'logo_horizontal_dark' => UploadedFile::fake()->image('fake-logo-horizontal-dark.jpg'),
'favicon' => UploadedFile::fake()->image('fake-favicon.jpg'), 'favicon' => UploadedFile::fake()->image('fake-favicon.jpg'),
])->assertStatus(204); ])->assertStatus(204);
$this $this

View File

@@ -2,6 +2,10 @@
namespace Tests\Support\Helpers; namespace Tests\Support\Helpers;
use Tests\TestCase; use Tests\TestCase;
use App\Users\Models\User;
use Domain\Files\Models\File;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\Config;
class HelperTest extends TestCase class HelperTest extends TestCase
{ {
@@ -25,4 +29,57 @@ class HelperTest extends TestCase
$this->assertEquals('Jane', $thirdTest['first_name']); $this->assertEquals('Jane', $thirdTest['first_name']);
$this->assertEquals('', $thirdTest['last_name']); $this->assertEquals('', $thirdTest['last_name']);
} }
/**
* @test
*/
public function it_test_get_records_count()
{
$user = User::factory()
->hasSettings()
->create();
Folder::factory()
->count(12)
->create([
'user_id' => $user->id,
'parent_id' => null,
]);
File::factory()
->count(13)
->create([
'user_id' => $user->id,
'parent_id' => null,
]);
$folderQuery = [
'parent_id' => null,
'team_folder' => false,
'user_id' => $user->id,
'deleted_at' => null,
];
$fileQuery = [
'parent_id' => null,
'user_id' => $user->id,
'deleted_at' => null,
];
Config::set('vuefilemanager.paginate.perPage', 5);
// getRecordsCunt returned array [foldersTake, foldersSkip, filesTake, filesSkip, totalItemsCount]
// Get folders page
$this->assertEquals([5, 0, 0, 0, 25], getRecordsCount($folderQuery, $fileQuery, '1'));
// Get mixed page
$this->assertEquals([2, 10, 3, 0, 25], getRecordsCount($folderQuery, $fileQuery, '3'));
// Get files page
$this->assertEquals([0, 0, 5, 8, 25], getRecordsCount($folderQuery, $fileQuery, '5'));
// Get all pages
$this->assertEquals([12, 0, 13, 0, 25], getRecordsCount($folderQuery, $fileQuery, 'all'));
}
} }