Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
igor-chepurnoi committed Nov 22, 2016
1 parent a173bdb commit 4f26c31
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 60 deletions.
35 changes: 21 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,12 @@ to the require section of your `composer.json` file.
```php
use yii2mod\enum\helpers\BaseEnum;

class BooleanEnum extends BaseEnum
class PostStatus extends BaseEnum
{
const YES = 1;
const NO = 0;
const PENDING = 0;
const APPROVED = 1;
const REJECTED = 2;
const POSTPONED = 3;

/**
* @var string message category
Expand All @@ -53,21 +55,26 @@ class BooleanEnum extends BaseEnum
*/
public static $messageCategory = 'app';

/**
* @var array
*/
public static $list = [
self::YES => 'Yes',
self::NO => 'No'
self::PENDING => 'Pending',
self::APPROVED => 'Approved',
self::REJECTED => 'Rejected',
self::POSTPONED => 'Postponed',
];
}
```
## Usage
```php
BooleanEnum::getConstantsByValue() // [1 => 'YES', 0 => 'NO']
BooleanEnum::getConstantsByName() // ['YES' => 1, 'NO' => 0]
BooleanEnum::isValidName(1) // false
BooleanEnum::isValidName('YES') // true
BooleanEnum::isValidValue(1) // true
BooleanEnum::isValidValue('Yes') // false
BooleanEnum::listData() // [1 => 'Yes', 0 => 'No']
BooleanEnum::getLabel(1) // Yes
BooleanEnum::getValueByName('Yes') // 1
PostStatus::getConstantsByValue() // ['PENDING', 'APPROVED', 'REJECTED', 'POSTPONED']
PostStatus::getConstantsByName() // ['PENDING' => 0, 'APPROVED' => 1, 'REJECTED' => 2, 'POSTPONED' => 3]
PostStatus::isValidName(1) // false
PostStatus::isValidName('APPROVED') // true
PostStatus::isValidValue(1) // true
PostStatus::isValidValue('Approved') // false
PostStatus::listData() // ['Pending', 'Approved', 'Rejected', 'Postponed']
PostStatus::getLabel(1) // Approved
PostStatus::getValueByName('Approved') // 1
```
36 changes: 18 additions & 18 deletions tests/EnumTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace yii2mod\enum\tests;

use yii2mod\enum\tests\data\BooleanEnum;
use yii2mod\enum\tests\data\PostStatus;

/**
* Class EnumTest
Expand All @@ -13,50 +13,50 @@ class EnumTest extends TestCase
{
public function testEnumMethods()
{
$this->assertEquals([1 => 'YES', 0 => 'NO'], BooleanEnum::getConstantsByValue());
$this->assertEquals(['YES' => 1, 'NO' => 0], BooleanEnum::getConstantsByName());
$this->assertEquals([1 => 'Yes', 0 => 'No'], BooleanEnum::listData());
$this->assertEquals('Yes', BooleanEnum::getLabel(1));
$this->assertEquals('1', BooleanEnum::getValueByName('Yes'));
$this->assertEquals(['PENDING', 'APPROVED', 'REJECTED', 'POSTPONED'], PostStatus::getConstantsByValue());
$this->assertEquals(['PENDING' => 0, 'APPROVED' => 1, 'REJECTED' => 2, 'POSTPONED' => 3], PostStatus::getConstantsByName());
$this->assertEquals(['Pending', 'Approved', 'Rejected', 'Postponed'], PostStatus::listData());
$this->assertEquals('Pending', PostStatus::getLabel(PostStatus::PENDING));
$this->assertEquals(1, PostStatus::getValueByName('Approved'));
}

public function testValidation()
{
$this->assertFalse(BooleanEnum::isValidName(1));
$this->assertTrue(BooleanEnum::isValidName('YES'));
$this->assertTrue(BooleanEnum::isValidValue(1));
$this->assertFalse(BooleanEnum::isValidValue('YES'));
$this->assertFalse(PostStatus::isValidName(1));
$this->assertTrue(PostStatus::isValidName('APPROVED'));
$this->assertTrue(PostStatus::isValidValue(1));
$this->assertFalse(PostStatus::isValidValue('APPROVED'));
}

public function testCreateByName()
{
$enum = BooleanEnum::createByName('YES');
$enum = PostStatus::createByName('APPROVED');

$this->assertEquals(BooleanEnum::YES, $enum->getValue());
$this->assertTrue(array_key_exists($enum->getName(), BooleanEnum::getConstantsByName()));
$this->assertEquals(PostStatus::APPROVED, $enum->getValue());
$this->assertTrue(array_key_exists($enum->getName(), PostStatus::getConstantsByName()));
}

/**
* @expectedException \UnexpectedValueException
*/
public function testFailedCreateByName()
{
BooleanEnum::createByName('not existing name');
PostStatus::createByName('not existing name');
}

public function testCreateByValue()
{
$enum = BooleanEnum::createByValue(BooleanEnum::YES);
$enum = PostStatus::createByValue(PostStatus::APPROVED);

$this->assertEquals(BooleanEnum::YES, $enum->getValue());
$this->assertTrue(array_key_exists($enum->getName(), BooleanEnum::getConstantsByName()));
$this->assertEquals(PostStatus::APPROVED, $enum->getValue());
$this->assertTrue(array_key_exists($enum->getName(), PostStatus::getConstantsByName()));
}

/**
* @expectedException \UnexpectedValueException
*/
public function testFailedCreateByValue()
{
BooleanEnum::createByValue('not existing value');
PostStatus::createByValue('not existing value');
}
}
28 changes: 0 additions & 28 deletions tests/data/BooleanEnum.php

This file was deleted.

28 changes: 28 additions & 0 deletions tests/data/PostStatus.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace yii2mod\enum\tests\data;

use yii2mod\enum\helpers\BaseEnum;

/**
* Class PostStatus
*
* @package yii2mod\enum\tests\data
*/
class PostStatus extends BaseEnum
{
const PENDING = 0;
const APPROVED = 1;
const REJECTED = 2;
const POSTPONED = 3;

/**
* @var array
*/
public static $list = [
self::PENDING => 'Pending',
self::APPROVED => 'Approved',
self::REJECTED => 'Rejected',
self::POSTPONED => 'Postponed',
];
}

0 comments on commit 4f26c31

Please sign in to comment.