Add test to check if QueryBuilder internal parts are the correct instances

This commit is contained in:
David Arendsen 2023-02-10 15:32:25 +01:00
commit e0cf376f6f

View file

@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Tests; namespace Tests;
use Closure;
use DateTime; use DateTime;
use Exception; use Exception;
use Arendsen\FluxQueryBuilder\Expression\KeyFilter; use Arendsen\FluxQueryBuilder\Expression\KeyFilter;
@ -190,4 +191,36 @@ final class QueryBuilderTest extends TestCase
$this->assertEquals($expectedQuery, $queryBuilder->build()); $this->assertEquals($expectedQuery, $queryBuilder->build());
} }
public function testCorrectInstancesAreCreated()
{
$queryBuilder = new QueryBuilder();
$queryBuilder->fromBucket('test_bucket')
->addRangeStart(new DateTime('2022-08-12 17:31:00'));
$instances = [
\Arendsen\FluxQueryBuilder\Functions\From::class,
\Arendsen\FluxQueryBuilder\Functions\Range::class,
\Arendsen\FluxQueryBuilder\Functions\Measurement::class,
];
$requiredFluxQueryParts = $this->getClassProperty($queryBuilder, 'requiredFluxQueryParts');
foreach ($requiredFluxQueryParts as $keyPart => $part) {
$this->assertEquals($instances[$keyPart], $part);
}
}
private function getClassProperty($object, string $property): array
{
$propertyReader = function & ($object, $property) {
$value = & Closure::bind(function & () use ($property) {
return $this->$property;
}, $object, $object)->__invoke();
return $value;
};
return $propertyReader($object, $property);
}
} }