定制 settleup/pest-plugin-visualizations 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

settleup/pest-plugin-visualizations

最新稳定版本:1.0.0

Composer 安装命令:

composer require --dev settleup/pest-plugin-visualizations

包简介

Pest plugin for testing SettleUp visualizations — DataGrids, Charts, and Metrics.

README 文档

README

Visualizations

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

A Pest plugin for testing SettleUp Visualizations — expressive, chainable assertions for DataGrids, Charts, and Metrics.

Installation

composer require settleup/pest-plugin-visualizations --dev

Usage

The plugin exposes three namespaced functions — dataGrid(), chart(), and metric() — that each return a fluent tester. All assertion methods are chainable and return the tester instance.

DataGrid

use function SettleUp\PestPluginVisualizations\dataGrid;

it('has the expected schema', function () {
    dataGrid(UserDataGrid::class)
        ->assertColumnCount(3)
        ->assertHasColumn('ID')
        ->assertHasColumn('Name')
        ->assertHasColumn('Email')
        ->assertMissingColumn('Password')
        ->assertColumnIsRowKey('ID')
        ->assertColumnIsSortable('Name')
        ->assertColumnIsFilterable('Email')
        ->assertColumnIsVisible('Name')
        ->assertHasFloatingFilter('Joined On')
        ->assertMissingFloatingFilter('Created At');
});

Schema assertions

Method Description
assertHasColumn(string $field) Assert a column with the given field name exists
assertMissingColumn(string $field) Assert no column with the given field name exists
assertColumnCount(int $count) Assert the total number of columns
assertColumnIsSortable(string $field) Assert the column is sortable
assertColumnIsNotSortable(string $field) Assert the column is not sortable
assertColumnIsFilterable(string $field) Assert the column is filterable
assertColumnIsNotFilterable(string $field) Assert the column is not filterable
assertColumnIsVisible(string $field) Assert the column is visible (not hidden)
assertColumnIsHidden(string $field) Assert the column is hidden
assertColumnIsRowKey(string $field) Assert the column is marked as the row key
assertHasFloatingFilter(string $field) Assert a floating filter with the given field name exists
assertMissingFloatingFilter(string $field) Assert no floating filter with the given field name exists

Data assertions

Use usingFilterSets() and usingSorts() to configure the query context before asserting on results. Each call replaces the previous context.

use SettleUp\Visualizations\Builders\FilterBuilder;
use SettleUp\Visualizations\Data\VisualizationData;
use function SettleUp\PestPluginVisualizations\dataGrid;

it('filters results correctly', function () {
    DB::table('users')->insert([
        ['name' => 'Andrew', 'email' => 'andrew@example.com'],
        ['name' => 'John',   'email' => 'john@example.com'],
    ]);

    dataGrid(UserDataGrid::class)
        ->usingFilterSets(fn (VisualizationData $data) => $data->addAndFilterSet(
            fn (FilterBuilder $b) => $b->contains('Name', 'Andrew')
        ))
        ->assertRowCount(1)
        ->assertRowMatches(['Name' => 'Andrew'])
        ->assertRowMissing(['Name' => 'John']);
});

it('sorts results correctly', function () {
    DB::table('users')->insert([
        ['name' => 'Zara',   'email' => 'zara@example.com'],
        ['name' => 'Andrew', 'email' => 'andrew@example.com'],
    ]);

    dataGrid(UserDataGrid::class)
        ->usingSorts(fn (VisualizationData $data) => $data->addSortAsc('Name'))
        ->assertRowMatches(['Name' => 'Andrew']);
});
Method Description
usingFilterSets(Closure $configure) Configure filter context for subsequent data assertions
usingSorts(Closure $configure) Configure sort context for subsequent data assertions
assertRowCount(int $expected) Assert the number of rows returned
assertNoResults() Assert the query returns no rows
assertRowMatches(array $expected) Assert at least one row matches all given key/value pairs
assertRowMissing(array $expected) Assert no row matches all given key/value pairs

Chart

use function SettleUp\PestPluginVisualizations\chart;

