diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 0c3a81d..342fa61 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -36,6 +36,7 @@ use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; +use phpOMS\Localization\ISO639x1Enum; use phpOMS\Model\Message\FormValidation; /** @@ -157,7 +158,7 @@ final class ApiController extends Controller $this->createModel($request->header->account, $contactElement, ContactElementMapper::class, 'client-contactElement', $request->getOrigin()); $this->createModelRelation( $request->header->account, - (int) $request->getData('client'), + (int) $request->getData('account'), $contactElement->getId(), ClientMapper::class, 'contactElements', '', $request->getOrigin() ); @@ -271,7 +272,7 @@ final class ApiController extends Controller private function createClientAttributeTypeL11nFromRequest(RequestAbstract $request) : ClientAttributeTypeL11n { $attrL11n = new ClientAttributeTypeL11n(); - $attrL11n->setType((int) ($request->getData('type') ?? 0)); + $attrL11n->type = (int) ($request->getData('type') ?? 0); $attrL11n->setLanguage((string) ( $request->getData('language') ?? $request->getLanguage() )); @@ -324,7 +325,6 @@ final class ApiController extends Controller } $attrType = $this->createClientAttributeTypeFromRequest($request); - $attrType->setL11n($request->getData('title'), $request->getData('language')); $this->createModel($request->header->account, $attrType, ClientAttributeTypeMapper::class, 'attr_type', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute type', 'Attribute type successfully created', $attrType); @@ -342,9 +342,9 @@ final class ApiController extends Controller private function createClientAttributeTypeFromRequest(RequestAbstract $request) : ClientAttributeType { $attrType = new ClientAttributeType(); - $attrType->setL11n((string) ($request->getData('name') ?? '')); - $attrType->setFields((int) ($request->getData('fields') ?? 0)); - $attrType->setCustom((bool) ($request->getData('custom') ?? false)); + $attrType->setL11n((string) ($request->getData('title') ?? ''), $request->getData('language') ?? ISO639x1Enum::_EN); + $attrType->fields = (int) ($request->getData('fields') ?? 0); + $attrType->custom = (bool) ($request->getData('custom') ?? false); return $attrType; } @@ -361,9 +361,7 @@ final class ApiController extends Controller private function validateClientAttributeTypeCreate(RequestAbstract $request) : array { $val = []; - if (($val['name'] = empty($request->getData('name'))) - || ($val['title'] = empty($request->getData('title'))) - ) { + if (($val['title'] = empty($request->getData('title')))) { return $val; } diff --git a/Models/Client.php b/Models/Client.php index ead9223..544567a 100755 --- a/Models/Client.php +++ b/Models/Client.php @@ -37,15 +37,15 @@ class Client public string $number = ''; - private string $numberReverse = ''; + public string $numberReverse = ''; - private int $status = 0; + private int $status = ClientStatus::ACTIVE; private int $type = 0; private array $ids = []; - private string $info = ''; + public string $info = ''; public \DateTimeImmutable $createdAt; @@ -109,36 +109,6 @@ class Client return $this->id; } - /** - * Get reverse number. - * - * @return string - * - * @since 1.0.0 - */ - public function getReverseNumber() : string - { - return $this->numberReverse; - } - - /** - * Set reverse number. - * - * @param string $numberReverse Reverse number - * - * @return void - * - * @since 1.0.0 - */ - public function setReverseNumber(string $numberReverse) : void - { - if (!\is_scalar($numberReverse)) { - throw new \Exception(); - } - - $this->numberReverse = $numberReverse; - } - /** * Get status. * @@ -191,32 +161,6 @@ class Client $this->type = $type; } - /** - * Get info. - * - * @return string - * - * @since 1.0.0 - */ - public function getInfo() : string - { - return $this->info; - } - - /** - * Set info. - * - * @param string $info Info - * - * @return void - * - * @since 1.0.0 - */ - public function setInfo(string $info) : void - { - $this->info = $info; - } - /** * Add doc to item * @@ -344,36 +288,16 @@ class Client $this->contactElements[] = $element; } - /** - * Get media file by type - * - * @param string $type Media type - * - * @return Media - * - * @since 1.0.0 - */ - public function getFileByType(string $type) : Media - { - foreach ($this->files as $file) { - if ($file->type === $type) { - return $file; - } - } - - return new NullMedia(); - } - /** * Get all media files by type * - * @param string $type Media type + * @param int $type Media type * * @return Media[] * * @since 1.0.0 */ - public function getFilesByType(string $type) : array + public function getFilesByType(int $type = null) : array { $files = []; foreach ($this->files as $file) { @@ -384,4 +308,27 @@ class Client return $files; } + + /** + * {@inheritdoc} + */ + public function toArray() : array + { + return [ + 'id' => $this->id, + 'number' => $this->number, + 'numberReverse' => $this->numberReverse, + 'status' => $this->status, + 'type' => $this->type, + 'info' => $this->info, + ]; + } + + /** + * {@inheritdoc} + */ + public function jsonSerialize() + { + return $this->toArray(); + } } diff --git a/Models/ClientAttribute.php b/Models/ClientAttribute.php index e49ff96..379a17f 100755 --- a/Models/ClientAttribute.php +++ b/Models/ClientAttribute.php @@ -58,6 +58,17 @@ class ClientAttribute implements \JsonSerializable, ArrayableInterface */ public ClientAttributeValue $value; + /** + * Constructor. + * + * @since 1.0.0 + */ + public function __construct() + { + $this->type = new ClientAttributeType(); + $this->value = new ClientAttributeValue(); + } + /** * Get id * @@ -75,7 +86,11 @@ class ClientAttribute implements \JsonSerializable, ArrayableInterface */ public function toArray() : array { - return []; + return [ + 'id' => $this->id, + 'type' => $this->type, + 'value' => $this->value, + ]; } /** diff --git a/Models/ClientAttributeType.php b/Models/ClientAttributeType.php index 6acb517..e85e668 100755 --- a/Models/ClientAttributeType.php +++ b/Models/ClientAttributeType.php @@ -41,15 +41,16 @@ class ClientAttributeType implements \JsonSerializable, ArrayableInterface * @var string * @since 1.0.0 */ - protected string $name = ''; // @todo: currently not filled, should be used as identifier or if not required removed (at the moment it seems like it is useless?!) + public string $name = ''; // @todo: currently not filled, should be used as identifier or if not required removed (at the moment it seems like it is useless?!) /** * Which field data type is required (string, int, ...) in the value + * @todo create enum for this * * @var int * @since 1.0.0 */ - protected int $fields = 0; + public int $fields = 0; /** * Is a custom value allowed (e.g. custom string) @@ -57,7 +58,7 @@ class ClientAttributeType implements \JsonSerializable, ArrayableInterface * @var bool * @since 1.0.0 */ - protected bool $custom = false; + public bool $custom = false; public string $validationPattern = ''; @@ -134,40 +135,19 @@ class ClientAttributeType implements \JsonSerializable, ArrayableInterface return $this->l11n instanceof ClientAttributeTypeL11n ? $this->l11n->title : $this->l11n; } - /** - * Set fields - * - * @param int $fields Fields - * - * @return void - * - * @since 1.0.0 - */ - public function setFields(int $fields) : void - { - $this->fields = $fields; - } - - /** - * Set custom - * - * @param bool $custom FieldsCustom - * - * @return void - * - * @since 1.0.0 - */ - public function setCustom(bool $custom) : void - { - $this->custom = $custom; - } - /** * {@inheritdoc} */ public function toArray() : array { - return []; + return [ + 'id' => $this->id, + 'name' => $this->name, + 'fields' => $this->fields, + 'custom' => $this->custom, + 'validationPattern' => $this->validationPattern, + 'isRequired' => $this->isRequired, + ]; } /** diff --git a/Models/ClientAttributeTypeL11n.php b/Models/ClientAttributeTypeL11n.php index dff09b3..0bd873b 100755 --- a/Models/ClientAttributeTypeL11n.php +++ b/Models/ClientAttributeTypeL11n.php @@ -41,7 +41,7 @@ class ClientAttributeTypeL11n implements \JsonSerializable, ArrayableInterface * @var int|ClientAttributeType * @since 1.0.0 */ - protected int | ClientAttributeType $type = 0; + public int | ClientAttributeType $type = 0; /** * Language. @@ -88,29 +88,15 @@ class ClientAttributeTypeL11n implements \JsonSerializable, ArrayableInterface } /** - * Get attribute type + * Get language * - * @return int|ClientAttributeType + * @return string * * @since 1.0.0 */ - public function getType() + public function getLanguage() : string { - return $this->type; - } - - /** - * Set type. - * - * @param int $type Type id - * - * @return void - * - * @since 1.0.0 - */ - public function setType(int $type) : void - { - $this->type = $type; + return $this->language; } /** @@ -132,7 +118,12 @@ class ClientAttributeTypeL11n implements \JsonSerializable, ArrayableInterface */ public function toArray() : array { - return []; + return [ + 'id' => $this->id, + 'title' => $this->title, + 'type' => $this->type, + 'language' => $this->language, + ]; } /** diff --git a/Models/ClientAttributeValue.php b/Models/ClientAttributeValue.php index d6c0418..c569782 100755 --- a/Models/ClientAttributeValue.php +++ b/Models/ClientAttributeValue.php @@ -111,7 +111,7 @@ class ClientAttributeValue implements \JsonSerializable, ArrayableInterface * * @since 1.0.0 */ - public function __construct(int $type = 0, $value = '', string $language = ISO639x1Enum::_EN) + public function __construct(int $type = 0, mixed $value = null, string $language = ISO639x1Enum::_EN) { $this->type = $type; $this->language = $language; @@ -140,7 +140,7 @@ class ClientAttributeValue implements \JsonSerializable, ArrayableInterface * * @since 1.0.0 */ - public function setValue($value) : void + public function setValue(mixed $value) : void { if (\is_string($value)) { $this->valueStr = $value; @@ -189,6 +189,18 @@ class ClientAttributeValue implements \JsonSerializable, ArrayableInterface $this->language = $language; } + /** + * Get language + * + * @return string + * + * @since 1.0.0 + */ + public function getLanguage() : string + { + return $this->language; + } + /** * Set country * @@ -203,12 +215,34 @@ class ClientAttributeValue implements \JsonSerializable, ArrayableInterface $this->country = $country; } + /** + * Get country + * + * @return string + * + * @since 1.0.0 + */ + public function getCountry() : string + { + return $this->country; + } + /** * {@inheritdoc} */ public function toArray() : array { - return []; + return [ + 'id' => $this->id, + 'type' => $this->type, + 'valueInt' => $this->valueInt, + 'valueStr' => $this->valueStr, + 'valueDec' => $this->valueDec, + 'valueDat' => $this->valueDat, + 'isDefault' => $this->isDefault, + 'language' => $this->language, + 'country' => $this->country, + ]; } /** diff --git a/Models/ClientStatus.php b/Models/ClientStatus.php new file mode 100644 index 0000000..f8ccceb --- /dev/null +++ b/Models/ClientStatus.php @@ -0,0 +1,34 @@ +header->account = 1; + $request->setData('title', 'EN:1'); + $request->setData('language', ISO639x1Enum::_EN); + + $this->module->apiClientAttributeTypeCreate($request, $response); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientAttributeTypeL11nCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('title', 'DE:2'); + $request->setData('type', '1'); + $request->setData('language', ISO639x1Enum::_DE); + + $this->module->apiClientAttributeTypeL11nCreate($request, $response); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientAttributeValueIntCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('default', '1'); + $request->setData('attributetype', '1'); + $request->setData('type', AttributeValueType::_INT); + $request->setData('value', '1'); + $request->setData('language', ISO639x1Enum::_DE); + $request->setData('country', ISO3166TwoEnum::_DEU); + + $this->module->apiClientAttributeValueCreate($request, $response); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientAttributeValueStrCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('type', AttributeValueType::_STRING); + $request->setData('value', '1'); + $request->setData('language', ISO639x1Enum::_DE); + $request->setData('country', ISO3166TwoEnum::_DEU); + + $this->module->apiClientAttributeValueCreate($request, $response); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientAttributeValueFloatCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('type', AttributeValueType::_FLOAT); + $request->setData('value', '1.1'); + $request->setData('language', ISO639x1Enum::_DE); + $request->setData('country', ISO3166TwoEnum::_DEU); + + $this->module->apiClientAttributeValueCreate($request, $response); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientAttributeValueDatCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('type', AttributeValueType::_DATETIME); + $request->setData('value', '2020-08-02'); + $request->setData('language', ISO639x1Enum::_DE); + $request->setData('country', ISO3166TwoEnum::_DEU); + + $this->module->apiClientAttributeValueCreate($request, $response); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientAttributeCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('client', '1'); + $request->setData('value', '1'); + $request->setData('type', '1'); + + $this->module->apiClientAttributeCreate($request, $response); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientAttributeValueCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiClientAttributeValueCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientAttributeTypeCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiClientAttributeTypeCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientAttributeTypeL11nCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiClientAttributeTypeL11nCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientAttributeCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiClientAttributeCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } +} diff --git a/tests/Controller/Api/ApiControllerClientTrait.php b/tests/Controller/Api/ApiControllerClientTrait.php new file mode 100644 index 0000000..e6bc300 --- /dev/null +++ b/tests/Controller/Api/ApiControllerClientTrait.php @@ -0,0 +1,214 @@ +header->account = 1; + $request->setData('number', '123456'); + $request->setData('name1', 'Name1'); + $request->setData('name2', 'Name2'); + $request->setData('info', 'Info text'); + $request->setData('address', 'Address'); + $request->setData('postal', 'Postal'); + $request->setData('city', 'City'); + $request->setData('country', ISO3166TwoEnum::_USA); + + $this->module->apiClientCreate($request, $response); + + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientContactElementCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('account', '1'); // client id in this case + $request->setData('type', ContactType::EMAIL); + $request->setData('content', 'email@email.com'); + + $this->module->apiContactElementCreate($request, $response); + + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientContactElementCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiContactElementCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiClientCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientProfileImageCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + \copy(__DIR__ . '/m_icon.png', __DIR__ . '/m_icon_tmp.png'); + + $request->header->account = 1; + $request->setData('name', '123456 backend'); + $request->setData('client', 1); + $request->setData('type', 'backend_image'); + + TestUtils::setMember($request, 'files', [ + 'file1' => [ + 'name' => '123456.png', + 'type' => MimeType::M_PNG, + 'tmp_name' => __DIR__ . '/m_icon_tmp.png', + 'error' => \UPLOAD_ERR_OK, + 'size' => \filesize(__DIR__ . '/m_icon_tmp.png'), + ], + ]); + + $this->module->apiFileCreate($request, $response); + $file = $response->get('')['response']; + self::assertGreaterThan(0, \reset($file)->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientFileCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + \copy(__DIR__ . '/Test file.txt', __DIR__ . '/Test file_tmp.txt'); + + $request->header->account = 1; + $request->setData('name', 'test file backend'); + $request->setData('client', 1); + + TestUtils::setMember($request, 'files', [ + 'file1' => [ + 'name' => 'Test file.txt', + 'type' => MimeType::M_TXT, + 'tmp_name' => __DIR__ . '/Test file_tmp.txt', + 'error' => \UPLOAD_ERR_OK, + 'size' => \filesize(__DIR__ . '/Test file_tmp.txt'), + ], + ]); + + $this->module->apiFileCreate($request, $response); + $file = $response->get('')['response']; + self::assertGreaterThan(0, \reset($file)->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiClientNoteCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + + $MARKDOWN = "# Test Title\n\nThis is **some** text."; + + $request->setData('id', 1); + $request->setData('title', \trim(\strtok($MARKDOWN, "\n"), ' #')); + $request->setData('plain', \preg_replace('/^.+\n/', '', $MARKDOWN)); + + $this->module->apiNoteCreate($request, $response); + self::assertGreaterThan(0, $response->get('')['response']->getId()); + } + + /** + * @covers Modules\ClientManagement\Controller\ApiController + * @group module + */ + public function testApiFileCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiFileCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } +} diff --git a/tests/Controller/Api/Test file.txt b/tests/Controller/Api/Test file.txt new file mode 100644 index 0000000..bdf08de --- /dev/null +++ b/tests/Controller/Api/Test file.txt @@ -0,0 +1 @@ +test file \ No newline at end of file diff --git a/tests/Controller/Api/m_icon.png b/tests/Controller/Api/m_icon.png new file mode 100644 index 0000000..587d4f9 Binary files /dev/null and b/tests/Controller/Api/m_icon.png differ diff --git a/tests/Controller/ApiControllerTest.php b/tests/Controller/ApiControllerTest.php new file mode 100644 index 0000000..a191403 --- /dev/null +++ b/tests/Controller/ApiControllerTest.php @@ -0,0 +1,93 @@ +app = new class() extends ApplicationAbstract + { + protected string $appName = 'Api'; + }; + + $this->app->dbPool = $GLOBALS['dbpool']; + $this->app->orgId = 1; + $this->app->accountManager = new AccountManager($GLOBALS['session']); + $this->app->appSettings = new CoreSettings(); + $this->app->moduleManager = new ModuleManager($this->app, __DIR__ . '/../../../../Modules/'); + $this->app->dispatcher = new Dispatcher($this->app); + $this->app->eventManager = new EventManager($this->app->dispatcher); + $this->app->eventManager->importFromFile(__DIR__ . '/../../../../Web/Api/Hooks.php'); + $this->app->sessionManager = new HttpSession(36000); + + $account = new Account(); + TestUtils::setMember($account, 'id', 1); + + $permission = new AccountPermission(); + $permission->setUnit(1); + $permission->setApp('backend'); + $permission->setPermission( + PermissionType::READ + | PermissionType::CREATE + | PermissionType::MODIFY + | PermissionType::DELETE + | PermissionType::PERMISSION + ); + + $account->addPermission($permission); + + $this->app->accountManager->add($account); + $this->app->router = new WebRouter(); + + $this->module = $this->app->moduleManager->get('ClientManagement'); + + TestUtils::setMember($this->module, 'app', $this->app); + } + + use ApiControllerClientTrait; + use ApiControllerAttributeTrait; +} diff --git a/tests/Models/ClientAttributeTest.php b/tests/Models/ClientAttributeTest.php new file mode 100644 index 0000000..692deda --- /dev/null +++ b/tests/Models/ClientAttributeTest.php @@ -0,0 +1,62 @@ +attribute = new ClientAttribute(); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttribute + * @group module + */ + public function testDefault() : void + { + self::assertEquals(0, $this->attribute->getId()); + self::assertInstanceOf('\Modules\ClientManagement\Models\ClientAttributeType', $this->attribute->type); + self::assertInstanceOf('\Modules\ClientManagement\Models\ClientAttributeValue', $this->attribute->value); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttribute + * @group module + */ + public function testSerialize() : void + { + $serialized = $this->attribute->jsonSerialize(); + + self::assertEquals( + [ + 'id', + 'type', + 'value', + ], + \array_keys($serialized) + ); + } +} diff --git a/tests/Models/ClientAttributeTypeL11nTest.php b/tests/Models/ClientAttributeTypeL11nTest.php new file mode 100644 index 0000000..36b8f58 --- /dev/null +++ b/tests/Models/ClientAttributeTypeL11nTest.php @@ -0,0 +1,87 @@ +l11n = new ClientAttributeTypeL11n(); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeTypeL11n + * @group module + */ + public function testDefault() : void + { + self::assertEquals(0, $this->l11n->getId()); + self::assertEquals('', $this->l11n->title); + self::assertEquals(0, $this->l11n->type); + self::assertEquals(ISO639x1Enum::_EN, $this->l11n->getLanguage()); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeTypeL11n + * @group module + */ + public function testNameInputOutput() : void + { + $this->l11n->title = 'TestName'; + self::assertEquals('TestName', $this->l11n->title); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeTypeL11n + * @group module + */ + public function testLanguageInputOutput() : void + { + $this->l11n->setLanguage(ISO639x1Enum::_DE); + self::assertEquals(ISO639x1Enum::_DE, $this->l11n->getLanguage()); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeTypeL11n + * @group module + */ + public function testSerialize() : void + { + $this->l11n->title = 'Title'; + $this->l11n->type = 2; + $this->l11n->setLanguage(ISO639x1Enum::_DE); + + self::assertEquals( + [ + 'id' => 0, + 'title' => 'Title', + 'type' => 2, + 'language' => ISO639x1Enum::_DE, + ], + $this->l11n->jsonSerialize() + ); + } +} diff --git a/tests/Models/ClientAttributeTypeTest.php b/tests/Models/ClientAttributeTypeTest.php new file mode 100644 index 0000000..cec90c0 --- /dev/null +++ b/tests/Models/ClientAttributeTypeTest.php @@ -0,0 +1,83 @@ +type = new ClientAttributeType(); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeType + * @group module + */ + public function testDefault() : void + { + self::assertEquals(0, $this->type->getId()); + self::assertEquals('', $this->type->getL11n()); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeType + * @group module + */ + public function testL11nInputOutput() : void + { + $this->type->setL11n('Test'); + self::assertEquals('Test', $this->type->getL11n()); + + $this->type->setL11n(new ClientAttributeTypeL11n(0, 'NewTest')); + self::assertEquals('NewTest', $this->type->getL11n()); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeType + * @group module + */ + public function testSerialize() : void + { + $this->type->name = 'Title'; + $this->type->fields = 2; + $this->type->custom = true; + $this->type->validationPattern = '\d*'; + $this->type->isRequired = true; + + self::assertEquals( + [ + 'id' => 0, + 'name' => 'Title', + 'fields' => 2, + 'custom' => true, + 'validationPattern' => '\d*', + 'isRequired' => true, + ], + $this->type->jsonSerialize() + ); + } +} diff --git a/tests/Models/ClientAttributeValueTest.php b/tests/Models/ClientAttributeValueTest.php new file mode 100644 index 0000000..1692b3e --- /dev/null +++ b/tests/Models/ClientAttributeValueTest.php @@ -0,0 +1,133 @@ +value = new ClientAttributeValue(); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeValue + * @group module + */ + public function testDefault() : void + { + self::assertEquals(0, $this->value->getId()); + self::assertEquals(null, $this->value->getValue()); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeValue + * @group module + */ + public function testLanguageInputOutput() : void + { + $this->value->setLanguage(ISO639x1Enum::_DE); + self::assertEquals(ISO639x1Enum::_DE, $this->value->getLanguage()); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeValue + * @group module + */ + public function testCountryInputOutput() : void + { + $this->value->setCountry(ISO3166TwoEnum::_DEU); + self::assertEquals(ISO3166TwoEnum::_DEU, $this->value->getCountry()); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeValue + * @group module + */ + public function testValueIntInputOutput() : void + { + $this->value->setValue(1); + self::assertEquals(1, $this->value->getValue()); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeValue + * @group module + */ + public function testValueFloatInputOutput() : void + { + $this->value->setValue(1.1); + self::assertEquals(1.1, $this->value->getValue()); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeValue + * @group module + */ + public function testValueStringInputOutput() : void + { + $this->value->setValue('test'); + self::assertEquals('test', $this->value->getValue()); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeValue + * @group module + */ + public function testValueDateInputOutput() : void + { + $this->value->setValue($dat = new \DateTime('now')); + self::assertEquals($dat->format('Y-m-d'), $this->value->getValue()->format('Y-m-d')); + } + + /** + * @covers Modules\ClientManagement\Models\ClientAttributeValue + * @group module + */ + public function testSerialize() : void + { + $this->value->type = 1; + $this->value->setValue('test'); + $this->value->isDefault = true; + $this->value->setLanguage(ISO639x1Enum::_DE); + $this->value->setCountry(ISO3166TwoEnum::_DEU); + + self::assertEquals( + [ + 'id' => 0, + 'type' => 1, + 'valueInt' => null, + 'valueStr' => 'test', + 'valueDec' => null, + 'valueDat' => null, + 'isDefault' => true, + 'language' => ISO639x1Enum::_DE, + 'country' => ISO3166TwoEnum::_DEU, + ], + $this->value->jsonSerialize() + ); + } +} diff --git a/tests/Models/ClientTest.php b/tests/Models/ClientTest.php index f4165e8..111359a 100755 --- a/tests/Models/ClientTest.php +++ b/tests/Models/ClientTest.php @@ -1 +1,139 @@ -client = new Client(); + } + + /** + * @covers Modules\ClientManagement\Models\Client + * @group module + */ + public function testDefault() : void + { + self::assertEquals(0, $this->client->getId()); + self::assertEquals('', $this->client->number); + self::assertEquals('', $this->client->numberReverse); + self::assertEquals('', $this->client->info); + self::assertEquals(ClientStatus::ACTIVE, $this->client->getStatus()); + self::assertEquals(0, $this->client->getType()); + self::assertEquals([], $this->client->getNotes()); + self::assertEquals([], $this->client->getFiles()); + self::assertEquals([], $this->client->getAddresses()); + self::assertEquals([], $this->client->getContactElements()); + self::assertEquals([], $this->client->getFilesByType(0)); + self::assertEquals((new \DateTime('now'))->format('Y-m-d'), $this->client->createdAt->format('Y-m-d')); + self::assertInstanceOf('\Modules\Profile\Models\Profile', $this->client->profile); + self::assertInstanceOf('\Modules\Admin\Models\Address', $this->client->mainAddress); + self::assertInstanceOf('\Modules\Profile\Models\NullContactElement', $this->client->getMainContactElement(0)); + } + + /** + * @covers Modules\ClientManagement\Models\Client + * @group module + */ + public function testStatusInputOutput() : void + { + $this->client->setStatus(ClientStatus::INACTIVE); + self::assertEquals(ClientStatus::INACTIVE, $this->client->getStatus()); + } + + /** + * @covers Modules\ClientManagement\Models\Client + * @group module + */ + public function testTypeInputOutput() : void + { + $this->client->setType(2); + self::assertEquals(2, $this->client->getType()); + } + + /** + * @covers Modules\ClientManagement\Models\Client + * @group module + */ + public function testFileInputOutput() : void + { + $this->client->addFile($temp = new Media()); + self::assertCount(1, $this->client->getFiles()); + self::assertEquals([$temp], $this->client->getFilesByType()); + } + + /** + * @covers Modules\ClientManagement\Models\Client + * @group module + */ + public function testContactElementInputOutput() : void + { + $this->client->addContactElement($temp = new ContactElement()); + self::assertCount(1, $this->client->getContactElements()); + self::assertEquals($temp, $this->client->getMainContactElement(0)); + } + + /** + * @covers Modules\ClientManagement\Models\Client + * @group module + */ + public function testNoteInputOutput() : void + { + $this->client->addNote(new EditorDoc()); + self::assertCount(1, $this->client->getNotes()); + } + + /** + * @covers Modules\ClientManagement\Models\Client + * @group module + */ + public function testSerialize() : void + { + $this->client->number = '123456'; + $this->client->numberReverse = '654321'; + $this->client->setStatus(ClientStatus::INACTIVE); + $this->client->setType(2); + $this->client->info = 'Test info'; + + self::assertEquals( + [ + 'id' => 0, + 'number' => '123456', + 'numberReverse' => '654321', + 'status' => ClientStatus::INACTIVE, + 'type' => 2, + 'info' => 'Test info', + ], + $this->client->jsonSerialize() + ); + } +} diff --git a/tests/Models/NullClient.php b/tests/Models/NullClient.php deleted file mode 100644 index b2471d6..0000000 --- a/tests/Models/NullClient.php +++ /dev/null @@ -1,42 +0,0 @@ -getId()); - } -} diff --git a/tests/Models/NullClientAttribute.php b/tests/Models/NullClientAttribute.php deleted file mode 100644 index c9b3f88..0000000 --- a/tests/Models/NullClientAttribute.php +++ /dev/null @@ -1,42 +0,0 @@ -getId()); - } -} diff --git a/tests/Models/NullClientAttributeType.php b/tests/Models/NullClientAttributeType.php deleted file mode 100644 index b08973f..0000000 --- a/tests/Models/NullClientAttributeType.php +++ /dev/null @@ -1,42 +0,0 @@ -getId()); - } -} diff --git a/tests/Models/NullClientAttributeTypeL11n.php b/tests/Models/NullClientAttributeTypeL11n.php deleted file mode 100644 index 403cacc..0000000 --- a/tests/Models/NullClientAttributeTypeL11n.php +++ /dev/null @@ -1,42 +0,0 @@ -getId()); - } -} diff --git a/tests/Models/NullClientAttributeValue.php b/tests/Models/NullClientAttributeValue.php deleted file mode 100644 index 8bcc13d..0000000 --- a/tests/Models/NullClientAttributeValue.php +++ /dev/null @@ -1,42 +0,0 @@ -getId()); - } -}