diff --git a/tests/Controller/Api/ApiBillControllerTrait.php b/tests/Controller/Api/ApiBillControllerTrait.php new file mode 100644 index 0000000..3f1169e --- /dev/null +++ b/tests/Controller/Api/ApiBillControllerTrait.php @@ -0,0 +1,136 @@ +header->account = 1; + + $request->setData('client', 1); + $request->setData('address', null); + $request->setData('type', 1); + $request->setData('status', null); // null = system settings, value = individual input + $request->setData('performancedate', DateTime::generateDateTime(new \DateTime('2020-01-01'), new \DateTime('now'))->format('Y-m-d H:i:s')); + $request->setData('sales_referral', null); // who these sales belong to + $request->setData('shipping_terms', 1); // e.g. incoterms + $request->setData('shipping_type', 1); + $request->setData('shipping_cost', null); + $request->setData('insurance_type', 1); + $request->setData('insurance_cost', null); // null = system settings, value = individual input + $request->setData('info', null); // null = system settings, value = individual input + $request->setData('currency', null); // null = system settings, value = individual input + $request->setData('payment', null); // null = system settings, value = individual input + $request->setData('payment_terms', null); // null = system settings, value = individual input + + $this->module->apiBillCreate($request, $response); + self::assertEquals('ok', $response->getData('')['status']); + self::assertGreaterThan(0, $response->getDataArray('')['response']->id); + } + + public function testBillElementCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + + $request->setData('bill', 1); + $request->setData('item', 1); + $request->setData('text', null); + $request->setData('quantity', 5); + $request->setData('tax', null); + + //$request->setData('discount_percentage', \mt_rand(5, 30)); + + $this->module->apiBillElementCreate($request, $response); + self::assertEquals('ok', $response->getData('')['status']); + self::assertGreaterThan(0, $response->getDataArray('')['response']->id); + } + + public function testBillArchiveCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + + $request->setData('bill', 1); + + $this->module->apiBillPdfArchiveCreate($request, $response); + self::assertEquals('ok', $response->getData('')['status']); + self::assertGreaterThan(0, $response->getDataArray('')['response']->id); + } + + public function testBillNoteCreate() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = \mt_rand(2, 5); + + $request->setData('id', 1); + $request->setData('title', 'Test note title'); + $request->setData('plain', 'Test content text'); + + $this->module->apiNoteCreate($request, $response); + self::assertEquals('ok', $response->getData('')['status']); + self::assertGreaterThan(0, $response->getDataArray('')['response']->id); + } + + /** + * @covers Modules\Billing\Controller\ApiController + * @group module + */ + public function testBillCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiBillCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } + + /** + * @covers Modules\Billing\Controller\ApiController + * @group module + */ + public function testBillElementCreateInvalidData() : void + { + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('invalid', '1'); + + $this->module->apiBillElementCreate($request, $response); + self::assertEquals(RequestStatusCode::R_400, $response->header->status); + } +} diff --git a/tests/Controller/Api/ApiPurchaseControllerTrait.php b/tests/Controller/Api/ApiPurchaseControllerTrait.php new file mode 100644 index 0000000..52781d1 --- /dev/null +++ b/tests/Controller/Api/ApiPurchaseControllerTrait.php @@ -0,0 +1,75 @@ +header->account = 1; + + \copy(__DIR__ . '/billing/' . $file, __DIR__ . '/temp/' . $file); + + $toUpload['file0'] = [ + 'name' => $file, + 'type' => \explode('.', $file)[1], + 'tmp_name' => __DIR__ . '/temp/' . $file, + 'error' => \UPLOAD_ERR_OK, + 'size' => \filesize(__DIR__ . '/temp/' . $file), + ]; + + TestUtils::setMember($request, 'files', $toUpload); + + $this->modulePurchase->apiSupplierBillUpload($request, $response); + self::assertEquals('ok', $response->getData('')['status']); + self::assertGreaterThan(0, $response->getDataArray('')['response']->id); + + if (\is_dir(__DIR__ . '/temp')) { + Directory::delete(__DIR__ . '/temp'); + } + } + } +} diff --git a/tests/Controller/Api/billing/Invoice # INV0041-1-text.pdf b/tests/Controller/Api/billing/Invoice # INV0041-1-text.pdf new file mode 100644 index 0000000..99506f7 Binary files /dev/null and b/tests/Controller/Api/billing/Invoice # INV0041-1-text.pdf differ diff --git a/tests/Controller/Api/billing/Invoice - INV0041-1-image.pdf b/tests/Controller/Api/billing/Invoice - INV0041-1-image.pdf new file mode 100644 index 0000000..10a3a94 Binary files /dev/null and b/tests/Controller/Api/billing/Invoice - INV0041-1-image.pdf differ diff --git a/tests/Controller/ApiControllerTest.php b/tests/Controller/ApiControllerTest.php index 341509c..7794356 100755 --- a/tests/Controller/ApiControllerTest.php +++ b/tests/Controller/ApiControllerTest.php @@ -16,6 +16,8 @@ namespace Modules\Billing\tests\Controller; use Model\CoreSettings; use Modules\Admin\Models\AccountPermission; +use Modules\Billing\tests\Controller\Api\ApiBillControllerTrait; +use Modules\Billing\tests\Controller\Api\ApiPurchaselControllerTrait; use phpOMS\Account\Account; use phpOMS\Account\AccountManager; use phpOMS\Account\PermissionType; @@ -23,14 +25,9 @@ use phpOMS\Application\ApplicationAbstract; use phpOMS\Dispatcher\Dispatcher; use phpOMS\Event\EventManager; use phpOMS\Localization\L11nManager; -use phpOMS\Message\Http\HttpRequest; -use phpOMS\Message\Http\HttpResponse; -use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Module\ModuleAbstract; use phpOMS\Module\ModuleManager; use phpOMS\Router\WebRouter; -use phpOMS\Uri\HttpUri; -use phpOMS\Utils\RnG\DateTime; use phpOMS\Utils\TestUtils; /** @@ -47,6 +44,11 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase */ protected ModuleAbstract $module; + /** + * @var \Modules\Billing\Controller\ApiController + */ + protected ModuleAbstract $modulePurchase; + /** * {@inheritdoc} */ @@ -86,192 +88,13 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase $this->app->accountManager->add($account); $this->app->router = new WebRouter(); - $this->module = $this->app->moduleManager->get('Billing'); + $this->module = $this->app->moduleManager->get('Billing', 'ApiBill'); + $this->modulePurchase = $this->app->moduleManager->get('Billing', 'ApiPurchase'); TestUtils::setMember($this->module, 'app', $this->app); + TestUtils::setMember($this->modulePurchase, 'app', $this->app); } - /** - * Tests bill, bill element and bill pdf archive create - * - * @covers Modules\Billing\Controller\ApiController - * @group module - */ - /* - public function testBillClientCreate() : void - { - $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); - - $request->header->account = 1; - - $request->setData('client', 1); - $request->setData('address', null); - $request->setData('type', 1); - $request->setData('status', null); // null = system settings, value = individual input - $request->setData('performancedate', DateTime::generateDateTime(new \DateTime('2015-01-01'), new \DateTime('now'))->format('Y-m-d H:i:s')); - $request->setData('sales_referral', null); // who these sales belong to - $request->setData('shipping_terms', 1); // e.g. incoterms - $request->setData('shipping_type', 1); - $request->setData('shipping_cost', null); - $request->setData('insurance_type', 1); - $request->setData('insurance_cost', null); // null = system settings, value = individual input - $request->setData('info', null); // null = system settings, value = individual input - $request->setData('currency', null); // null = system settings, value = individual input - $request->setData('payment', null); // null = system settings, value = individual input - $request->setData('payment_terms', null); // null = system settings, value = individual input - - $this->module->apiBillCreate($request, $response); - - $bId = $response->getDataArray('')['response']->id; - self::assertGreaterThan(0, $bId); - - for ($k = 0; $k < 10; ++$k) { - $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); - - $request->header->account = 1; - - $iId = \mt_rand(0, 10); - - $request->setData('bill', $bId); - $request->setData('item', $iId === 0 ? null : $iId); - - if ($iId === 0) { - // @todo: add text - } - - $request->setData('quantity', \mt_rand(1, 11)); - $request->setData('tax', null); - $request->setData('text', $iId === 0 ? 'Some test text' : null); - - // discounts - if (\mt_rand(1, 100) < 31) { - $request->setData('discount_percentage', \mt_rand(5, 30)); - } - - $this->module->apiBillElementCreate($request, $response); - self::assertGreaterThan(0, $response->getDataArray('')['response']->id); - } - - $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); - - $request->header->account = 1; - $request->setData('bill', $bId); - - $this->module->apiBillPdfArchiveCreate($request, $response); - - $result = $response->getData(''); - self::assertGreaterThan(0, $result === null ? -1 : $result['response']?->id); - } - */ - - /** - * Tests bill, bill element and bill pdf archive create - * - * @covers Modules\Billing\Controller\ApiController - * @group module - */ - /* - public function testBillSupplierCreate() : void - { - $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); - - $request->header->account = 1; - - $request->setData('supplier', 1); - $request->setData('address', null); - $request->setData('type', 1); - $request->setData('status', null); // null = system settings, value = individual input - $request->setData('performancedate', DateTime::generateDateTime(new \DateTime('2015-01-01'), new \DateTime('now'))->format('Y-m-d H:i:s')); - $request->setData('sales_referral', null); // who these sales belong to - $request->setData('shipping_terms', 1); // e.g. incoterms - $request->setData('shipping_type', 1); - $request->setData('shipping_cost', null); - $request->setData('insurance_type', 1); - $request->setData('insurance_cost', null); // null = system settings, value = individual input - $request->setData('info', null); // null = system settings, value = individual input - $request->setData('currency', null); // null = system settings, value = individual input - $request->setData('payment', null); // null = system settings, value = individual input - $request->setData('payment_terms', null); // null = system settings, value = individual input - - $this->module->apiBillCreate($request, $response); - - $bId = $response->getDataArray('')['response']->id; - self::assertGreaterThan(0, $bId); - - for ($k = 0; $k < 10; ++$k) { - $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); - - $request->header->account = 1; - - $iId = \mt_rand(0, 10); - - $request->setData('bill', $bId); - $request->setData('item', $iId === 0 ? null : $iId); - - if ($iId === 0) { - // @todo: add text - } - - $request->setData('quantity', \mt_rand(1, 11)); - $request->setData('tax', null); - $request->setData('text', $iId === 0 ? 'Some test text' : null); - - // discounts - if (\mt_rand(1, 100) < 31) { - $request->setData('discount_percentage', \mt_rand(5, 30)); - } - - $this->module->apiBillElementCreate($request, $response); - self::assertGreaterThan(0, $response->getDataArray('')['response']->id); - } - - $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); - - $request->header->account = 1; - $request->setData('bill', $bId); - - $this->module->apiBillPdfArchiveCreate($request, $response); - - $result = $response->getData(''); - self::assertGreaterThan(0, $result === null ? -1 : $result['response']?->id); - } - */ - - /** - * @covers Modules\Billing\Controller\ApiController - * @group module - */ - public function testBillCreateInvalidData() : void - { - $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); - - $request->header->account = 1; - $request->setData('invalid', '1'); - - $this->module->apiBillCreate($request, $response); - self::assertEquals(RequestStatusCode::R_400, $response->header->status); - } - - /** - * @covers Modules\Billing\Controller\ApiController - * @group module - */ - public function testBillElementCreateInvalidData() : void - { - $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); - - $request->header->account = 1; - $request->setData('invalid', '1'); - - $this->module->apiBillElementCreate($request, $response); - self::assertEquals(RequestStatusCode::R_400, $response->header->status); - } + use ApiBillControllerTrait; + use ApiPurchaselControllerTrait; }