From baac98776d32e02f37edd3fd1682a6974db4ca8d Mon Sep 17 00:00:00 2001 From: Antony Videtta Date: Mon, 7 Oct 2019 14:50:17 +1300 Subject: [PATCH] Fix: RM#69278 Prelim unit test --- tests/unit/JSONDataFormatterTest.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) mode change 100644 => 100755 tests/unit/JSONDataFormatterTest.php diff --git a/tests/unit/JSONDataFormatterTest.php b/tests/unit/JSONDataFormatterTest.php old mode 100644 new mode 100755 index fe280b5..9b53016 --- a/tests/unit/JSONDataFormatterTest.php +++ b/tests/unit/JSONDataFormatterTest.php @@ -3,7 +3,12 @@ namespace SilverStripe\RestfulServer\Tests; use SilverStripe\RestfulServer\RestfulServer; +use SilverStripe\ORM\DataObject; +use SilverStripe\RestfulServer\Tests\Stubs\JSONDataFormatterTypeTestObject_1; use SilverStripe\RestfulServer\Tests\Stubs\JSONDataFormatterTypeTestObject; +use SilverStripe\RestfulServer\Tests\Stubs\JSONDataFormatterTypeTestObject_2; +use SilverStripe\RestfulServer\Tests\Stubs\JSONDataFormatterTypeTestObject_3; + use SilverStripe\Dev\SapphireTest; use SilverStripe\RestfulServer\DataFormatter\JSONDataFormatter; @@ -27,6 +32,7 @@ class JSONDataFormatterTest extends SapphireTest $formatter = new JSONDataFormatter(); $parent = $this->objFromFixture(JSONDataFormatterTypeTestObject::class, 'parent'); $json = $formatter->convertDataObject($parent); + $this->assertRegexp('/"ID":\d+/', $json, 'PK casted to integer'); $this->assertRegexp('/"Created":"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}"/', $json, 'Datetime casted to string'); $this->assertContains('"Name":"Parent"', $json, 'String casted to string'); @@ -42,5 +48,24 @@ class JSONDataFormatterTest extends SapphireTest $this->assertContains('"Sort":0', $json, 'Empty integer is 0'); $this->assertContains('"Average":0', $json, 'Empty float is 0'); $this->assertRegexp('/"ParentID":\d+/', $json, 'FK casted to integer'); + + + // Test convertDataObjectToJSONObject + $parent = $this->objFromFixture(JSONDataFormatterTypeTestObject::class, 'parent'); + $JsonObject = $formatter->convertDataObjectToJSONObject($parent); + $JsonObjectArray = json_encode($JsonObject); + + $this->assertEquals('string', gettype($JsonObjectArray)); // is not null + $this->assertRegexp('/"ID":\d+/', $JsonObjectArray, 'PK casted to integer'); + $this->assertRegexp('/"LastEdited":"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}"/', $JsonObjectArray, 'Datetime casted to string'); + $this->assertRegexp('/"Created":"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}"/', $JsonObjectArray, 'Datetime casted to string'); + + $this->assertContains('"Name":"Parent"', $JsonObjectArray, 'String casted to string'); + $this->assertContains('"Active":true', $JsonObjectArray, 'Boolean casted to boolean'); + $this->assertContains('"Sort":17', $JsonObjectArray, 'Integer casted to integer'); + $this->assertContains('"Average":1.2345', $JsonObjectArray, 'Float casted to float'); + $this->assertContains('"ParentID":0', $JsonObjectArray, 'Empty FK is 0'); + } + }