From 66c09cd60dfdf70e2c32896138e63532a6480fa6 Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Thu, 21 Jul 2016 15:04:37 +0100 Subject: [PATCH] Proof of reorder bug --- tests/GridFieldOrderableRowsTest.php | 32 ++++++++++++++++++++++++++++ tests/GridFieldOrderableRowsTest.yml | 22 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 tests/GridFieldOrderableRowsTest.yml diff --git a/tests/GridFieldOrderableRowsTest.php b/tests/GridFieldOrderableRowsTest.php index c954dcd..db2d25f 100644 --- a/tests/GridFieldOrderableRowsTest.php +++ b/tests/GridFieldOrderableRowsTest.php @@ -6,12 +6,44 @@ class GridFieldOrderableRowsTest extends SapphireTest { protected $usesDatabase = true; + protected static $fixture_file = 'GridFieldOrderableRowsTest.yml'; + protected $extraDataObjects = array( 'GridFieldOrderableRowsTest_Parent', 'GridFieldOrderableRowsTest_Ordered', 'GridFieldOrderableRowsTest_Subclass', ); + public function testReorderItems() { + $orderable = new GridFieldOrderableRows('ManyManySort'); + $reflection = new ReflectionMethod($orderable, 'executeReorder'); + $reflection->setAccessible(true); + + $parent = $this->objFromFixture('GridFieldOrderableRowsTest_Parent', 'parent'); + + $config = new GridFieldConfig_RelationEditor(); + $config->addComponent($orderable); + + $grid = new GridField( + 'MyManyMany', + 'My Many Many', + $parent->MyManyMany()->sort('ManyManySort'), + $config + ); + + $originalOrder = $parent->MyManyMany()->sort('ManyManySort')->column('ID'); + $desiredOrder = array_reverse($originalOrder); + + $this->assertNotEquals($originalOrder, $desiredOrder); + + $reflection->invoke($orderable, $grid, $desiredOrder); + + $newOrder = $parent->MyManyMany()->sort('ManyManySort')->column('ID'); + + $this->assertEquals($desiredOrder, $newOrder); + + } + /** * @covers GridFieldOrderableRows::getSortTable */ diff --git a/tests/GridFieldOrderableRowsTest.yml b/tests/GridFieldOrderableRowsTest.yml new file mode 100644 index 0000000..30b7e79 --- /dev/null +++ b/tests/GridFieldOrderableRowsTest.yml @@ -0,0 +1,22 @@ +GridFieldOrderableRowsTest_Ordered: + item1: + item2: + item3: + item4: + item5: + item6: +GridFieldOrderableRowsTest_Parent: + parent: + MyManyMany: + - 0: =>GridFieldOrderableRowsTest_Ordered.item1 + ManyManySort: 1 + - 1: =>GridFieldOrderableRowsTest_Ordered.item2 + ManyManySort: 1 + - 2: =>GridFieldOrderableRowsTest_Ordered.item3 + ManyManySort: 2 + - 3: =>GridFieldOrderableRowsTest_Ordered.item4 + ManyManySort: 2 + - 4: =>GridFieldOrderableRowsTest_Ordered.item5 + ManyManySort: 108 + - 5: =>GridFieldOrderableRowsTest_Ordered.item6 + ManyManySort: 108