cvexa / finder
在 Laravel 中通过内容或文件名搜索文件
Requires
- laravel/framework: ^5.6
- orchestra/testbench-dusk: ~3.4
This package is auto-updated.
Last update: 2024-09-28 04:30:52 UTC
README
搜索任务
在所有页面上搜索根目录文件夹/文件夹中的文件,通过输入、单选按钮和选择过滤
入门指南
以下说明将在您的机器上复制包,用于开发和测试目的。
先决条件
Laravel ^5.6*
orchestra/testbench-dusk ~3.4
安装
通过 composer 下载并安装包
composer require cvexa/finder
如果出现“稳定性错误”,则运行
composer require "cvexa/finder:dev-master"
如果出现“不支持链接”错误,则运行
php artisan storage:link
如果尚未提供,包将安装 orchestra/testbench-dusk 包
如果之前未安装包,请运行以下命令以运行测试
php artisan dusk:install
发布包测试
php artisan vendor:publish \\select Provider: cvexa\finder\FinderServiceProvider
searchTest.php 将被复制到 Tests\Browser;
包路由
GET /cvexa/find
描述
关键词/句子验证输入,最大500个字符,此字段区分大小写,搜索也区分大小写
文件扩展名部分验证,最大500个字符
扩展名可以用点或不用点列表(.pdf, pdf 均有效),
多个扩展名可以在输入中用逗号分隔,例如
pdf, .php, .txt, css ,等等。
在文件内容搜索中跳过的扩展名
Microsoft Office 文件(例如 )
*.doc
*.docx
*.xls
*.ppt
*....
可搜索的内容文件
*.php
*.txt
*.js
*.css
*.xml
*.env
*.pdf
*.scss
文件扩展名字段可以留空,在这种情况下,所有文件扩展名都将包含在搜索中(除了内容搜索中跳过的扩展名)
搜索文件名时没有限制
3个选项
每个选项取消其他两个,所有选项都可以为空(除了选择 - 默认为全部)如果没有更改选项(或留空),将使用公共文件夹选择“全部”进行搜索
1.自定义路径应用程序
不允许 '/' 和 '/vendor' 路径的访问权限,此字段用于在 Laravel 应用程序的 根/ 文件夹中搜索,例如 '/app' 将在 Laravel/app 文件夹中进行搜索,/routes 将在 Laravel/routes 中进行搜索
2.公共文件夹浏览器
可以选择在 Laravel/public 文件夹中的所有文件夹之间进行选择,如果选择了所有值
将在整个公共文件夹中进行搜索
3.应用程序文件夹外部的自定义路径(一级以上)
在应用程序文件夹外部的所有文件和文件夹中进行搜索,例如
server/
/folder1
/folder1.1
等等。
/folder2
/folder3
/Laravel(带有包)
/folder5
file.txt
等等。
搜索过滤器
确定搜索文件名或文件内容(默认为文件名)
优先级
过滤
扩展名输入
3种搜索路径方法之一
结果框
每次搜索后都会出现,以显示搜索所花费的时间,并列出结果(如果有的话)
显示找到匹配的文件路径
如果提供自定义路径,则也会在所有子文件夹中执行搜索
运行测试
注意,在启动测试时必须运行应用程序!dusk 测试 URL 已配置在 .env 文件中,例如
APP_URL=https://:8000
更多关于 Laravel Dusk
php artisan dusk
此命令将运行所有dusk测试,包括应用程序的测试以及包的测试
如果您想在浏览器中查看测试,请打开:tests/DuskTestCase.php
并找到此方法
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
'--headless',
'--window-size=1920,1080',
]);
return RemoteWebDriver::create(
'https://:9515',
DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY,
$options
)
);
}
注释 '--headless',以打开浏览器并查看实时浏览器测试
protected function driver()
{
$options = (new ChromeOptions)->addArguments([
'--disable-gpu',
<!-- '--headless', -->
'--window-size=1920,1080',
]);
return RemoteWebDriver::create(
'https://:9515',
DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY,
$options
)
);
}
测试
第一个测试将访问包的URL::/cvexa/find 并等待元素加载
$this->assertNotNull($browser->waitForText('Search in files'));
$this->assertNotNull($browser->element('#search'));
$this->assertNotNull($browser->element('#extensions'));
$this->assertNotNull($browser->element('#path'));
$this->assertNotNull($browser->element('#location'));
$this->assertNotNull($browser->element('#name'));
$this->assertNotNull($browser->element('#content'));
之后将点击搜索按钮,并等待验证错误
$this->assertNotNull($browser->element('.alert-danger'));
接下来是搜索公共文件夹中名为'Controller'的文件,并等待无结果
$this->assertNotNull($browser->waitForText('No Results'));
接下来是搜索公共文件夹中名为'index'的文件,扩展名为.php,等待出现index.php
$this->assertNotNull($browser->waitForText('index.php'));
接下来搜索内容 '$request = Illuminate\Http\Request::capture()'
$browser->type('#search', '$request = Illuminate\Http\Request::capture()');
$browser->radio('#content', '0');
$browser->click('#search-btn')
->pause(500);
$this->assertNotNull($browser->waitForText('index.php'));
接下来是搜索测试
web.php
api.php
app.css
app.js
并在 /app/Http/Controllers/ 中通过内容搜索'Controller'和通过文件名搜索
/app/Http/Controllers/
以及结束于对搜索路径 '/' 和 '/vendor' 和 'vendor' 的验证测试
并等待错误
断言有22个必须成功才能通过测试。
作者
- Svetoslav Vasilev - GIT