From f95233dad2bc1ce0b3ca8e60ef78140b586fdf33 Mon Sep 17 00:00:00 2001 From: Ade Attwood Date: Sun, 25 Jun 2017 20:43:32 +0100 Subject: [PATCH] Testing and bug fix --- src/ArrayHelper.php | 1 + src/Enum.php | 24 ++++++++++-------------- tests/unit/ArrayHelperCest.php | 33 ++++++++++++++++++++++++++++++++- tests/unit/ArrayObjectCest.php | 8 ++++++++ tests/unit/EnumCest.php | 20 ++++++++++++++++++++ 5 files changed, 71 insertions(+), 15 deletions(-) diff --git a/src/ArrayHelper.php b/src/ArrayHelper.php index 596065a..559d2ab 100644 --- a/src/ArrayHelper.php +++ b/src/ArrayHelper.php @@ -5,6 +5,7 @@ namespace adeattwood\helpers; use Yii; use adeattwood\helpers\ArrayObject; use adeattwood\helpers\Enum; +use yii\base\InvalidConfigException; /** * @category PHP diff --git a/src/Enum.php b/src/Enum.php index bf0c8cf..390877f 100644 --- a/src/Enum.php +++ b/src/Enum.php @@ -50,26 +50,22 @@ class Enum extends \yii\base\Object { switch( $var ) { case is_null( $var ): - return static::TYPE_NULL; - break; - case is_bool( $var ); - return static::TYPE_BOOL; - break; + return self::TYPE_NULL; + case is_array( $var ): + return self::TYPE_ARRAY; + case is_bool( $var ): + return self::TYPE_BOOL; case is_float( $var ): case is_numeric( str_replace( ',', '', $var ) ) && strpos( $var, '.' ) > 0 && is_float( ( float )str_replace( ',', '', $var ) ): - return static::TYPE_FLOAT; - break; + return self::TYPE_FLOAT; case is_int( $var ) || ( is_numeric( $var ) && is_int( ( int )$var ) ): - return static::TYPE_INT; - break; + return self::TYPE_INT; case is_scalar( $var ) && strtotime( $var ) !== false: - return static::TYPE_DATETIME; - break; + return self::TYPE_DATETIME; case is_scalar( $var ): - return static::TYPE_STRING; - break; + return self::TYPE_STRING; default: - return static::TYPE_UNKNOWN; + return self::TYPE_UNKNOWN; } } diff --git a/tests/unit/ArrayHelperCest.php b/tests/unit/ArrayHelperCest.php index ecbb033..c3d232f 100644 --- a/tests/unit/ArrayHelperCest.php +++ b/tests/unit/ArrayHelperCest.php @@ -15,7 +15,9 @@ use adeattwood\helpers\tests\_data\ModelOne; class ArrayHelperCest { - public function _before( UnitTester $I ) + + +public function _before( UnitTester $I ) { } @@ -44,6 +46,7 @@ class ArrayHelperCest public function testParseAttribute( UnitTester $I ) { $model = new ModelOne; + $model->propOne = "test"; $data = ArrayHelper::parseAttribute( $model, 'propOne' ); @@ -55,4 +58,32 @@ class ArrayHelperCest $I->assertEquals( $data->value, 'test' ); $I->assertEquals( $data->raw, 'test' ); } + + public function testErrorWithParseAttribute( UnitTester $I ) + { + $model = new ModelOne; + + $model->propOne = "test"; + try { + $data = ArrayHelper::parseAttribute( $model, 'not_a_prop' ); + $I->fail( 'Not exseption thrown' ); + } catch ( \yii\base\UnknownPropertyException $e ) { + } catch ( \Exception $e ) { + $I->fail( '\yii\base\UnknownPropertyException should have been thorwn' ); + } + } + + public function testInvalidConfigParseAttribute( UnitTester $I ) + { + $model = new ModelOne; + + $model->propOne = "test"; + try { + $data = ArrayHelper::parseAttribute( $model, '' ); + $I->fail( 'Not exseption thrown' ); + } catch ( \yii\base\InvalidConfigException $e ) { + } catch ( \Exception $e ) { + $I->fail( '\yii\base\InvalidConfigException should have been thorwn' ); + } + } } diff --git a/tests/unit/ArrayObjectCest.php b/tests/unit/ArrayObjectCest.php index 3dfc1f0..81df52e 100644 --- a/tests/unit/ArrayObjectCest.php +++ b/tests/unit/ArrayObjectCest.php @@ -57,4 +57,12 @@ class ArrayObjectCest $I->assertContains( '', $table ); $I->assertContains( 'Value One', $table ); } + + public function testRandomValue( UnitTester $I ) + { + for( $i = 0; $i < 5; $i++ ) { + $I->assertContains( $this->arrayObject->randomValue(), $this->array ); + // var_dump( $this->arrayObject->randomValue() ); + } + } } diff --git a/tests/unit/EnumCest.php b/tests/unit/EnumCest.php index 5bc4522..3ff8a26 100644 --- a/tests/unit/EnumCest.php +++ b/tests/unit/EnumCest.php @@ -27,4 +27,24 @@ class EnumCest $I->assertEquals( Enum::formatBytes( 28434322.25 ), "27.12 MB" ); $I->assertEquals( Enum::formatBytes( 17328347842.25, 3 ), "16.138 GB" ); } + + /** + * @todo test returning a resource + */ + public function testGetTypeReturnValue( UnitTester $I ) + { + $array = [ + "array" => [ "key" => "value" ], + //"null" => null, + "boolean" => true, + "float" => 1.2, + "integer" => 3, + "datetime" => "2-2-1989", + "string" => "I'm a string" + ]; + + foreach ( $array as $type => $var ) { + $I->assertEquals( $type, Enum::getType( $var ) ); + } + } }