flux-querybuilder/tests/Functions/FilterFunctionTest.php

33 lines
1.1 KiB
PHP
Raw Normal View History

<?php
2024-03-30 16:44:38 +01:00
declare( strict_types=1 );
namespace Tests\Functions;
2024-03-30 16:44:38 +01:00
use Hosterra\FluxBuilder\Expression\KeyFilter;
use Hosterra\FluxBuilder\Functions\Filter;
use PHPUnit\Framework\TestCase;
2024-03-30 16:44:38 +01:00
final class FilterFunctionTest extends TestCase {
2024-03-30 16:44:38 +01:00
public function testFieldFilter() {
$expression = new Filter( [ 'user', 'field2', 'field3' ] );
2024-03-30 16:44:38 +01:00
$query = '|> filter(fn: (r) => r._field == "user" or r._field == "field2" or r._field == "field3") ';
2024-03-30 16:44:38 +01:00
$this->assertEquals( $expression->__toString(), $query );
}
2024-03-30 16:44:38 +01:00
public function testKeyFilter() {
$expression = new Filter( KeyFilter::setEqualTo( '_measurement', 'test_measurement' )
->andEqualTo( '_field', 'user' )
->orEqualTo( '_field', 'field2' )
->andEqualTo( 'user', 'my_username' ) );
2024-03-30 16:44:38 +01:00
$query = '|> filter(fn: (r) => r._measurement == "test_measurement" and r._field == "user" or ' .
'r._field == "field2" and r.user == "my_username") ';
2024-03-30 16:44:38 +01:00
$this->assertEquals( $expression->__toString(), $query );
}
}