diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AllOnTheRightExistOnTheLeftTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AllOnTheRightExistOnTheLeftTest.php index 3f41c6a0..0eeac3a6 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AllOnTheRightExistOnTheLeftTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AllOnTheRightExistOnTheLeftTest.php @@ -21,14 +21,16 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - "SELECT (c0_.object1 ??& ARRAY['test']) AS sclr_0 FROM ContainsJsons c0_", + 'checks if single key exists in jsonb' => "SELECT (c0_.object1 ??& ARRAY['test']) AS sclr_0 FROM ContainsJsons c0_", + 'checks if multiple keys exist in jsonb' => "SELECT (c0_.object1 ??& ARRAY['key1', 'key2']) AS sclr_0 FROM ContainsJsons c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf("SELECT ALL_ON_RIGHT_EXIST_ON_LEFT(e.object1, ARRAY('test')) FROM %s e", ContainsJsons::class), + 'checks if single key exists in jsonb' => \sprintf("SELECT ALL_ON_RIGHT_EXIST_ON_LEFT(e.object1, ARRAY('test')) FROM %s e", ContainsJsons::class), + 'checks if multiple keys exist in jsonb' => \sprintf("SELECT ALL_ON_RIGHT_EXIST_ON_LEFT(e.object1, ARRAY('key1', 'key2')) FROM %s e", ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AnyOnTheRightExistsOnTheLeftTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AnyOnTheRightExistsOnTheLeftTest.php index c89aa06f..2fd517fb 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AnyOnTheRightExistsOnTheLeftTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AnyOnTheRightExistsOnTheLeftTest.php @@ -21,14 +21,18 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - "SELECT (c0_.object1 ??| ARRAY['test']) AS sclr_0 FROM ContainsJsons c0_", + 'checks if any key exists in jsonb' => "SELECT (c0_.object1 ??| ARRAY['test']) AS sclr_0 FROM ContainsJsons c0_", + 'checks if any of multiple keys exist in jsonb' => "SELECT (c0_.object1 ??| ARRAY['key1', 'key2']) AS sclr_0 FROM ContainsJsons c0_", + 'checks with parameter' => 'SELECT (c0_.object1 ??| ?) AS sclr_0 FROM ContainsJsons c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf("SELECT ANY_ON_RIGHT_EXISTS_ON_LEFT(e.object1, ARRAY('test')) FROM %s e", ContainsJsons::class), + 'checks if any key exists in jsonb' => \sprintf("SELECT ANY_ON_RIGHT_EXISTS_ON_LEFT(e.object1, ARRAY('test')) FROM %s e", ContainsJsons::class), + 'checks if any of multiple keys exist in jsonb' => \sprintf("SELECT ANY_ON_RIGHT_EXISTS_ON_LEFT(e.object1, ARRAY('key1', 'key2')) FROM %s e", ContainsJsons::class), + 'checks with parameter' => \sprintf('SELECT ANY_ON_RIGHT_EXISTS_ON_LEFT(e.object1, :parameter) FROM %s e', ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AnyTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AnyTest.php index 3085f3e7..7a458d50 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AnyTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/AnyTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT c0_.id AS id_0 FROM ContainsArrays c0_ WHERE c0_.id > ANY(c0_.array1)', + 'any elements match condition' => 'SELECT c0_.id AS id_0 FROM ContainsArrays c0_ WHERE c0_.id > ANY(c0_.array1)', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT e.id FROM %s e WHERE e.id > ANY_OF(e.array1)', ContainsArrays::class), + 'any elements match condition' => \sprintf('SELECT e.id FROM %s e WHERE e.id > ANY_OF(e.array1)', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrTest.php index 12b1d12c..f3e6285b 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrTest.php @@ -19,24 +19,18 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - // Multiple literal values - "SELECT ARRAY['foo', 'bar', 'baz'] AS sclr_0 FROM ContainsArrays c0_", - // Column references - 'SELECT ARRAY[c0_.array1] AS sclr_0 FROM ContainsArrays c0_', - // Mix of column references and literals - "SELECT ARRAY[c0_.array1, 'test-value', c0_.array2] AS sclr_0 FROM ContainsArrays c0_", + 'creates array from multiple literal values' => "SELECT ARRAY['foo', 'bar', 'baz'] AS sclr_0 FROM ContainsArrays c0_", + 'creates array from column references' => 'SELECT ARRAY[c0_.array1] AS sclr_0 FROM ContainsArrays c0_', + 'creates array from mix of column references and literals' => "SELECT ARRAY[c0_.array1, 'test-value', c0_.array2] AS sclr_0 FROM ContainsArrays c0_", ]; } protected function getDqlStatements(): array { return [ - // Multiple literal values - \sprintf("SELECT ARRAY('foo', 'bar', 'baz') FROM %s e", ContainsArrays::class), - // Column references - \sprintf('SELECT ARRAY(e.array1) FROM %s e', ContainsArrays::class), - // Mix of column references and literals - \sprintf("SELECT ARRAY(e.array1, 'test-value', e.array2) FROM %s e", ContainsArrays::class), + 'creates array from multiple literal values' => \sprintf("SELECT ARRAY('foo', 'bar', 'baz') FROM %s e", ContainsArrays::class), + 'creates array from column references' => \sprintf('SELECT ARRAY(e.array1) FROM %s e', ContainsArrays::class), + 'creates array from mix of column references and literals' => \sprintf("SELECT ARRAY(e.array1, 'test-value', e.array2) FROM %s e", ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayAppendTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayAppendTest.php index a5eb0fb0..2a0b9319 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayAppendTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayAppendTest.php @@ -19,18 +19,18 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT array_append(c0_.array1, 1989) AS sclr_0 FROM ContainsArrays c0_', - "SELECT array_append(c0_.array1, 'country') AS sclr_0 FROM ContainsArrays c0_", - 'SELECT array_append(c0_.array1, ?) AS sclr_0 FROM ContainsArrays c0_', + 'appends string element to array' => "SELECT array_append(c0_.array1, 'new-value') AS sclr_0 FROM ContainsArrays c0_", + 'appends numeric element to array' => 'SELECT array_append(c0_.array1, 42) AS sclr_0 FROM ContainsArrays c0_', + 'appends element using parameter' => 'SELECT array_append(c0_.array1, ?) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT ARRAY_APPEND(e.array1, 1989) FROM %s e', ContainsArrays::class), - \sprintf("SELECT ARRAY_APPEND(e.array1, 'country') FROM %s e", ContainsArrays::class), - \sprintf('SELECT ARRAY_APPEND(e.array1, :dql_parameter) FROM %s e', ContainsArrays::class), + 'appends string element to array' => \sprintf("SELECT ARRAY_APPEND(e.array1, 'new-value') FROM %s e", ContainsArrays::class), + 'appends numeric element to array' => \sprintf('SELECT ARRAY_APPEND(e.array1, 42) FROM %s e', ContainsArrays::class), + 'appends element using parameter' => \sprintf('SELECT ARRAY_APPEND(e.array1, :dql_parameter) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayCardinalityTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayCardinalityTest.php index 6de2f206..ee5349de 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayCardinalityTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayCardinalityTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT cardinality(c0_.array1) AS sclr_0 FROM ContainsArrays c0_', + 'gets cardinality of array' => 'SELECT cardinality(c0_.array1) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT ARRAY_CARDINALITY(e.array1) FROM %s e', ContainsArrays::class), + 'gets cardinality of array' => \sprintf('SELECT ARRAY_CARDINALITY(e.array1) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayCatTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayCatTest.php index 2e92c79a..1435e37d 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayCatTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayCatTest.php @@ -19,14 +19,16 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT array_cat(c0_.array1, c0_.array2) AS sclr_0 FROM ContainsArrays c0_', + 'concatenates two arrays' => 'SELECT array_cat(c0_.array1, c0_.array2) AS sclr_0 FROM ContainsArrays c0_', + 'concatenates with parameter' => 'SELECT array_cat(c0_.array1, ?) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT ARRAY_CAT(e.array1, e.array2) FROM %s e', ContainsArrays::class), + 'concatenates two arrays' => \sprintf('SELECT ARRAY_CAT(e.array1, e.array2) FROM %s e', ContainsArrays::class), + 'concatenates with parameter' => \sprintf('SELECT ARRAY_CAT(e.array1, :parameter) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayDimensionsTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayDimensionsTest.php index 7d5356c0..d696290c 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayDimensionsTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayDimensionsTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT array_dims(c0_.array1) AS sclr_0 FROM ContainsArrays c0_', + 'gets dimensions of array field' => 'SELECT array_dims(c0_.array1) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT ARRAY_DIMENSIONS(e.array1) FROM %s e', ContainsArrays::class), + 'gets dimensions of array field' => \sprintf('SELECT ARRAY_DIMENSIONS(e.array1) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayLengthTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayLengthTest.php index 31efad78..09d8079b 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayLengthTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayLengthTest.php @@ -19,16 +19,16 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT array_length(c0_.array1, 1) AS sclr_0 FROM ContainsArrays c0_', - 'SELECT array_length(c0_.array1, ?) AS sclr_0 FROM ContainsArrays c0_', + 'gets length of array with hardcoded dimension' => 'SELECT array_length(c0_.array1, 1) AS sclr_0 FROM ContainsArrays c0_', + 'gets length of array with parameterized dimension' => 'SELECT array_length(c0_.array1, ?) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT ARRAY_LENGTH(e.array1, 1) FROM %s e', ContainsArrays::class), - \sprintf('SELECT ARRAY_LENGTH(e.array1, :dql_parameter) FROM %s e', ContainsArrays::class), + 'gets length of array with hardcoded dimension' => \sprintf('SELECT ARRAY_LENGTH(e.array1, 1) FROM %s e', ContainsArrays::class), + 'gets length of array with parameterized dimension' => \sprintf('SELECT ARRAY_LENGTH(e.array1, :dql_parameter) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayNumberOfDimensionsTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayNumberOfDimensionsTest.php index 21dfb356..1e62e6a7 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayNumberOfDimensionsTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayNumberOfDimensionsTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT array_ndims(c0_.array1) AS sclr_0 FROM ContainsArrays c0_', + 'gets number of dimensions of array field' => 'SELECT array_ndims(c0_.array1) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT ARRAY_NUMBER_OF_DIMENSIONS(e.array1) FROM %s e', ContainsArrays::class), + 'gets number of dimensions of array field' => \sprintf('SELECT ARRAY_NUMBER_OF_DIMENSIONS(e.array1) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayPrependTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayPrependTest.php index e8de2f7c..d4d77179 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayPrependTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayPrependTest.php @@ -19,18 +19,18 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT array_prepend(1885, c0_.array1) AS sclr_0 FROM ContainsArrays c0_', - "SELECT array_prepend('red', c0_.array1) AS sclr_0 FROM ContainsArrays c0_", - 'SELECT array_prepend(?, c0_.array1) AS sclr_0 FROM ContainsArrays c0_', + 'prepends string element to array' => "SELECT array_prepend('new-value', c0_.array1) AS sclr_0 FROM ContainsArrays c0_", + 'prepends numeric element to array' => 'SELECT array_prepend(42, c0_.array1) AS sclr_0 FROM ContainsArrays c0_', + 'prepends element using parameter' => 'SELECT array_prepend(?, c0_.array1) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT ARRAY_PREPEND(1885, e.array1) FROM %s e', ContainsArrays::class), - \sprintf("SELECT ARRAY_PREPEND('red', e.array1) FROM %s e", ContainsArrays::class), - \sprintf('SELECT ARRAY_PREPEND(:dql_parameter, e.array1) FROM %s e', ContainsArrays::class), + 'prepends string element to array' => \sprintf("SELECT ARRAY_PREPEND('new-value', e.array1) FROM %s e", ContainsArrays::class), + 'prepends numeric element to array' => \sprintf('SELECT ARRAY_PREPEND(42, e.array1) FROM %s e', ContainsArrays::class), + 'prepends element using parameter' => \sprintf('SELECT ARRAY_PREPEND(:dql_parameter, e.array1) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayRemoveTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayRemoveTest.php index 427cc6e7..dfa445b1 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayRemoveTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayRemoveTest.php @@ -19,18 +19,18 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT array_remove(c0_.array1, 1944) AS sclr_0 FROM ContainsArrays c0_', - "SELECT array_remove(c0_.array1, 'peach') AS sclr_0 FROM ContainsArrays c0_", - 'SELECT array_remove(c0_.array1, ?) AS sclr_0 FROM ContainsArrays c0_', + 'removes string element from array' => "SELECT array_remove(c0_.array1, 'value-to-remove') AS sclr_0 FROM ContainsArrays c0_", + 'removes numeric element from array' => 'SELECT array_remove(c0_.array1, 42) AS sclr_0 FROM ContainsArrays c0_', + 'removes element using parameter' => 'SELECT array_remove(c0_.array1, ?) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT ARRAY_REMOVE(e.array1, 1944) FROM %s e', ContainsArrays::class), - \sprintf("SELECT ARRAY_REMOVE(e.array1, 'peach') FROM %s e", ContainsArrays::class), - \sprintf('SELECT ARRAY_REMOVE(e.array1, :dql_parameter) FROM %s e', ContainsArrays::class), + 'removes string element from array' => \sprintf("SELECT ARRAY_REMOVE(e.array1, 'value-to-remove') FROM %s e", ContainsArrays::class), + 'removes numeric element from array' => \sprintf('SELECT ARRAY_REMOVE(e.array1, 42) FROM %s e', ContainsArrays::class), + 'removes element using parameter' => \sprintf('SELECT ARRAY_REMOVE(e.array1, :dql_parameter) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayReplaceTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayReplaceTest.php index 165c3ec4..5ef7d939 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayReplaceTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayReplaceTest.php @@ -19,18 +19,18 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT array_replace(c0_.array1, 1939, 1957) AS sclr_0 FROM ContainsArrays c0_', - "SELECT array_replace(c0_.array1, 'green', 'mint') AS sclr_0 FROM ContainsArrays c0_", - "SELECT array_replace(c0_.array1, 'green', ?) AS sclr_0 FROM ContainsArrays c0_", + 'replaces string element in array' => "SELECT array_replace(c0_.array1, 'old-value', 'new-value') AS sclr_0 FROM ContainsArrays c0_", + 'replaces numeric element in array' => 'SELECT array_replace(c0_.array1, 42, 43) AS sclr_0 FROM ContainsArrays c0_', + 'replaces element using parameters' => 'SELECT array_replace(c0_.array1, ?, ?) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT ARRAY_REPLACE(e.array1, 1939, 1957) FROM %s e', ContainsArrays::class), - \sprintf("SELECT ARRAY_REPLACE(e.array1, 'green', 'mint') FROM %s e", ContainsArrays::class), - \sprintf("SELECT ARRAY_REPLACE(e.array1, 'green', :dql_parameter) FROM %s e", ContainsArrays::class), + 'replaces string element in array' => \sprintf("SELECT ARRAY_REPLACE(e.array1, 'old-value', 'new-value') FROM %s e", ContainsArrays::class), + 'replaces numeric element in array' => \sprintf('SELECT ARRAY_REPLACE(e.array1, 42, 43) FROM %s e', ContainsArrays::class), + 'replaces element using parameters' => \sprintf('SELECT ARRAY_REPLACE(e.array1, :old_value, :new_value) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayToJsonTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayToJsonTest.php index 636ab46d..dfa7e7af 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayToJsonTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayToJsonTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT array_to_json(c0_.array1) AS sclr_0 FROM ContainsArrays c0_', + 'converts array to json' => 'SELECT array_to_json(c0_.array1) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT ARRAY_TO_JSON(e.array1) FROM %s e', ContainsArrays::class), + 'converts array to json' => \sprintf('SELECT ARRAY_TO_JSON(e.array1) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayToStringTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayToStringTest.php index 521198ac..c624a2c7 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayToStringTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ArrayToStringTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - "SELECT array_to_string(c0_.array1, '; ') AS sclr_0 FROM ContainsArrays c0_", + 'converts array to string with delimiter' => "SELECT array_to_string(c0_.array1, ',') AS sclr_0 FROM ContainsArrays c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf("SELECT ARRAY_TO_STRING(e.array1, '; ') FROM %s e", ContainsArrays::class), + 'converts array to string with delimiter' => \sprintf("SELECT ARRAY_TO_STRING(e.array1, ',') FROM %s e", ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/CastTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/CastTest.php index 3f49f231..a7960e13 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/CastTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/CastTest.php @@ -4,7 +4,7 @@ namespace Tests\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions; -use Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsIntegers; +use Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsTexts; use MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\Cast; class CastTest extends TestCase @@ -19,18 +19,24 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT cast(c0_.integer1 as text) AS sclr_0 FROM ContainsIntegers c0_', - 'SELECT cast(c0_.integer1 as varchar(8)) AS sclr_0 FROM ContainsIntegers c0_', - 'SELECT cast(c0_.integer1 as numeric(8, 2)) AS sclr_0 FROM ContainsIntegers c0_', + 'cast as integer' => 'SELECT cast(c0_.text1 as INTEGER) AS sclr_0 FROM ContainsTexts c0_', + 'cast as text' => 'SELECT cast(c0_.text1 as TEXT) AS sclr_0 FROM ContainsTexts c0_', + 'cast as json' => 'SELECT cast(c0_.text1 as JSON) AS sclr_0 FROM ContainsTexts c0_', + 'cast as jsonb' => 'SELECT cast(c0_.text1 as JSONB) AS sclr_0 FROM ContainsTexts c0_', + 'cast as boolean' => 'SELECT cast(c0_.text1 as BOOLEAN) AS sclr_0 FROM ContainsTexts c0_', + 'cast with precision' => 'SELECT cast(c0_.text1 as DECIMAL(10, 2)) AS sclr_0 FROM ContainsTexts c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT CAST(e.integer1 AS text) FROM %s e', ContainsIntegers::class), - \sprintf('SELECT CAST(e.integer1 AS varchar(8)) FROM %s e', ContainsIntegers::class), - \sprintf('SELECT CAST(e.integer1 AS numeric(8, 2)) FROM %s e', ContainsIntegers::class), + 'cast as integer' => \sprintf('SELECT CAST(e.text1 AS INTEGER) FROM %s e', ContainsTexts::class), + 'cast as text' => \sprintf('SELECT CAST(e.text1 AS TEXT) FROM %s e', ContainsTexts::class), + 'cast as json' => \sprintf('SELECT CAST(e.text1 AS JSON) FROM %s e', ContainsTexts::class), + 'cast as jsonb' => \sprintf('SELECT CAST(e.text1 AS JSONB) FROM %s e', ContainsTexts::class), + 'cast as boolean' => \sprintf('SELECT CAST(e.text1 AS BOOLEAN) FROM %s e', ContainsTexts::class), + 'cast with precision' => \sprintf('SELECT CAST(e.text1 AS DECIMAL(10, 2)) FROM %s e', ContainsTexts::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ContainsTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ContainsTest.php index eda68ab1..e0a034ba 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ContainsTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ContainsTest.php @@ -19,14 +19,20 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - "SELECT (c0_.array1 @> '{681,1185,1878}') AS sclr_0 FROM ContainsArrays c0_", + 'contains array of integers' => "SELECT (c0_.array1 @> '{681,1185,1878}') AS sclr_0 FROM ContainsArrays c0_", + 'contains array of strings' => "SELECT (c0_.array1 @> '{\"foo\",\"bar\"}') AS sclr_0 FROM ContainsArrays c0_", + 'contains single element' => "SELECT (c0_.array1 @> '{42}') AS sclr_0 FROM ContainsArrays c0_", + 'contains using parameter' => 'SELECT (c0_.array1 @> ?) AS sclr_0 FROM ContainsArrays c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf("SELECT CONTAINS(e.array1, '{681,1185,1878}') FROM %s e", ContainsArrays::class), + 'contains array of integers' => \sprintf("SELECT CONTAINS(e.array1, '{681,1185,1878}') FROM %s e", ContainsArrays::class), + 'contains array of strings' => \sprintf("SELECT CONTAINS(e.array1, '{\"foo\",\"bar\"}') FROM %s e", ContainsArrays::class), + 'contains single element' => \sprintf("SELECT CONTAINS(e.array1, '{42}') FROM %s e", ContainsArrays::class), + 'contains using parameter' => \sprintf('SELECT CONTAINS(e.array1, :parameter) FROM %s e', ContainsArrays::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonArrayLengthTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonArrayLengthTest.php index d5623b4c..fb13d197 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonArrayLengthTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonArrayLengthTest.php @@ -19,14 +19,16 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT json_array_length(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', + 'gets length of top-level array' => 'SELECT json_array_length(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', + 'gets length from literal json' => "SELECT json_array_length('{\"iso_3166_a3_code\":\"BGR\"}') AS sclr_0 FROM ContainsJsons c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT JSON_ARRAY_LENGTH(e.object1) FROM %s e', ContainsJsons::class), + 'gets length of top-level array' => \sprintf('SELECT JSON_ARRAY_LENGTH(e.object1) FROM %s e', ContainsJsons::class), + 'gets length from literal json' => \sprintf("SELECT JSON_ARRAY_LENGTH('{\"iso_3166_a3_code\":\"BGR\"}') FROM %s e", ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonEachTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonEachTest.php index c03627e4..ee4ba823 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonEachTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonEachTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT json_each(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', + 'expands json object into key-value pairs' => 'SELECT json_each(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT JSON_EACH(e.object1) FROM %s e', ContainsJsons::class), + 'expands json object into key-value pairs' => \sprintf('SELECT JSON_EACH(e.object1) FROM %s e', ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonEachTextTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonEachTextTest.php index d999a5f4..df49863c 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonEachTextTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonEachTextTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT json_each_text(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', + 'expands json object into text key-value pairs' => 'SELECT json_each_text(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT JSON_EACH_TEXT(e.object1) FROM %s e', ContainsJsons::class), + 'expands json object into text key-value pairs' => \sprintf('SELECT JSON_EACH_TEXT(e.object1) FROM %s e', ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonExistsTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonExistsTest.php index 2467d59e..694d3773 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonExistsTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonExistsTest.php @@ -19,21 +19,20 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - // Basic usage - "SELECT json_exists(c0_.object1, '$.name') AS sclr_0 FROM ContainsJsons c0_", - // Nested path - "SELECT json_exists(c0_.object1, '$.address.city') AS sclr_0 FROM ContainsJsons c0_", - // Array element - "SELECT json_exists(c0_.object1, '$.items[0]') AS sclr_0 FROM ContainsJsons c0_", + 'checks if simple path exists' => "SELECT json_exists(c0_.object1, '$.name') AS sclr_0 FROM ContainsJsons c0_", + 'checks if nested path exists' => "SELECT json_exists(c0_.object1, '$.address.city') AS sclr_0 FROM ContainsJsons c0_", + 'checks if array element exists' => "SELECT json_exists(c0_.object1, '$.items[0]') AS sclr_0 FROM ContainsJsons c0_", + 'checks if deeply nested array element exists' => "SELECT json_exists(c0_.object1, '$.users[0].addresses[0].street') AS sclr_0 FROM ContainsJsons c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf("SELECT JSON_EXISTS(e.object1, '$.name') FROM %s e", ContainsJsons::class), - \sprintf("SELECT JSON_EXISTS(e.object1, '$.address.city') FROM %s e", ContainsJsons::class), - \sprintf("SELECT JSON_EXISTS(e.object1, '$.items[0]') FROM %s e", ContainsJsons::class), + 'checks if simple path exists' => \sprintf("SELECT JSON_EXISTS(e.object1, '$.name') FROM %s e", ContainsJsons::class), + 'checks if nested path exists' => \sprintf("SELECT JSON_EXISTS(e.object1, '$.address.city') FROM %s e", ContainsJsons::class), + 'checks if array element exists' => \sprintf("SELECT JSON_EXISTS(e.object1, '$.items[0]') FROM %s e", ContainsJsons::class), + 'checks if deeply nested array element exists' => \sprintf("SELECT JSON_EXISTS(e.object1, '$.users[0].addresses[0].street') FROM %s e", ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonGetFieldTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonGetFieldTest.php index 28f3faf6..02b25db5 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonGetFieldTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonGetFieldTest.php @@ -19,14 +19,16 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - "SELECT (c0_.object1 -> 'country') AS sclr_0 FROM ContainsJsons c0_", + 'extracts top-level field from json' => "SELECT (c0_.object1 -> 'key') AS sclr_0 FROM ContainsJsons c0_", + 'extracts nested field from json' => "SELECT ((c0_.object1 -> 'nested') -> 'key') AS sclr_0 FROM ContainsJsons c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf("SELECT JSON_GET_FIELD(e.object1, 'country') FROM %s e", ContainsJsons::class), + 'extracts top-level field from json' => \sprintf("SELECT JSON_GET_FIELD(e.object1, 'key') FROM %s e", ContainsJsons::class), + 'extracts nested field from json' => \sprintf("SELECT JSON_GET_FIELD(JSON_GET_FIELD(e.object1, 'nested'), 'key') FROM %s e", ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonGetObjectAsTextTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonGetObjectAsTextTest.php index 72bb172c..055f34c8 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonGetObjectAsTextTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonGetObjectAsTextTest.php @@ -19,14 +19,26 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - "SELECT (c0_.object1 #>> '{residency,country}') AS sclr_0 FROM ContainsJsons c0_", + 'extracts top-level object as text' => "SELECT (c0_.object1 #>> '{metadata}') AS sclr_0 FROM ContainsJsons c0_", + 'extracts nested object as text' => "SELECT (c0_.object1 #>> '{user,address}') AS sclr_0 FROM ContainsJsons c0_", + 'extracts array element as text' => "SELECT (c0_.object1 #>> '{items,0}') AS sclr_0 FROM ContainsJsons c0_", + 'extracts deeply nested object as text' => "SELECT (c0_.object1 #>> '{store,departments,main}') AS sclr_0 FROM ContainsJsons c0_", + 'extracts from complex path as text' => "SELECT (c0_.object1 #>> '{data,users,0,profile}') AS sclr_0 FROM ContainsJsons c0_", + 'extracts last array element as text' => "SELECT (c0_.object1 #>> '{records,-1}') AS sclr_0 FROM ContainsJsons c0_", + 'extracts nested array element as text' => "SELECT (c0_.object1 #>> '{categories,2,description}') AS sclr_0 FROM ContainsJsons c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf("SELECT JSON_GET_OBJECT_AS_TEXT(e.object1, '{residency,country}') FROM %s e", ContainsJsons::class), + 'extracts top-level object as text' => \sprintf("SELECT JSON_GET_OBJECT_AS_TEXT(e.object1, '{metadata}') FROM %s e", ContainsJsons::class), + 'extracts nested object as text' => \sprintf("SELECT JSON_GET_OBJECT_AS_TEXT(e.object1, '{user,address}') FROM %s e", ContainsJsons::class), + 'extracts array element as text' => \sprintf("SELECT JSON_GET_OBJECT_AS_TEXT(e.object1, '{items,0}') FROM %s e", ContainsJsons::class), + 'extracts deeply nested object as text' => \sprintf("SELECT JSON_GET_OBJECT_AS_TEXT(e.object1, '{store,departments,main}') FROM %s e", ContainsJsons::class), + 'extracts from complex path as text' => \sprintf("SELECT JSON_GET_OBJECT_AS_TEXT(e.object1, '{data,users,0,profile}') FROM %s e", ContainsJsons::class), + 'extracts last array element as text' => \sprintf("SELECT JSON_GET_OBJECT_AS_TEXT(e.object1, '{records,-1}') FROM %s e", ContainsJsons::class), + 'extracts nested array element as text' => \sprintf("SELECT JSON_GET_OBJECT_AS_TEXT(e.object1, '{categories,2,description}') FROM %s e", ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonQueryTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonQueryTest.php index 5dc81ee4..2f93ea18 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonQueryTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonQueryTest.php @@ -19,24 +19,30 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - "SELECT json_query(c0_.object1, '$.items[*]') AS sclr_0 FROM ContainsJsons c0_", - "SELECT json_query(c0_.object1, '$.address') AS sclr_0 FROM ContainsJsons c0_", - // Additional test cases for important scenarios - "SELECT json_query(c0_.object1, '$.store.book[*].author') AS sclr_0 FROM ContainsJsons c0_", - "SELECT json_query(c0_.object1, '$.store.book[0 to 2]') AS sclr_0 FROM ContainsJsons c0_", - "SELECT json_query(c0_.object1, '$.store.book[*]?(@.price > 10)') AS sclr_0 FROM ContainsJsons c0_", + 'extracts all array items' => "SELECT json_query(c0_.object1, '$.items[*]') AS sclr_0 FROM ContainsJsons c0_", + 'extracts nested object' => "SELECT json_query(c0_.object1, '$.address') AS sclr_0 FROM ContainsJsons c0_", + 'extracts all authors from books array' => "SELECT json_query(c0_.object1, '$.store.book[*].author') AS sclr_0 FROM ContainsJsons c0_", + 'extracts specific range of books' => "SELECT json_query(c0_.object1, '$.store.book[0 to 2]') AS sclr_0 FROM ContainsJsons c0_", + 'filters books by price condition' => "SELECT json_query(c0_.object1, '$.store.book[*]?(@.price > 10)') AS sclr_0 FROM ContainsJsons c0_", + // Additional scenarios based on PostgreSQL's json_query capabilities + 'extracts last array element' => "SELECT json_query(c0_.object1, '$.items[last]') AS sclr_0 FROM ContainsJsons c0_", + 'extracts specific keys from objects in array' => "SELECT json_query(c0_.object1, '$.users[*]?(@.active == true).name') AS sclr_0 FROM ContainsJsons c0_", + 'extracts nested array with multiple conditions' => "SELECT json_query(c0_.object1, '$.store.book[*]?(@.price < 30 && @.category == \"fiction\")') AS sclr_0 FROM ContainsJsons c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf("SELECT JSON_QUERY(e.object1, '$.items[*]') FROM %s e", ContainsJsons::class), - \sprintf("SELECT JSON_QUERY(e.object1, '$.address') FROM %s e", ContainsJsons::class), - // Additional test cases matching the SQL statements above - \sprintf("SELECT JSON_QUERY(e.object1, '$.store.book[*].author') FROM %s e", ContainsJsons::class), - \sprintf("SELECT JSON_QUERY(e.object1, '$.store.book[0 to 2]') FROM %s e", ContainsJsons::class), - \sprintf("SELECT JSON_QUERY(e.object1, '$.store.book[*]?(@.price > 10)') FROM %s e", ContainsJsons::class), + 'extracts all array items' => \sprintf("SELECT JSON_QUERY(e.object1, '$.items[*]') FROM %s e", ContainsJsons::class), + 'extracts nested object' => \sprintf("SELECT JSON_QUERY(e.object1, '$.address') FROM %s e", ContainsJsons::class), + 'extracts all authors from books array' => \sprintf("SELECT JSON_QUERY(e.object1, '$.store.book[*].author') FROM %s e", ContainsJsons::class), + 'extracts specific range of books' => \sprintf("SELECT JSON_QUERY(e.object1, '$.store.book[0 to 2]') FROM %s e", ContainsJsons::class), + 'filters books by price condition' => \sprintf("SELECT JSON_QUERY(e.object1, '$.store.book[*]?(@.price > 10)') FROM %s e", ContainsJsons::class), + // Additional scenarios based on PostgreSQL's json_query capabilities + 'extracts last array element' => \sprintf("SELECT JSON_QUERY(e.object1, '$.items[last]') FROM %s e", ContainsJsons::class), + 'extracts specific keys from objects in array' => \sprintf("SELECT JSON_QUERY(e.object1, '$.users[*]?(@.active == true).name') FROM %s e", ContainsJsons::class), + 'extracts nested array with multiple conditions' => \sprintf("SELECT JSON_QUERY(e.object1, '$.store.book[*]?(@.price < 30 && @.category == \"fiction\")') FROM %s e", ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonSerializeTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonSerializeTest.php index 44c99748..b0de992a 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonSerializeTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonSerializeTest.php @@ -19,21 +19,18 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - // Basic serialization - 'SELECT json_serialize(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', - // With expression - 'SELECT json_serialize(UPPER(c0_.object1)) AS sclr_0 FROM ContainsJsons c0_', - // With literal - "SELECT json_serialize('{\"key\": \"value\"}') AS sclr_0 FROM ContainsJsons c0_", + 'serializes json field' => 'SELECT json_serialize(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', + 'serializes json field with expression' => 'SELECT json_serialize(UPPER(c0_.object1)) AS sclr_0 FROM ContainsJsons c0_', + 'serializes json literal' => "SELECT json_serialize('{\"key\": \"value\"}') AS sclr_0 FROM ContainsJsons c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT JSON_SERIALIZE(e.object1) FROM %s e', ContainsJsons::class), - \sprintf('SELECT JSON_SERIALIZE(UPPER(e.object1)) FROM %s e', ContainsJsons::class), - \sprintf("SELECT JSON_SERIALIZE('{\"key\": \"value\"}') FROM %s e", ContainsJsons::class), + 'serializes json field' => \sprintf('SELECT JSON_SERIALIZE(e.object1) FROM %s e', ContainsJsons::class), + 'serializes json field with expression' => \sprintf('SELECT JSON_SERIALIZE(UPPER(e.object1)) FROM %s e', ContainsJsons::class), + 'serializes json literal' => \sprintf("SELECT JSON_SERIALIZE('{\"key\": \"value\"}') FROM %s e", ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonTypeofTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonTypeofTest.php index 899d3ff3..2e68694f 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonTypeofTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonTypeofTest.php @@ -19,14 +19,16 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT json_typeof(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', + 'determines type of json document' => 'SELECT json_typeof(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', + 'determines type of literal value' => "SELECT json_typeof('42') AS sclr_0 FROM ContainsJsons c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT JSON_TYPEOF(e.object1) FROM %s e', ContainsJsons::class), + 'determines type of json document' => \sprintf('SELECT JSON_TYPEOF(e.object1) FROM %s e', ContainsJsons::class), + 'determines type of literal value' => \sprintf("SELECT JSON_TYPEOF('42') FROM %s e", ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbArrayElementsTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbArrayElementsTest.php index 241b41cb..65a287bb 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbArrayElementsTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbArrayElementsTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT jsonb_array_elements(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', + 'expands jsonb array into separate rows' => 'SELECT jsonb_array_elements(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT JSONB_ARRAY_ELEMENTS(e.object1) FROM %s e', ContainsJsons::class), + 'expands jsonb array into separate rows' => \sprintf('SELECT JSONB_ARRAY_ELEMENTS(e.object1) FROM %s e', ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbEachTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbEachTest.php index ff34a68c..ce673db1 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbEachTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbEachTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT jsonb_each(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', + 'expands top-level jsonb object into key-value pairs' => 'SELECT jsonb_each(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT JSONB_EACH(e.object1) FROM %s e', ContainsJsons::class), + 'expands top-level jsonb object into key-value pairs' => \sprintf('SELECT JSONB_EACH(e.object1) FROM %s e', ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbExistsTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbExistsTest.php index 3a2fabbe..4f696437 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbExistsTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbExistsTest.php @@ -19,14 +19,14 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - "SELECT jsonb_exists(c0_.object1, 'country') AS sclr_0 FROM ContainsJsons c0_", + 'checks if top-level key exists' => "SELECT jsonb_exists(c0_.object1, 'country') AS sclr_0 FROM ContainsJsons c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf("SELECT JSONB_EXISTS(e.object1, 'country') FROM %s e", ContainsJsons::class), + 'checks if top-level key exists' => \sprintf("SELECT JSONB_EXISTS(e.object1, 'country') FROM %s e", ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbPrettyTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbPrettyTest.php index 771704de..4c2aec21 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbPrettyTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/JsonbPrettyTest.php @@ -19,16 +19,16 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT jsonb_pretty(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', - "SELECT jsonb_pretty('{\"iso_3166_a3_code\":\"BGR\"}') AS sclr_0 FROM ContainsJsons c0_", + 'formats jsonb document with proper indentation' => 'SELECT jsonb_pretty(c0_.object1) AS sclr_0 FROM ContainsJsons c0_', + 'formats literal jsonb value' => "SELECT jsonb_pretty('{\"iso_3166_a3_code\":\"BGR\"}') AS sclr_0 FROM ContainsJsons c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT JSONB_PRETTY(e.object1) FROM %s e', ContainsJsons::class), - \sprintf("SELECT JSONB_PRETTY('{\"iso_3166_a3_code\":\"BGR\"}') FROM %s e", ContainsJsons::class), + 'formats jsonb document with proper indentation' => \sprintf('SELECT JSONB_PRETTY(e.object1) FROM %s e', ContainsJsons::class), + 'formats literal jsonb value' => \sprintf("SELECT JSONB_PRETTY('{\"iso_3166_a3_code\":\"BGR\"}') FROM %s e", ContainsJsons::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/SimilarToTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/SimilarToTest.php index 5dae64cf..717ddb16 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/SimilarToTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/SimilarToTest.php @@ -26,7 +26,7 @@ protected function getExpectedSqlStatements(): array protected function getDqlStatements(): array { return [ - \sprintf("SELECT SIMILAR_TO(e.text1,'TEST') FROM %s e", ContainsTexts::class), + \sprintf("SELECT SIMILAR_TO(e.text1, 'TEST') FROM %s e", ContainsTexts::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/TestCase.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/TestCase.php index 505f968a..d43e18df 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/TestCase.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/TestCase.php @@ -23,7 +23,7 @@ abstract class TestCase extends BaseTestCase protected function setUp(): void { - $configuration = ORMSetup::createAttributeMetadataConfiguration([static::FIXTURES_DIRECTORY], false); + $configuration = ORMSetup::createAttributeMetadataConfiguration([static::FIXTURES_DIRECTORY], true); $configuration->setProxyDir(static::FIXTURES_DIRECTORY.'/Proxies'); $configuration->setProxyNamespace('Fixtures\MartinGeorgiev\Doctrine\Entity\Proxy'); $configuration->setAutoGenerateProxyClasses(true); @@ -82,12 +82,12 @@ protected function getStringFunctions(): array } /** - * @return array + * @return array */ abstract protected function getExpectedSqlStatements(): array; /** - * @return array + * @return array */ abstract protected function getDqlStatements(): array; diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToJsonTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToJsonTest.php index 56134d2d..0639501c 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToJsonTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToJsonTest.php @@ -19,22 +19,22 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT to_json(c0_.text1) AS sclr_0 FROM ContainsTexts c0_', - 'SELECT to_json(UPPER(c0_.text1)) AS sclr_0 FROM ContainsTexts c0_', - 'SELECT to_json(1 + 1) AS sclr_0 FROM ContainsTexts c0_', - 'SELECT to_json(1) AS sclr_0 FROM ContainsTexts c0_', - 'SELECT to_json(LENGTH(c0_.text1)) AS sclr_0 FROM ContainsTexts c0_', + 'converts text to json' => 'SELECT to_json(c0_.text1) AS sclr_0 FROM ContainsTexts c0_', + 'converts uppercase text to json' => 'SELECT to_json(UPPER(c0_.text1)) AS sclr_0 FROM ContainsTexts c0_', + 'converts numeric expression to json' => 'SELECT to_json(1 + 1) AS sclr_0 FROM ContainsTexts c0_', + 'converts boolean to json' => 'SELECT to_json(1) AS sclr_0 FROM ContainsTexts c0_', + 'converts length of text to json' => 'SELECT to_json(LENGTH(c0_.text1)) AS sclr_0 FROM ContainsTexts c0_', ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT TO_JSON(e.text1) FROM %s e', ContainsTexts::class), - \sprintf('SELECT TO_JSON(UPPER(e.text1)) FROM %s e', ContainsTexts::class), - \sprintf('SELECT TO_JSON(1+1) FROM %s e', ContainsTexts::class), - \sprintf('SELECT TO_JSON(true) FROM %s e', ContainsTexts::class), - \sprintf('SELECT TO_JSON(LENGTH(e.text1)) FROM %s e', ContainsTexts::class), + 'converts text to json' => \sprintf('SELECT TO_JSON(e.text1) FROM %s e', ContainsTexts::class), + 'converts uppercase text to json' => \sprintf('SELECT TO_JSON(UPPER(e.text1)) FROM %s e', ContainsTexts::class), + 'converts numeric expression to json' => \sprintf('SELECT TO_JSON(1+1) FROM %s e', ContainsTexts::class), + 'converts boolean to json' => \sprintf('SELECT TO_JSON(true) FROM %s e', ContainsTexts::class), + 'converts length of text to json' => \sprintf('SELECT TO_JSON(LENGTH(e.text1)) FROM %s e', ContainsTexts::class), ]; } } diff --git a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTsvectorTest.php b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTsvectorTest.php index a7e3be6f..387b9e69 100644 --- a/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTsvectorTest.php +++ b/tests/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ToTsvectorTest.php @@ -20,18 +20,18 @@ protected function getStringFunctions(): array protected function getExpectedSqlStatements(): array { return [ - 'SELECT to_tsvector(c0_.text1) AS sclr_0 FROM ContainsTexts c0_', - 'SELECT to_tsvector(LOWER(c0_.text1)) AS sclr_0 FROM ContainsTexts c0_', - "SELECT to_tsvector('english', c0_.text1) AS sclr_0 FROM ContainsTexts c0_", + 'converts plain text to tsvector' => 'SELECT to_tsvector(c0_.text1) AS sclr_0 FROM ContainsTexts c0_', + 'converts lowercase text to tsvector' => 'SELECT to_tsvector(LOWER(c0_.text1)) AS sclr_0 FROM ContainsTexts c0_', + 'converts text to tsvector using english dictionary' => "SELECT to_tsvector('english', c0_.text1) AS sclr_0 FROM ContainsTexts c0_", ]; } protected function getDqlStatements(): array { return [ - \sprintf('SELECT TO_TSVECTOR(e.text1) FROM %s e', ContainsTexts::class), - \sprintf('SELECT TO_TSVECTOR(LOWER(e.text1)) FROM %s e', ContainsTexts::class), - \sprintf("SELECT TO_TSVECTOR('english', e.text1) FROM %s e", ContainsTexts::class), + 'converts plain text to tsvector' => \sprintf('SELECT TO_TSVECTOR(e.text1) FROM %s e', ContainsTexts::class), + 'converts lowercase text to tsvector' => \sprintf('SELECT TO_TSVECTOR(LOWER(e.text1)) FROM %s e', ContainsTexts::class), + 'converts text to tsvector using english dictionary' => \sprintf("SELECT TO_TSVECTOR('english', e.text1) FROM %s e", ContainsTexts::class), ]; }