Skip to content

Commit

Permalink
Cleanups
Browse files Browse the repository at this point in the history
  • Loading branch information
SMillerDev committed Nov 18, 2016
1 parent 78dc9f6 commit f06c567
Show file tree
Hide file tree
Showing 31 changed files with 983 additions and 678 deletions.
28 changes: 25 additions & 3 deletions src/PHPDraft/Core/BaseTest.php
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
<?php
/**
* This file contains the TestBase.php
* This file contains the BaseTest.php
*
* @package php-drafter\SOMETHING
* @package PHPDraft\Core
* @author Sean Molenaar<[email protected]>
*/

namespace PHPDraft\Core;


use PHPUnit_Framework_TestCase;
use ReflectionClass;

/**
* Class BaseTest
*/
class BaseTest extends PHPUnit_Framework_TestCase
{
const FUNCTION_ID = '_phpdraftbu';
Expand All @@ -27,14 +29,34 @@ class BaseTest extends PHPUnit_Framework_TestCase
*/
protected $reflection;

/**
* Clear up tests
* @return void
*/
public function tearDown()
{
unset($this->class);
unset($this->reflection);
}

/**
* Mock an internal function
*
* @param string $name function name
* @param string $mock function to replace it with
*
* @return void
*/
protected function mock_function($name, $mock)
{
if (function_exists($name . self::FUNCTION_ID) === FALSE)
{
runkit_function_copy($name, $name . self::FUNCTION_ID);
}

runkit_function_redefine($name, '', $mock);
}

/**
* Unmock a PHP function.
*
Expand Down
15 changes: 13 additions & 2 deletions src/PHPDraft/In/ApibFileParser.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@

namespace PHPDraft\In;

/**
* Class ApibFileParser
*/
class ApibFileParser
{
/**
Expand All @@ -33,7 +36,7 @@ public function __construct($filename = 'index.apib')
{
$this->location = pathinfo($filename, PATHINFO_DIRNAME) . '/';

set_include_path(get_include_path().':'.$this->location);
set_include_path(get_include_path() . ':' . $this->location);

$this->full_apib = $this->get_apib($filename);
}
Expand All @@ -60,9 +63,17 @@ function get_apib($filename)
return $file;
}

/**
* Check if an APIB file exists
*
* @param string $filename File to check
*
* @return void
*/
private function file_check($filename)
{
if (!file_exists($filename)) {
if (!file_exists($filename))
{
file_put_contents('php://stderr', "API File not found: $filename\n");
exit(1);
}
Expand Down
27 changes: 16 additions & 11 deletions src/PHPDraft/In/Tests/ApibFileParserTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,42 @@
/**
* This file contains the ApibFileParserTest.php
*
* @package php-drafter\SOMETHING
* @package PHPDraft\In
* @author Sean Molenaar<[email protected]>
*/

namespace PHPDraft\In\Tests;


use PHPDraft\Core\BaseTest;
use PHPDraft\In\ApibFileParser;
use ReflectionClass;

/**
* Class ApibFileParserTest
* @covers PHPDraft\In\ApibFileParser
*/
class ApibFileParserTest extends BaseTest
{

/**
* Set up tests
* @return void
*/
public function setUp()
{
$this->class = new ApibFileParser(__DIR__.'/ApibFileParserTest.php');
$this->class = new ApibFileParser(__DIR__ . '/ApibFileParserTest.php');
$this->reflection = new ReflectionClass('PHPDraft\In\ApibFileParser');
}

public function tearDown()
{
unset($this->class);
unset($this->reflection);
}

/**
* Test if setup is successful
* @return void
*/
public function testSetup()
{
$property = $this->reflection->getProperty('location');
$property->setAccessible(TRUE);
$this->assertSame(__DIR__.'/', $property->getValue($this->class));
$this->assertSame(__DIR__ . '/', $property->getValue($this->class));
}


}
14 changes: 9 additions & 5 deletions src/PHPDraft/Model/Category.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,17 @@

namespace PHPDraft\Model;

use PHPDraft\Model\Elements\DataStructureElement;
use PHPDraft\Model\Elements\ObjectStructureElement;

/**
* Class Category
*/
class Category extends HierarchyElement
{
/**
* API Structure element
*
* @var DataStructureElement[]
* @var ObjectStructureElement[]
*/
public $structures = [];

Expand All @@ -29,19 +32,20 @@ class Category extends HierarchyElement
function parse($object)
{
parent::parse($object);
foreach ($object->content as $key => $item) {
foreach ($object->content as $item) {
switch ($item->element) {
case 'resource':
$resource = new Resource($this);
$this->children[] = $resource->parse($item);
break;
case 'dataStructure':
$deps = [];
$struct = new DataStructureElement();
$struct = new ObjectStructureElement();
$struct->deps = $deps;
$struct->parse($item, $deps);

if (isset($item->content[0]->meta->id)) {
if (isset($item->content[0]->meta->id))
{
$this->structures[$item->content[0]->meta->id] = $struct;
} else {
$this->structures[] = $struct;
Expand Down
92 changes: 48 additions & 44 deletions src/PHPDraft/Model/Elements/ArrayStructureElement.php
Original file line number Diff line number Diff line change
@@ -1,76 +1,80 @@
<?php
/**
* Created by PhpStorm.
* User: smillernl
* Date: 2-9-16
* Time: 15:21
* This file contains the ArrayStructureElement.php
*
* @package PHPDraft\Model\Elements
* @author Sean Molenaar<[email protected]>
*/

namespace PHPDraft\Model\Elements;

use PHPDraft\Model\StructureElement;

class ArrayStructureElement extends DataStructureElement implements StructureElement
/**
* Class ArrayStructureElement
*/
class ArrayStructureElement extends ObjectStructureElement implements StructureElement
{

/**
* Type of objects in the array
* Parse an array object
*
* @param \stdClass $object APIb Item to parse
* @param array $dependencies List of dependencies build
*
* @var
* @return $this
*/
public $type_of;

public function parse($item, &$dependencies)
public function parse($object, &$dependencies)
{
$this->element = (isset($item->element)) ? $item->element : 'array';
$this->value = (isset($item->content)) ? $item->content : null;

if (isset($item->content)) {
foreach ($item->content as $key => $sub_item) {
$this->type[$key] = $sub_item->element;
switch ($sub_item->element) {
case 'array':
$value = new ArrayStructureElement();
$this->value[$key] = $value->parse($sub_item, $dependencies);
break;
case 'object':
$value = new DataStructureElement();
$this->value[$key] = $value->parse($sub_item, $dependencies);
break;
case 'enum':
$value = new EnumStructureElement();
$this->value[$key] = $value->parse($sub_item, $dependencies);
break;
default:
$this->value[$key] = (isset($sub_item->content)) ? $sub_item->content : null;
break;
}
$this->element = (isset($object->element)) ? $object->element : 'array';

$this->parse_common($object, $dependencies);

if(!isset($object->content->value->content))
{
$this->value = [];
return $this;
}

foreach ($object->content->value->content as $sub_item)
{
if (!in_array($sub_item->element, self::DEFAULTS))
{
$dependencies[] = $sub_item->element;
}

$this->value[] = (isset($sub_item->element)) ? $sub_item->element : '';
}

$this->deps = $dependencies;

return $this;
}

/**
* Provide HTML representation
*
* @return string
*/
function __toString()
{
if (!is_array($this->type)) {
return '';
}
$return = '<ul class="list-group">';
foreach ($this->type as $key => $item) {
$type =
(in_array($item, self::DEFAULTS)) ? $item : '<a href="#object-' . str_replace(' ', '-',
strtolower($item)) . '">' . $item . '</a>';

$value =
(isset($this->value[$key])) ? ': <span class="example-value pull-right">' . json_encode($this->value[$key]) . '</span>' : null;
if (!is_array($this->value))
{
return '<span class="example-value pull-right">[ ]</span>';
}

foreach ($this->value as $item) {
$type = (in_array($this->value, self::DEFAULTS)) ? $item : '<a href="#object-' . str_replace(' ', '-',
strtolower($item)) . '">' . $item . '</a>';

$return .= '<li class="list-group-item">' . $type . $value . '</li>';
$return .= '<li class="list-group-item">' . $type . '</li>';
}

$return .= '</ul>';

return $return;
}


}
Loading

0 comments on commit f06c567

Please sign in to comment.