Skip to content

Commit

Permalink
Remove Json functionality, moved to PhpGt/Json
Browse files Browse the repository at this point in the history
Closes #3
  • Loading branch information
g105b committed Jan 18, 2021
1 parent 5aec09c commit 2662793
Show file tree
Hide file tree
Showing 6 changed files with 0 additions and 311 deletions.
42 changes: 0 additions & 42 deletions src/DataObjectBuilder.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
<?php
namespace Gt\DataObject;

use Gt\DataObject\Json\JsonArrayData;
use Gt\DataObject\Json\JsonKvpData;
use Gt\DataObject\Json\JsonPrimitiveData;

class DataObjectBuilder {
public function fromObject(
object $input,
Expand Down Expand Up @@ -63,42 +59,4 @@ public function fromAssociativeArray(array $input):DataObject {

return $dataObject;
}

public function fromJsonObject(
object|array|string|int|float|bool|null $json
):JsonKvpData|JsonArrayData|JsonPrimitiveData|null {
$jsonData = null;

if(is_object($json)) {
/** @var JsonKvpData $jsonData */
$jsonData = $this->fromObject(
$json,
JsonKvpData::class
);
}
elseif(is_array($json)) {
$jsonData = $this->fromIndexedArray(
$json
);
}
else {
$jsonData = (new JsonPrimitiveData())->withValue($json);
}

return $jsonData;
}

private function fromIndexedArray(array $json):JsonArrayData {
$jsonData = new JsonArrayData();

foreach($json as $key => $value) {
if(is_object($value)) {
$value = $this->fromObject($value);
}

$jsonData = $jsonData->with($key, $value);
}

return $jsonData;
}
}
57 changes: 0 additions & 57 deletions src/Json/JsonArrayData.php

This file was deleted.

7 changes: 0 additions & 7 deletions src/Json/JsonData.php

This file was deleted.

4 changes: 0 additions & 4 deletions src/Json/JsonKvpData.php

This file was deleted.

20 changes: 0 additions & 20 deletions src/Json/JsonPrimitiveData.php

This file was deleted.

181 changes: 0 additions & 181 deletions test/phpunit/DataObjectBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -163,185 +163,4 @@ public function testMixingObjectInAssociativeArrayThrowsError() {
self::expectException(ObjectWithinAssociativeArrayException::class);
$sut->fromAssociativeArray($array);
}

public function testJsonKVP() {
$jsonString = <<<JSON
{
"id": 123,
"name": "Example"
}
JSON;

$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
$dataObject = $sut->fromObject($json);
self::assertEquals(123, $dataObject->getInt("id"));
self::assertEquals("Example", $dataObject->getString("name"));
}

public function testJsonContainingArray() {
$jsonString = <<<JSON
{
"id": 123,
"name": "Example",
"tags": ["test", "data", "json"]
}
JSON;

$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
$dataObject = $sut->fromObject($json);
self::assertEquals(123, $dataObject->getInt("id"));
self::assertContains("test", $dataObject->getArray("tags"));
self::assertContains("data", $dataObject->getArray("tags"));
self::assertContains("json", $dataObject->getArray("tags"));
}

public function testJsonContainingArrayWhenDecodedAsArray() {
$jsonString = <<<JSON
{
"id": 123,
"name": "Example",
"tags": ["test", "data", "json"]
}
JSON;

$json = json_decode($jsonString, true);
$sut = new DataObjectBuilder();
$dataObject = $sut->fromAssociativeArray($json);
self::assertEquals(123, $dataObject->getInt("id"));
self::assertContains("test", $dataObject->getArray("tags"));
self::assertContains("data", $dataObject->getArray("tags"));
self::assertContains("json", $dataObject->getArray("tags"));
}

public function testFromJsonObject() {
$jsonString = <<<JSON
{
"id": 123,
"name": "Example"
}
JSON;

$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
$data = $sut->fromJsonObject($json);

self::assertEquals(123, $data->getInt("id"));
self::assertEquals("Example", $data->getString("name"));
}

public function testFromJsonObjectArray() {
$jsonString = <<<JSON
["one", "two", "three"]
JSON;

$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
$data = $sut->fromJsonObject($json);

self::assertCount(3, $data);
self::assertEquals("one", $data[0]);
self::assertEquals("two", $data[1]);
self::assertEquals("three", $data[2]);
}

public function testFromJsonObjectArrayNestedObject() {
$jsonString = <<<JSON
["one", "two", {
"id": 123,
"name": "Example"
}]
JSON;

$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
$data = $sut->fromJsonObject($json);

self::assertCount(3, $data);
self::assertEquals("one", $data[0]);
self::assertInstanceOf(DataObject::class, $data[2]);
self::assertEquals(123, $data[2]->getInt("id"));
self::assertEquals("Example", $data[2]->getString("name"));
}

public function testFromJsonObjectArrayNestedArray() {
$jsonString = <<<JSON
["one", "two", {
"id": 123,
"name": "Example",
"tags": ["test", "data", "json"]
}]
JSON;

$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
/** @var JsonArrayData $data */
$data = $sut->fromJsonObject($json);

self::assertCount(3, $data);
$tagsArray = $data[2]->getArray("tags");
self::assertCount(3, $tagsArray);
self::assertContains("test", $tagsArray);
self::assertContains("data", $tagsArray);
self::assertContains("json", $tagsArray);
self::assertNotContains("name", $tagsArray);
}

public function testFromJsonObjectNull() {
$jsonString = "null";
$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
$data = $sut->fromJsonObject($json);

self::assertInstanceOf(JsonPrimitiveData::class, $data);
self::assertNull($data->getValue());
self::assertEquals("NULL", $data->getType());
}

public function testFromJsonObjectBool() {
$jsonString = "true";
$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
$data = $sut->fromJsonObject($json);

self::assertInstanceOf(JsonPrimitiveData::class, $data);
self::assertTrue($data->getValue());
self::assertEquals("boolean", $data->getType());
}

public function testFromJsonObjectInt() {
$jsonString = "123";
$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
$data = $sut->fromJsonObject($json);

self::assertInstanceOf(JsonPrimitiveData::class, $data);
self::assertEquals(123, $data->getValue());
self::assertEquals("integer", $data->getType());
}

public function testFromJsonObjectFloat() {
$jsonString = "123.456";
$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
$data = $sut->fromJsonObject($json);

self::assertInstanceOf(JsonPrimitiveData::class, $data);
self::assertEquals(123.456, $data->getValue());
self::assertEquals("double", $data->getType());
}

public function testFromJsonObjectString() {
$jsonString = <<<JSON
"Example!"
JSON;
$json = json_decode($jsonString);
$sut = new DataObjectBuilder();
$data = $sut->fromJsonObject($json);

self::assertInstanceOf(JsonPrimitiveData::class, $data);
self::assertEquals("Example!", $data->getValue());
self::assertEquals("string", $data->getType());
}
}

0 comments on commit 2662793

Please sign in to comment.