cvexa/finder

在 Laravel 中通过内容或文件名搜索文件

dev-master 2019-03-27 15:46 UTC

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