From ae71305d82cc8ff761e6075e743160b8d5f4671a Mon Sep 17 00:00:00 2001 From: Antonio Reveron Date: Thu, 17 Jun 2021 17:46:01 +0100 Subject: [PATCH] This PR fix a bug while trying to use null values in scope in edit operation for the behavior. Test method provided. --- src/Model/Behavior/SequenceBehavior.php | 7 +++++++ tests/TestCase/Model/Behavior/SequenceBehaviorTest.php | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/src/Model/Behavior/SequenceBehavior.php b/src/Model/Behavior/SequenceBehavior.php index f0effce..fdf6d35 100644 --- a/src/Model/Behavior/SequenceBehavior.php +++ b/src/Model/Behavior/SequenceBehavior.php @@ -453,6 +453,13 @@ protected function _getOldValues(EntityInterface $entity): array $order = $values[$config['sequenceField']]; unset($values[$config['sequenceField']]); + foreach ($values as $field => $value) { + if (is_null($value)) { + $values[$field . ' IS'] = $value; + unset($values[$field]); + } + } + return [$order, $values]; } diff --git a/tests/TestCase/Model/Behavior/SequenceBehaviorTest.php b/tests/TestCase/Model/Behavior/SequenceBehaviorTest.php index 8640528..3d49f8e 100644 --- a/tests/TestCase/Model/Behavior/SequenceBehaviorTest.php +++ b/tests/TestCase/Model/Behavior/SequenceBehaviorTest.php @@ -159,6 +159,14 @@ public function testSaveNullScoped() $this->assertOrder([1, 4, 3, 5], $GroupedItems, ['group_field' => 1]); $this->assertOrder([6, 2, 7, 8, 17, 9, 10, 16], $GroupedItems, ['group_field IS' => null]); $this->assertOrder([11, 12, 13, 14, 15], $GroupedItems, ['group_field' => 3]); + + // Test editing record with scope null + $entity = $GroupedItems->get(8); + $entity->position = 5; + $entity = $GroupedItems->save($entity); + $this->assertOrder([1, 4, 3, 5], $GroupedItems, ['group_field' => 1]); + $this->assertOrder([6, 2, 7, 17, 9, 8, 10, 16], $GroupedItems, ['group_field IS' => null]); + $this->assertOrder([11, 12, 13, 14, 15], $GroupedItems, ['group_field' => 3]); } /**