new test for folders upload

This commit is contained in:
Milos Holba
2021-08-18 18:50:32 +02:00
parent 09dfaaa34a
commit 4e3e63ba00
11 changed files with 407 additions and 218 deletions

502
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,7 @@
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js?id=47b736a4006170db9cc9",
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~39825672.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~39825672.js?id=ac82879c90ef33cded21",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~3e4fdd8b.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~3e4fdd8b.js?id=a121afabdc4d8de9c1f7",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=751bf3f8ab9d893ee2bf",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=9ad79de5759f411f6dce",
"/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js?id=ede426518b756cbc1caf",
"/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=0848b74fa0a06e295254",
"/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=e584c7fac7b47c76aa45",
@@ -37,7 +37,7 @@
"/chunks/email-verified.js": "/chunks/email-verified.js?id=523bbafbed907913b5a2",
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=bbd4ccaaa5b1fbf52ac1",
"/chunks/files.js": "/chunks/files.js?id=bf780b65f902de41c9d9",
"/chunks/files~chunks/platform~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.js?id=6eca49c7905f09bbad42",
"/chunks/files~chunks/platform~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.js?id=cf78486687dc13194d7f",
"/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=537b08be7b526c33e48e",
"/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=43324c55265d036f4a6e",
"/chunks/files~chunks/settings-subscription~chunks/shared/file-browser~chunks/user-subscription.js": "/chunks/files~chunks/settings-subscription~chunks/shared/file-browser~chunks/user-subscription.js?id=af81ed63f1b76be8fb28",
@@ -96,11 +96,32 @@
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~81c8aec0.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~81c8aec0.js?id=ca3b57f70682c1c315f7",
"/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=9d10953d3b088324dfe3",
"/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=7d09e0b0658e140a7ffa",
"/js/main.c4c494eb0b8f3148e2b4.hot-update.js": "/js/main.c4c494eb0b8f3148e2b4.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.c4c494eb0b8f3148e2b4.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.c4c494eb0b8f3148e2b4.hot-update.js",
"/chunks/files~chunks/shared/file-browser.c4c494eb0b8f3148e2b4.hot-update.js": "/chunks/files~chunks/shared/file-browser.c4c494eb0b8f3148e2b4.hot-update.js",
"/js/main.3cb9742317ec0332f8fc.hot-update.js": "/js/main.3cb9742317ec0332f8fc.hot-update.js",
"/js/main.4cfcd101ec2b65d0f8a9.hot-update.js": "/js/main.4cfcd101ec2b65d0f8a9.hot-update.js",
"/js/main.1c4fd654c971c29349a4.hot-update.js": "/js/main.1c4fd654c971c29349a4.hot-update.js",
"/js/main.1c16de546cf0d2dac814.hot-update.js": "/js/main.1c16de546cf0d2dac814.hot-update.js"
"/js/main.29b1db514065867abc6e.hot-update.js": "/js/main.29b1db514065867abc6e.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.29b1db514065867abc6e.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.29b1db514065867abc6e.hot-update.js",
"/chunks/files~chunks/shared/file-browser.29b1db514065867abc6e.hot-update.js": "/chunks/files~chunks/shared/file-browser.29b1db514065867abc6e.hot-update.js",
"/js/main.a35d30fac2d16216b86b.hot-update.js": "/js/main.a35d30fac2d16216b86b.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.a35d30fac2d16216b86b.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.a35d30fac2d16216b86b.hot-update.js",
"/chunks/files~chunks/shared/file-browser.a35d30fac2d16216b86b.hot-update.js": "/chunks/files~chunks/shared/file-browser.a35d30fac2d16216b86b.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.78259380a9090454fa1b.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.78259380a9090454fa1b.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.868cd8e2afa2b86a9374.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.868cd8e2afa2b86a9374.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.a0fbbcb6c956e5bdac49.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.a0fbbcb6c956e5bdac49.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.8cdb9c1731262fd3d181.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.8cdb9c1731262fd3d181.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.ab5c0362135b8b6fe427.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.ab5c0362135b8b6fe427.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.340112ae61a8b9ce6110.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.340112ae61a8b9ce6110.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.58b8245b1f0e6a721ff4.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.58b8245b1f0e6a721ff4.hot-update.js",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.aa9baee94452c24b21d0.hot-update.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.aa9baee94452c24b21d0.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.4b806ec1b5b517245810.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.4b806ec1b5b517245810.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.ce2beb020aca0c9f7cf2.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.ce2beb020aca0c9f7cf2.hot-update.js",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.039b5712d893577cf232.hot-update.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.039b5712d893577cf232.hot-update.js",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.f3ae241d12e4ba858751.hot-update.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.f3ae241d12e4ba858751.hot-update.js",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.881f616bd31cda542385.hot-update.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.881f616bd31cda542385.hot-update.js",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.9c4919d40a1488c83a81.hot-update.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.9c4919d40a1488c83a81.hot-update.js",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.27d1450d2125a2e70884.hot-update.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.27d1450d2125a2e70884.hot-update.js",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.28ddde9b749317d9b79a.hot-update.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.28ddde9b749317d9b79a.hot-update.js",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.69c351619c1fd8472185.hot-update.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.69c351619c1fd8472185.hot-update.js",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.1ba0f82548a5468503f1.hot-update.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.1ba0f82548a5468503f1.hot-update.js",
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.3f6c62e390194c1dbe82.hot-update.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.3f6c62e390194c1dbe82.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.173db6e1bb84da9e26ee.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.173db6e1bb84da9e26ee.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.0bb6d99710b584b6f333.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.0bb6d99710b584b6f333.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared/file-browser.cde9df15dc66f7ab9473.hot-update.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.cde9df15dc66f7ab9473.hot-update.js"
}

