Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions fixtures/MartinGeorgiev/Doctrine/Entity/ContainsJsons.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,15 @@
#[ORM\Entity()]
class ContainsJsons extends Entity
{
#[ORM\Column(type: 'jsonb')]
public array $jsonbObject1;

#[ORM\Column(type: 'jsonb')]
public array $jsonbObject2;

#[ORM\Column(type: Types::JSON)]
public array $object1;
public array $jsonObject1;

#[ORM\Column(type: Types::JSON)]
public array $object2;
public array $jsonObject2;
Comment on lines 19 to +23
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Verify no lingering references to old JSON field names

Renaming to jsonObject1/jsonObject2 is consistent with the tests. Please ensure no code still references object1/object2 (e.g., DQL or entity property access).

Run:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Looking for legacy references to object1/object2 in code and DQL..."
rg -nP -C2 --type=php '\bobject1\b|\bobject2\b' tests src -g '!vendor/**' || echo "No legacy references found."

echo
echo "Specifically check for DQL 't.object1'/'t.object2'..."
rg -nP -C2 't\.object[12]\b' tests -g '!vendor/**' || echo "No DQL references to t.object1/t.object2 found."

Length of output: 159921


Action Required: Update lingering DQL/property references to jsonObject1 / jsonObject2

All of the following tests still refer to the old properties object1 and object2, which will break now that the entity uses jsonObject1 and jsonObject2. Please update each occurrence in both Unit and Integration tests to reference the new names:

• Unit tests under tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/
• Integration tests under tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/

Example snippet changes:

-   'gets length of top-level array' => 'SELECT json_array_length(c0_.object1) AS sclr_0 FROM ContainsJsons c0_',
+   'gets length of top-level array' => 'SELECT json_array_length(c0_.jsonObject1) AS sclr_0 FROM ContainsJsons c0_',

-   $dql = 'SELECT JSONB_INSERT(t.object1, :path, :value) …';
+   $dql = 'SELECT JSONB_INSERT(t.jsonObject1, :path, :value) …';

-   sprintf("SELECT JSON_GET_FIELD(e.object1, 'name') …", ContainsJsons::class),
+   sprintf("SELECT JSON_GET_FIELD(e.jsonObject1, 'name') …", ContainsJsons::class),

Please sweep all occurrences of:

