From 76e8ed954e2a1c70437fb34a927d1bb1d921d3ce Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Wed, 15 Jul 2020 13:54:01 +0400 Subject: Added category entity Signed-off-by: Valentin Popov --- src/Entities/CategoryEntity.php | 114 ++++++++++++++++++++++++++++++++++ tests/Entities/CategoryEntityTest.php | 47 ++++++++++++++ 2 files changed, 161 insertions(+) create mode 100644 src/Entities/CategoryEntity.php create mode 100644 tests/Entities/CategoryEntityTest.php diff --git a/src/Entities/CategoryEntity.php b/src/Entities/CategoryEntity.php new file mode 100644 index 0000000..ab1f431 --- /dev/null +++ b/src/Entities/CategoryEntity.php @@ -0,0 +1,114 @@ + + * @license http://www.apache.org/licenses/LICENSE-2.0 + * @package EPGService\Entities + */ +class CategoryEntity { + /** + * @var int + */ + protected int $id; + + /** + * @var string + */ + protected string $lang; + + /** + * @var string + */ + protected string $name; + + /** + * @var string + */ + protected string $version; + + /** + * @param int $id + * @param string $lang + * @param string $name + * @param string $version + */ + protected function __construct(int $id, string $lang, string $name, string $version) { + $this->id = $id; + $this->lang = $lang; + $this->name = $name; + $this->version = $version; + } + + /** + * @param array $payload + * + * @return \EPGService\Entities\CategoryEntity + * @throws \RuntimeException + */ + public static function create(array $payload): CategoryEntity { + if (!is_int($payload['id'])) { + throw new RuntimeException('blah-blah-blah'); + } + + if (!is_string($payload['lang'])) { + throw new RuntimeException('blah-blah-blah'); + } + + if (!is_string($payload['name'])) { + throw new RuntimeException('blah-blah-blah'); + } + + if (!is_string($payload['version'])) { + throw new RuntimeException('blah-blah-blah'); + } + + return new CategoryEntity($payload['id'], $payload['lang'], $payload['name'], $payload['version']); + } + + /** + * @param string $name + * + * @return mixed + */ + public function __get(string $name) { + return $this->$name; + } + + /** + * @param string $name + * @param mixed $value + * + * @throws \RuntimeException + */ + public function __set(string $name, $value) { + throw new RuntimeException('blah-blah-blah'); + } +} diff --git a/tests/Entities/CategoryEntityTest.php b/tests/Entities/CategoryEntityTest.php new file mode 100644 index 0000000..6ad7bd3 --- /dev/null +++ b/tests/Entities/CategoryEntityTest.php @@ -0,0 +1,47 @@ + + * @license http://www.apache.org/licenses/LICENSE-2.0 + * @package Tests\Entities + */ +final class CategoryEntityTest extends TestCase { + public function testCreateEntity(): void { + $faker = Faker::create(); + + $id = $faker->numberBetween(1, 999); + $lang = $faker->languageCode; + $name = $faker->word; + $version = $faker->sha256; + + $entity = CategoryEntity::create(compact('id', 'lang', 'name', 'version')); + + self::assertEquals($id, $entity->id); + self::assertEquals($lang, $entity->lang); + self::assertEquals($name, $entity->name); + self::assertEquals($version, $entity->version); + } +} -- cgit v1.2.3