View File

@@ -1,10 +1,16 @@
<template>
<svg class="alphabet-icon" fill="none" stroke="currentColor" stroke-width="2" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" width="15px" height="15px" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg class="alphabet-icon" fill="none" stroke="currentColor" stroke-width="2" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" :width="`${size}px`" :height="`${size}px`" viewBox="-2 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<polyline id="Path" points="11.1999993 13.1999991 5.59999967 0.199999094 0 13.1999991 5.59999967 0.199999094"></polyline>
<line x1="2.25" y1="8" x2="8.75" y2="8" id="Line-2"></line>
</svg>
</template>
<script>
export default {
props: ['size']
}
</script>
<style lang="scss">
.alphabet-icon {

View File

@@ -1,7 +1,8 @@
<template>
<label class="menu-option group">
<div class="icon-left group-hover-text-theme">
<upload-cloud-icon size="17" class="group-hover-text-theme"/>
<upload-cloud-icon v-if="type === 'file'" size="17" class="group-hover-text-theme"/>
<folder-upload-icon v-if="type === 'folder'" size="17" class="group-hover-text-theme"/>
</div>
<div class="text-label group-hover-text-theme">
{{ title }}
@@ -30,6 +31,7 @@
</template>
<script>
import FolderUploadIcon from '/resources/js/components/FilesView/Icons/FolderUploadIcon'
import {events} from '/resources/js/bus'
import {
UploadCloudIcon,
@@ -42,6 +44,7 @@ import {
],
components: {
UploadCloudIcon,
FolderUploadIcon,
},
methods: {
emmitFiles(e) {

View File

@@ -277,6 +277,7 @@ class AdminTest extends TestCase
$this->postJson('/api/upload', [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);

View File

@@ -41,6 +41,7 @@ class FileTest extends TestCase
->postJson('/api/upload', [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);
@@ -76,6 +77,7 @@ class FileTest extends TestCase
->postJson('/api/upload', [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);
@@ -122,6 +124,7 @@ class FileTest extends TestCase
->postJson('/api/upload', [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(423);
@@ -151,6 +154,7 @@ class FileTest extends TestCase
->actingAs($user)
->postJson('/api/upload', [
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(422);
@@ -273,6 +277,7 @@ class FileTest extends TestCase
$this->postJson('/api/upload', [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);

View File

@@ -347,6 +347,7 @@ class FolderTest extends TestCase
$this->postJson('/api/upload', [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => $folder->id,
'is_last' => 'true',
])->assertStatus(201);
@@ -386,4 +387,58 @@ class FolderTest extends TestCase
]);
});
}
/**
* @test
*/
public function it_upload_folders_structure_with_files()
{
$file_1 = UploadedFile::fake()
->create('fake-file_1.pdf', 12000000, 'application/pdf');
$file_2 = UploadedFile::fake()
->create('fake-file_2.pdf', 12000000, 'application/pdf');
$user = User::factory(User::class)
->create();
$uploaded_file_1 = $this
->actingAs($user)
->postJson('/api/upload', [
'filename' => $file_2->name,
'file' => $file_2,
'path' => '/Folder_1/' . $file_2->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);
$uploaded_file_2 = $this
->actingAs($user)
->postJson('/api/upload', [
'filename' => $file_1->name,
'file' => $file_1,
'path' => '/Folder_1/Folder_2/' . $file_1->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);
$file_1_parent = Folder::whereName('Folder_1')->first();
$file_2_parent = Folder::whereName('Folder_2')->first();
$this->assertDatabaseHas('folders', [
'id' => $uploaded_file_1['folder_id'],
'parent_id' => null,
'id' => $uploaded_file_2['folder_id'],
'parent_id' => $file_1_parent->id,
]);
$this->assertDatabaseHas('files', [
'id' => $uploaded_file_1['id'],
'folder_id' => $file_1_parent->id,
'id' => $uploaded_file_2['id'],
'folder_id' => $file_2_parent->id,
]);
}
}

View File

@@ -327,6 +327,7 @@ class VisitorManipulatingTest extends TestCase
->post("/api/editor/upload/$share->token", [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => $folder->id,
'is_last' => 'true',
])->assertStatus(201);
@@ -337,6 +338,7 @@ class VisitorManipulatingTest extends TestCase
$this->postJson("/api/editor/upload/$share->token", [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => $folder->id,
'is_last' => 'true',
])->assertStatus(201);

View File

@@ -36,6 +36,7 @@ class TrafficTest extends TestCase
->postJson('/api/upload', [
'filename' => $this->file->name,
'file' => $this->file,
'path' => '/' . $this->file->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);
@@ -56,6 +57,7 @@ class TrafficTest extends TestCase
->postJson('/api/upload', [
'filename' => $this->file->name,
'file' => $this->file,
'path' => '/' . $this->file->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);
@@ -76,6 +78,7 @@ class TrafficTest extends TestCase
->postJson('/api/upload', [
'filename' => $secondFile->name,
'file' => $secondFile,
'path' => '/' . $secondFile->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);
@@ -113,6 +116,7 @@ class TrafficTest extends TestCase
$this->postJson("/api/editor/upload/$share->token", [
'filename' => $this->file->name,
'file' => $this->file,
'path' => '/' . $this->file->name,
'folder_id' => $folder->id,
'is_last' => 'true',
])->assertStatus(201);

View File

@@ -75,6 +75,7 @@ class TrashTest extends TestCase
$this->postJson('/api/upload', [
'filename' => $image->name,
'file' => $image,
'path' => '/' . $image->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);

View File

@@ -33,6 +33,7 @@ class UserZippingTest extends TestCase
$this->postJson('/api/upload', [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => $folder->id,
'is_last' => 'true',
])->assertStatus(201);
@@ -46,6 +47,7 @@ class UserZippingTest extends TestCase
$this->postJson('/api/upload', [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => null,
'is_last' => 'true',
])->assertStatus(201);
@@ -85,6 +87,7 @@ class UserZippingTest extends TestCase
$this->postJson('/api/upload', [
'filename' => $file->name,
'file' => $file,
'path' => '/' . $file->name,
'folder_id' => $folder->id,
'is_last' => 'true',
])->assertStatus(201);