it('has the expected schema', function () {
    chart(RevenueChart::class)
        ->assertHasLabel('date')
        ->assertHasDataset('revenue')
        ->assertHasDataset('refunds')
        ->assertDatasetCount(2)
        ->assertMissingDataset('costs')
        ->assertMissingFloatingFilter('date_range');
});

Schema assertions

Method Description
assertHasLabel(string $field) Assert the chart has a label with the given field name
assertHasNoLabel() Assert the chart uses NullLabel (no label)
assertHasDataset(string $field) Assert a dataset with the given field name exists
assertMissingDataset(string $field) Assert no dataset with the given field name exists
assertDatasetCount(int $count) Assert the total number of datasets
assertHasFloatingFilter(string $field) Assert a floating filter with the given field name exists
assertMissingFloatingFilter(string $field) Assert no floating filter with the given field name exists

Data assertions

use SettleUp\Visualizations\Builders\FilterBuilder;
use SettleUp\Visualizations\Data\VisualizationData;
use function SettleUp\PestPluginVisualizations\chart;

it('returns chart data for a specific date', function () {
    DB::table('orders')->insert([
        ['order_date' => '2024-01-01', 'total' => 100.00, 'refunds' => 0.00],
        ['order_date' => '2024-01-02', 'total' => 200.00, 'refunds' => 10.00],
    ]);

    chart(RevenueChart::class)
        ->usingFilterSets(fn (VisualizationData $data) => $data->addAndFilterSet(
            fn (FilterBuilder $b) => $b->equals('date', '2024-01-01')
        ))
        ->assertResultCount(1)
        ->assertResultContains(['date' => '2024-01-01'])
        ->assertResultMissing(['date' => '2024-01-02']);
});
Method Description
usingFilterSets(Closure $configure) Configure filter context for subsequent data assertions
usingSorts(Closure $configure) Configure sort context for subsequent data assertions
assertResultCount(int $count) Assert the number of result rows
assertNoResults() Assert the query returns no results
assertResultContains(array $expected) Assert at least one result row matches all given key/value pairs
assertResultMissing(array $expected) Assert no result row matches all given key/value pairs

Metric

use function SettleUp\PestPluginVisualizations\metric;

it('has the expected schema', function () {
    metric(RevenueMetric::class)
        ->assertHasValue('revenue')
        ->assertMissingFloatingFilter('date_range');
});

Schema assertions

Method Description
assertHasValue(string $field) Assert the metric's value has the given field name
assertHasFloatingFilter(string $field) Assert a floating filter with the given field name exists
assertMissingFloatingFilter(string $field) Assert no floating filter with the given field name exists

Data assertions

use SettleUp\Visualizations\Builders\FilterBuilder;
use SettleUp\Visualizations\Data\VisualizationData;
use function SettleUp\PestPluginVisualizations\metric;

it('aggregates revenue correctly', function () {
    DB::table('orders')->insert([
        ['order_date' => '2024-01-01', 'total' => 100.00],
        ['order_date' => '2024-01-02', 'total' => 200.00],
        ['order_date' => '2024-01-03', 'total' =>  50.00],
    ]);

    metric(RevenueMetric::class)->assertAggregateEquals(350.0);
});

it('filters the aggregate via floating filter', function () {
    DB::table('orders')->insert([
        ['order_date' => '2024-01-01', 'total' => 100.00],
        ['order_date' => '2024-01-02', 'total' => 200.00],
    ]);

    metric(RevenueWithFloatingFiltersMetric::class)
        ->usingFilterSets(fn (VisualizationData $data) => $data->addAndFilterSet(
            fn (FilterBuilder $b) => $b->equals('date_range', '2024-01-01')
        ))
        ->assertAggregateEquals(100.0);
});
Method Description
usingFilterSets(Closure $configure) Configure filter context for subsequent data assertions
assertAggregateEquals(mixed $expected) Assert the aggregate value equals the expected value
assertAggregateNull() Assert the aggregate value is null

Testing

composer test

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 7
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-22

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固