  • c0_\.object1 / c0_\.object2
  • t\.object1 / t\.object2
  • any ->object1 / ->object2 in DQL strings
    and replace with the corresponding jsonObject1 / jsonObject2.

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In fixtures/MartinGeorgiev/Doctrine/Entity/ContainsJsons.php around lines 19 to
23, the entity property names were changed to jsonObject1/jsonObject2; update
all test references accordingly by searching and replacing lingering occurrences
across tests: in tests/Unit/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ and
tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ replace
c0_\.object1 -> c0_\.jsonObject1 and c0_\.object2 -> c0_\.jsonObject2,
t\.object1 -> t\.jsonObject1 and t\.object2 -> t\.jsonObject2, and any DQL
string fragments or PHP property accesses ->object1/->object2 ->
->jsonObject1/->jsonObject2; run the test suite to ensure no remaining
references.

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,19 @@
namespace Tests\Integration\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions;

use MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayAgg;
use PHPUnit\Framework\Attributes\Test;

class ArrayAggTest extends ArrayTestCase
{
protected function getStringFunctions(): array
{
return ['ARRAY_AGG' => ArrayAgg::class];
return [
'ARRAY_AGG' => ArrayAgg::class,
];
}

public function test_array_agg_with_text_array(): void
#[Test]
public function can_aggregate_text_arrays(): void
{
$dql = 'SELECT ARRAY_AGG(t.textArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -22,7 +26,8 @@ public function test_array_agg_with_text_array(): void
$this->assertSame('{{apple,banana,orange}}', $result[0]['result']);
}

public function test_array_agg_with_integer_array(): void
#[Test]
public function can_aggregate_integer_arrays(): void
{
$dql = 'SELECT ARRAY_AGG(t.integerArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -31,7 +36,8 @@ public function test_array_agg_with_integer_array(): void
$this->assertSame('{{1,2,3}}', $result[0]['result']);
}

public function test_array_agg_with_boolean_array(): void
#[Test]
public function can_aggregate_boolean_arrays(): void
{
$dql = 'SELECT ARRAY_AGG(t.boolArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,19 @@
namespace Tests\Integration\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions;

use MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayAppend;
use PHPUnit\Framework\Attributes\Test;

class ArrayAppendTest extends ArrayTestCase
{
protected function getStringFunctions(): array
{
return ['ARRAY_APPEND' => ArrayAppend::class];
return [
'ARRAY_APPEND' => ArrayAppend::class,
];
}

public function test_array_append_with_text_array(): void
#[Test]
public function can_append_to_text_array(): void
{
$dql = 'SELECT ARRAY_APPEND(t.textArray, \'orange\') as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -25,7 +29,8 @@ public function test_array_append_with_text_array(): void
$this->assertSame(['apple', 'banana', 'orange', 'orange'], $actual);
}

public function test_array_append_with_integer_array(): void
#[Test]
public function can_append_to_integer_array(): void
{
$dql = 'SELECT ARRAY_APPEND(t.integerArray, 3) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -37,7 +42,8 @@ public function test_array_append_with_integer_array(): void
$this->assertSame([1, 2, 3, 3], $actual);
}

public function test_array_append_with_boolean_array(): void
#[Test]
public function can_append_to_boolean_array(): void
{
$dql = 'SELECT ARRAY_APPEND(t.boolArray, true) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,19 @@
namespace Tests\Integration\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions;

use MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayCardinality;
use PHPUnit\Framework\Attributes\Test;

class ArrayCardinalityTest extends ArrayTestCase
{
protected function getStringFunctions(): array
{
return ['ARRAY_CARDINALITY' => ArrayCardinality::class];
return [
'ARRAY_CARDINALITY' => ArrayCardinality::class,
];
}

public function test_array_cardinality_with_text_array(): void
#[Test]
public function can_get_text_array_cardinality(): void
{
$dql = 'SELECT ARRAY_CARDINALITY(t.textArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -23,7 +27,8 @@ public function test_array_cardinality_with_text_array(): void
$this->assertSame(3, $result[0]['result']);
}

public function test_array_cardinality_with_integer_array(): void
#[Test]
public function can_get_integer_array_cardinality(): void
{
$dql = 'SELECT ARRAY_CARDINALITY(t.integerArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -33,7 +38,8 @@ public function test_array_cardinality_with_integer_array(): void
$this->assertSame(3, $result[0]['result']);
}

public function test_array_cardinality_with_boolean_array(): void
#[Test]
public function can_get_boolean_array_cardinality(): void
{
$dql = 'SELECT ARRAY_CARDINALITY(t.boolArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,19 @@
namespace Tests\Integration\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions;

use MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayCat;
use PHPUnit\Framework\Attributes\Test;

class ArrayCatTest extends ArrayTestCase
{
protected function getStringFunctions(): array
{
return ['ARRAY_CAT' => ArrayCat::class];
return [
'ARRAY_CAT' => ArrayCat::class,
];
}

public function test_array_cat_with_text_arrays(): void
#[Test]
public function can_concatenate_text_arrays(): void
{
$dql = 'SELECT ARRAY_CAT(:array1, :array2) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -27,7 +31,8 @@ public function test_array_cat_with_text_arrays(): void
$this->assertSame(['apple', 'banana', 'orange', 'kiwi'], $actual);
}

public function test_array_cat_with_integer_arrays(): void
#[Test]
public function can_concatenate_integer_arrays(): void
{
$dql = 'SELECT ARRAY_CAT(:array1, :array2) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -41,7 +46,8 @@ public function test_array_cat_with_integer_arrays(): void
$this->assertSame([1, 2, 3, 4], $actual);
}

public function test_array_cat_with_boolean_arrays(): void
#[Test]
public function can_concatenate_boolean_arrays(): void
{
$dql = 'SELECT ARRAY_CAT(:array1, :array2) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -55,7 +61,8 @@ public function test_array_cat_with_boolean_arrays(): void
$this->assertSame([true, false, true, true], $actual);
}

public function test_array_cat_with_array_columns(): void
#[Test]
public function can_concatenate_array_columns(): void
{
$dql = 'SELECT ARRAY_CAT(t.textArray, t.textArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,19 @@
namespace Tests\Integration\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions;

use MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayDimensions;
use PHPUnit\Framework\Attributes\Test;

class ArrayDimensionsTest extends ArrayTestCase
{
protected function getStringFunctions(): array
{
return ['ARRAY_DIMENSIONS' => ArrayDimensions::class];
return [
'ARRAY_DIMENSIONS' => ArrayDimensions::class,
];
}

public function test_array_dimensions_with_text_array(): void
#[Test]
public function can_get_text_array_dimensions(): void
{
$dql = 'SELECT ARRAY_DIMENSIONS(t.textArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -23,7 +27,8 @@ public function test_array_dimensions_with_text_array(): void
$this->assertSame('[1:3]', $result[0]['result']);
}

public function test_array_dimensions_with_integer_array(): void
#[Test]
public function can_get_integer_array_dimensions(): void
{
$dql = 'SELECT ARRAY_DIMENSIONS(t.integerArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -33,7 +38,8 @@ public function test_array_dimensions_with_integer_array(): void
$this->assertSame('[1:3]', $result[0]['result']);
}

public function test_array_dimensions_with_boolean_array(): void
#[Test]
public function can_get_boolean_array_dimensions(): void
{
$dql = 'SELECT ARRAY_DIMENSIONS(t.boolArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,19 @@
namespace Tests\Integration\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions;

use MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayLength;
use PHPUnit\Framework\Attributes\Test;

class ArrayLengthTest extends ArrayTestCase
{
protected function getStringFunctions(): array
{
return ['ARRAY_LENGTH' => ArrayLength::class];
return [
'ARRAY_LENGTH' => ArrayLength::class,
];
}

public function test_array_length_with_text_array(): void
#[Test]
public function can_get_text_array_length(): void
{
$dql = 'SELECT ARRAY_LENGTH(t.textArray, 1) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -24,7 +28,8 @@ public function test_array_length_with_text_array(): void
$this->assertSame(3, $result[0]['result']);
}

public function test_array_length_with_integer_array(): void
#[Test]
public function can_get_integer_array_length(): void
{
$dql = 'SELECT ARRAY_LENGTH(t.integerArray, 1) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -35,7 +40,8 @@ public function test_array_length_with_integer_array(): void
$this->assertSame(3, $result[0]['result']);
}

public function test_array_length_with_boolean_array(): void
#[Test]
public function can_get_boolean_array_length(): void
{
$dql = 'SELECT ARRAY_LENGTH(t.boolArray, 1) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -46,7 +52,8 @@ public function test_array_length_with_boolean_array(): void
$this->assertSame(3, $result[0]['result']);
}

public function test_array_length_with_invalid_dimension(): void
#[Test]
public function returns_null_for_invalid_dimension(): void
{
$dql = 'SELECT ARRAY_LENGTH(t.textArray, 2) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,19 @@
namespace Tests\Integration\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions;

use MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayNumberOfDimensions;
use PHPUnit\Framework\Attributes\Test;

class ArrayNumberOfDimensionsTest extends ArrayTestCase
{
protected function getStringFunctions(): array
{
return ['ARRAY_NUMBER_OF_DIMENSIONS' => ArrayNumberOfDimensions::class];
return [
'ARRAY_NUMBER_OF_DIMENSIONS' => ArrayNumberOfDimensions::class,
];
}

public function test_array_number_of_dimensions_with_text_array(): void
#[Test]
public function can_get_text_array_number_of_dimensions(): void
{
$dql = 'SELECT ARRAY_NUMBER_OF_DIMENSIONS(t.textArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -24,7 +28,8 @@ public function test_array_number_of_dimensions_with_text_array(): void
$this->assertSame(1, $result[0]['result']);
}

public function test_array_number_of_dimensions_with_integer_array(): void
#[Test]
public function can_get_integer_array_number_of_dimensions(): void
{
$dql = 'SELECT ARRAY_NUMBER_OF_DIMENSIONS(t.integerArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -35,7 +40,8 @@ public function test_array_number_of_dimensions_with_integer_array(): void
$this->assertSame(1, $result[0]['result']);
}

public function test_array_number_of_dimensions_with_boolean_array(): void
#[Test]
public function can_get_boolean_array_number_of_dimensions(): void
{
$dql = 'SELECT ARRAY_NUMBER_OF_DIMENSIONS(t.boolArray) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,31 @@
namespace Tests\Integration\MartinGeorgiev\Doctrine\ORM\Query\AST\Functions;

use MartinGeorgiev\Doctrine\ORM\Query\AST\Functions\ArrayPosition;
use PHPUnit\Framework\Attributes\Test;

class ArrayPositionTest extends ArrayTestCase
{
protected function getStringFunctions(): array
{
return ['ARRAY_POSITION' => ArrayPosition::class];
return [
'ARRAY_POSITION' => ArrayPosition::class,
];
}

public function test_array_position_with_text_array(): void
#[Test]
public function returns_position_when_text_element_is_found(): void
{
$dql = 'SELECT ARRAY_POSITION(t.textArray, \'banana\') as result
$dql = 'SELECT ARRAY_POSITION(t.textArray, \'orange\') as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
WHERE t.id = 1';

$result = $this->executeDqlQuery($dql);
$this->assertIsInt($result[0]['result']);
$this->assertSame(2, $result[0]['result']);
$this->assertSame(3, $result[0]['result']);
}

public function test_array_position_with_integer_array(): void
#[Test]
public function returns_position_when_integer_element_is_found(): void
{
$dql = 'SELECT ARRAY_POSITION(t.integerArray, 2) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -35,7 +40,8 @@ public function test_array_position_with_integer_array(): void
$this->assertSame(2, $result[0]['result']);
}

public function test_array_position_with_boolean_array(): void
#[Test]
public function returns_position_when_boolean_element_is_found(): void
{
$dql = 'SELECT ARRAY_POSITION(t.boolArray, false) as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand All @@ -46,7 +52,8 @@ public function test_array_position_with_boolean_array(): void
$this->assertSame(2, $result[0]['result']);
}

public function test_array_position_with_not_found_element(): void
#[Test]
public function returns_null_when_no_position_is_found(): void
{
$dql = 'SELECT ARRAY_POSITION(t.textArray, \'mango\') as result
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsArrays t
Expand Down
Loading
Loading