From 633a0421369b242a4841ef538d99a91dabd9c84f Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Fri, 24 Apr 2026 14:36:40 +0200 Subject: [PATCH] Fixes --- src/new/config/reference.php | 2 +- src/new/fixtures/account.yml | 7 +- src/new/fixtures/contact.yml | 2 +- .../System/ContentEngineBundle/Api/Xml.php | 2 +- .../ApiBundle/System/VersionTest.php | 2 +- .../CollectLayouter/Api/SaveContactTest.php | 126 ++++++++++++++++++ src/new/tests/RefreshDatabaseTrait.php | 48 +++---- .../PSC/CollectLayouter/Api/SaveContact.php | 8 +- src/new/version.yaml | 5 +- 9 files changed, 170 insertions(+), 32 deletions(-) create mode 100644 src/new/tests/Plugins/Custom/PSC/CollectLayouter/Api/SaveContactTest.php diff --git a/src/new/config/reference.php b/src/new/config/reference.php index 848c5bec1..b8fa52801 100644 --- a/src/new/config/reference.php +++ b/src/new/config/reference.php @@ -2433,7 +2433,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param; * length?: scalar|Param|null, // Default: 5 * width?: scalar|Param|null, // Default: 130 * height?: scalar|Param|null, // Default: 50 - * font?: scalar|Param|null, // Default: "/data/www/new/vendor/gregwar/captcha-bundle/DependencyInjection/../Generator/Font/captcha.ttf" + * font?: scalar|Param|null, // Default: "/application/src/new/vendor/gregwar/captcha-bundle/DependencyInjection/../Generator/Font/captcha.ttf" * keep_value?: scalar|Param|null, // Default: false * charset?: scalar|Param|null, // Default: "abcdefhjkmnprstuvwxyz23456789" * as_file?: scalar|Param|null, // Default: false diff --git a/src/new/fixtures/account.yml b/src/new/fixtures/account.yml index 8bc619a80..eb5ff721f 100755 --- a/src/new/fixtures/account.yml +++ b/src/new/fixtures/account.yml @@ -3,4 +3,9 @@ PSC\Shop\EntityBundle\Entity\Account: title: No Account account_2: - title: Bestes von Hier - Bio BGmbH \ No newline at end of file + title: Bestes von Hier - Bio BGmbH + + account_3: + title: Admin Account + + diff --git a/src/new/fixtures/contact.yml b/src/new/fixtures/contact.yml index 05f8315b8..d5bba5229 100755 --- a/src/new/fixtures/contact.yml +++ b/src/new/fixtures/contact.yml @@ -12,7 +12,7 @@ PSC\Shop\EntityBundle\Entity\Contact: zip: "17506" street: "Musterstraße" house_number: "24b" - account: '@account_1' + account: '@account_3' contact_2: username: test@shop.de diff --git a/src/new/src/PSC/System/ContentEngineBundle/Api/Xml.php b/src/new/src/PSC/System/ContentEngineBundle/Api/Xml.php index ad0bfe65e..b2bddced3 100644 --- a/src/new/src/PSC/System/ContentEngineBundle/Api/Xml.php +++ b/src/new/src/PSC/System/ContentEngineBundle/Api/Xml.php @@ -36,7 +36,7 @@ class Xml extends AbstractController $engine->calc(); $output = new ContentOutput(); - $output->json = json_decode($engine->generateJson(), true); + $output->json = $engine->generateJson(); $output->xml = $engine->generateXML(true); $output->jsonGraph = json_decode($engine->getCalcGraph()->generateJsonGraph(), true); diff --git a/src/new/tests/PSC/Component/ApiBundle/System/VersionTest.php b/src/new/tests/PSC/Component/ApiBundle/System/VersionTest.php index 599c34e99..7950accc2 100755 --- a/src/new/tests/PSC/Component/ApiBundle/System/VersionTest.php +++ b/src/new/tests/PSC/Component/ApiBundle/System/VersionTest.php @@ -14,6 +14,6 @@ class VersionTest extends WebTestCase $this->assertResponseIsSuccessful(); $data = json_decode($client->getResponse()->getContent(), true); - $this->assertSame('2.3.5', $data['release']); + $this->assertSame('2.3.6', $data['release']); } } diff --git a/src/new/tests/Plugins/Custom/PSC/CollectLayouter/Api/SaveContactTest.php b/src/new/tests/Plugins/Custom/PSC/CollectLayouter/Api/SaveContactTest.php new file mode 100644 index 000000000..24260aaaa --- /dev/null +++ b/src/new/tests/Plugins/Custom/PSC/CollectLayouter/Api/SaveContactTest.php @@ -0,0 +1,126 @@ +get(ContactRepository::class); + $testUser = $userRepository->loadUserByUsername('admin@shop.de'); + $client->loginUser($testUser, 'api'); + + $client->jsonRequest( + 'PUT', + '/api/plugin/custom/psc/collectlayouter/savecontact/' . self::PRODUCT_UUID, + [ + 'data' => [ + ['name' => 'data[firstname][value]', 'value' => 'Max'], + ['name' => 'data[firstname][enable]', 'value' => '1'], + ], + ], + [], + ); + + $this->assertResponseIsSuccessful(); + $data = json_decode($client->getResponse()->getContent(), true); + self::assertTrue($data['success']); + } + + public function testSaveContactWithoutUserStillReturnsSuccess(): void + { + $client = static::createClient(); + + $client->jsonRequest( + 'PUT', + '/api/plugin/custom/psc/collectlayouter/savecontact/' . self::PRODUCT_UUID, + ['data' => []], + [], + ); + + $this->assertResponseIsSuccessful(); + $data = json_decode($client->getResponse()->getContent(), true); + self::assertTrue($data['success']); + } + + public function testSaveCollectForExistingContact(): void + { + $client = static::createClient(); + $userRepository = static::getContainer()->get(ContactRepository::class); + $adminUser = $userRepository->loadUserByUsername('admin@shop.de'); + $client->loginUser($adminUser, 'api'); + + $targetContact = $userRepository->loadUserByUsername('test@shop.de'); + + $client->jsonRequest( + 'PUT', + '/api/plugin/custom/psc/collectlayouter/savecontactcollect/' . self::PRODUCT_UUID . '/' + . $targetContact->getUuid(), + [ + 'data' => [ + ['name' => 'data[lastname][value]', 'value' => 'Mustermann'], + ['name' => 'data[lastname][enable]', 'value' => '1'], + ], + ], + [], + ); + + $this->assertResponseIsSuccessful(); + $data = json_decode($client->getResponse()->getContent(), true); + self::assertTrue($data['success']); + } + + public function testSaveNewContact(): void + { + $client = static::createClient(); + + $client->jsonRequest( + 'PUT', + '/api/plugin/custom/psc/collectlayouter/savenewcontact/' . self::PRODUCT_UUID, + [ + 'data' => [ + ['name' => 'data[firstname][value]', 'value' => 'Neuer'], + ['name' => 'data[firstname][enable]', 'value' => '1'], + ], + ], + [], + ); + + $this->assertResponseIsSuccessful(); + $data = json_decode($client->getResponse()->getContent(), true); + self::assertTrue($data['success']); + } + + public function testSaveNewContactWithLogin(): void + { + $client = static::createClient(); + $userRepository = static::getContainer()->get(ContactRepository::class); + $testUser = $userRepository->loadUserByUsername('admin@shop.de'); + $client->loginUser($testUser, 'api'); + + $client->jsonRequest( + 'PUT', + '/api/plugin/custom/psc/collectlayouter/savenewcontact/' . self::PRODUCT_UUID, + [ + 'data' => [ + ['name' => 'data[firstname][value]', 'value' => 'Neuer'], + ['name' => 'data[firstname][enable]', 'value' => '1'], + ], + ], + [], + ); + + $this->assertResponseIsSuccessful(); + $data = json_decode($client->getResponse()->getContent(), true); + self::assertTrue($data['success']); + } +} diff --git a/src/new/tests/RefreshDatabaseTrait.php b/src/new/tests/RefreshDatabaseTrait.php index 32bc320a8..cb37022df 100755 --- a/src/new/tests/RefreshDatabaseTrait.php +++ b/src/new/tests/RefreshDatabaseTrait.php @@ -14,6 +14,7 @@ use PSC\Shop\EntityBundle\Document\Country; use PSC\Shop\EntityBundle\Document\Instance; use PSC\Shop\EntityBundle\Document\Order; use PSC\Shop\EntityBundle\Document\Position; +use PSC\Shop\EntityBundle\Document\Product; use PSC\Shop\EntityBundle\Document\Shop; use PSC\Shop\MediaBundle\Document\Folder; use PSC\Shop\MediaBundle\Document\Media; @@ -79,34 +80,19 @@ trait RefreshDatabaseTrait 'namespace' => '\\Plugin\\Custom\\PSC\\FormBuilder\\Plugin', 'pluginId' => '19ff3fd21de9dbd7452fd0a67c928759', ]); + $bulk->insert([ + 'name' => 'Form Based Layouter', + 'installed' => true, + 'shouldBeDeInstalled' => false, + 'shouldBeInstalled' => false, + 'path' => 'Custom/PSC/CollectLayouter', + 'namespace' => '\\Plugin\\Custom\\PSC\\CollectLayouter\\Plugin', + 'pluginId' => '51db3f03e98a9db1de5cf5e19dfe955c', + ]); $doc->getClient()->getManager()->executeBulkWrite('psc_test.Plugin', $bulk); $doc->getSchemaManager()->dropDocumentCollection(Layout::class); - if (!$doc->getRepository(Plugin::class)->findOneBy(['pluginId' => '19ff3fd21de9dbd7452fd0a67c928758'])) { - $plugin = new Plugin(); - $plugin->setInstalled(true); - $plugin->setPluginId('19ff3fd21de9dbd7452fd0a67c928758'); - $plugin->setName('XML Kalkulations Produkt'); - $plugin->setNamespace('\Plugin\System\PSC\XmlCalc\Plugin'); - $plugin->setPath('System/PSC/XmlCalc'); - $doc->persist($plugin); - $doc->flush(); - $doc->clear(); - } - - if (!$doc->getRepository(Plugin::class)->findOneBy(['pluginId' => '19ff3fd21de9dbd7452fd0a67c928759'])) { - $plugin = new Plugin(); - $plugin->setInstalled(true); - $plugin->setPluginId('19ff3fd21de9dbd7452fd0a67c928759'); - $plugin->setName('FormBuilder'); - $plugin->setNamespace('\Plugin\Custom\PSC\FormBuilder\Plugin'); - $plugin->setPath('Custom/PSC/FormBuilder'); - $doc->persist($plugin); - $doc->flush(); - $doc->clear(); - } - $instance = new Instance(); $instance->setAppId('1'); $instance->setInvoiceNumberStart(1); @@ -213,6 +199,20 @@ trait RefreshDatabaseTrait $doc->flush(); $doc->clear(); + $product = $em->getRepository(\PSC\Shop\EntityBundle\Entity\Product::class)->findOneBy([ + 'uuid' => '01938686-0e4d-7da9-bae3-b2e1b1681f9f', + ]); + + $productDoc = $doc->getRepository(Product::class)->findOneBy([ + 'uid' => $product->getUid(), + ]); + + if (!$productDoc) { + $productDoc = new Product(); + $productDoc->setUid($product->getUid()); + $doc->persist($productDoc); + $doc->flush(); + } return $kernel; } } diff --git a/src/new/var/plugins/Custom/PSC/CollectLayouter/Api/SaveContact.php b/src/new/var/plugins/Custom/PSC/CollectLayouter/Api/SaveContact.php index c58a579b3..cde6f9370 100755 --- a/src/new/var/plugins/Custom/PSC/CollectLayouter/Api/SaveContact.php +++ b/src/new/var/plugins/Custom/PSC/CollectLayouter/Api/SaveContact.php @@ -10,6 +10,7 @@ use OpenApi\Attributes\Response; use OpenApi\Attributes\Tag; use Plugin\Custom\PSC\CollectLayouter\Dto\SaveContact\Input; use Plugin\Custom\PSC\CollectLayouter\Model\Setting; +use PSC\Shop\AccountBundle\Model\Account; use PSC\Shop\ContactBundle\Model\Role; use PSC\Shop\ContactBundle\Transformer\Model\Contact; use PSC\Shop\EntityBundle\Entity\Contact as PSCContact; @@ -124,12 +125,17 @@ class SaveContact extends AbstractController $contact->setLocked(false); $contact->addRole(new Role(id: 1)); $contact->addRole(new Role(id: 5)); + if ($user = $this->getUser()) { + $account = new Account(); + $account->setUid($this->getUser()->getAccount()->getUid()); + $contact->setAccount($account); + } $this->saveContactHelper->setSetting($setting); $this->saveContactHelper->setContact($contact); $this->saveContactHelper->setData($data); $this->saveContactHelper->saveData(); - return $this->json(['success' => true]); + return $this->json(['success' => true, 'account' => $contact->getAccount()->getUid()]); } } diff --git a/src/new/version.yaml b/src/new/version.yaml index 90a318f7c..120ba7007 100755 --- a/src/new/version.yaml +++ b/src/new/version.yaml @@ -1,11 +1,12 @@ info: - datum: 20.04.2026 + datum: 24.04.2026 release: 2.3.6 changelog: - version: 2.3.6 - datum: 20.04.2026 + datum: 24.04.2026 changes: + - "Form Based Layouter speichert jetzt die Firma vom angemeldeten Benutzer" - "Kalk kann jetzt mit $Vxxx_staffel_value$V umgehen. Mit staffelCalc=\"$Vauflage$V\" kann in der Option die Grundlage der Staffel aus der Papierdatenbank übergeben werden." - "Papierdatenbank Kommawerte" - version: 2.3.5