mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-04-20 21:39:37 +00:00
Compare commits
10 commits
dc25397469
...
e2735823a0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e2735823a0 | ||
|
|
f3ad3c1ffe | ||
|
|
f215bd11cd | ||
|
|
dc480f755c | ||
|
|
f1d34bbc24 | ||
|
|
6665203f2a | ||
|
|
ce86863095 | ||
|
|
e2bad9e9da | ||
|
|
2cd2a481d9 | ||
|
|
78de2c5e03 |
74 changed files with 795 additions and 768 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -42,7 +42,7 @@ yarn-error.log
|
||||||
|
|
||||||
###> phpunit/phpunit ###
|
###> phpunit/phpunit ###
|
||||||
/phpunit.xml
|
/phpunit.xml
|
||||||
.phpunit.result.cache
|
/.phpunit.cache/
|
||||||
###< phpunit/phpunit ###
|
###< phpunit/phpunit ###
|
||||||
|
|
||||||
###> phpstan/phpstan ###
|
###> phpstan/phpstan ###
|
||||||
|
|
|
||||||
0
bin/phpunit
Executable file → Normal file
0
bin/phpunit
Executable file → Normal file
|
|
@ -105,7 +105,7 @@
|
||||||
"phpstan/phpstan-doctrine": "^2.0.1",
|
"phpstan/phpstan-doctrine": "^2.0.1",
|
||||||
"phpstan/phpstan-strict-rules": "^2.0.1",
|
"phpstan/phpstan-strict-rules": "^2.0.1",
|
||||||
"phpstan/phpstan-symfony": "^2.0.0",
|
"phpstan/phpstan-symfony": "^2.0.0",
|
||||||
"phpunit/phpunit": "^9.5",
|
"phpunit/phpunit": "^11.5.0",
|
||||||
"rector/rector": "^2.0.4",
|
"rector/rector": "^2.0.4",
|
||||||
"roave/security-advisories": "dev-latest",
|
"roave/security-advisories": "dev-latest",
|
||||||
"symfony/browser-kit": "7.3.*",
|
"symfony/browser-kit": "7.3.*",
|
||||||
|
|
|
||||||
653
composer.lock
generated
653
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1,36 +1,37 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!-- https://phpunit.readthedocs.io/en/latest/configuration.html -->
|
<!-- https://phpunit.readthedocs.io/en/latest/configuration.html -->
|
||||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
|
|
||||||
backupGlobals="false"
|
|
||||||
colors="true"
|
|
||||||
bootstrap="tests/bootstrap.php"
|
|
||||||
convertDeprecationsToExceptions="false"
|
|
||||||
>
|
|
||||||
<php>
|
|
||||||
<ini name="error_reporting" value="-1"/>
|
|
||||||
<server name="APP_ENV" value="test" force="true"/>
|
|
||||||
<server name="SHELL_VERBOSITY" value="-1"/>
|
|
||||||
<server name="SYMFONY_PHPUNIT_REMOVE" value=""/>
|
|
||||||
<server name="SYMFONY_PHPUNIT_VERSION" value="9.5"/>
|
|
||||||
<ini name="memory_limit" value="1G"/>
|
|
||||||
<ini name="display_errors" value="1"/>
|
|
||||||
</php>
|
|
||||||
<coverage processUncoveredFiles="true">
|
|
||||||
<include>
|
|
||||||
<directory suffix=".php">src</directory>
|
|
||||||
</include>
|
|
||||||
</coverage>
|
|
||||||
|
|
||||||
<testsuites>
|
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
|
||||||
<testsuite name="Project Test Suite">
|
colors="true"
|
||||||
<directory>tests</directory>
|
failOnDeprecation="true"
|
||||||
</testsuite>
|
failOnNotice="true"
|
||||||
</testsuites>
|
failOnWarning="true"
|
||||||
<extensions>
|
bootstrap="tests/bootstrap.php"
|
||||||
<extension class="DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension"/>
|
cacheDirectory=".phpunit.cache"
|
||||||
</extensions>
|
backupGlobals="false"
|
||||||
<listeners>
|
>
|
||||||
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener"/>
|
<php>
|
||||||
</listeners>
|
<ini name="display_errors" value="1" />
|
||||||
|
<ini name="error_reporting" value="-1"/>
|
||||||
|
<server name="APP_ENV" value="test" force="true"/>
|
||||||
|
<server name="SHELL_VERBOSITY" value="-1"/>
|
||||||
|
<ini name="memory_limit" value="1G"/>
|
||||||
|
<ini name="display_errors" value="1"/>
|
||||||
|
</php>
|
||||||
|
<coverage includeUncoveredFiles="true">
|
||||||
|
</coverage>
|
||||||
|
|
||||||
|
<testsuites>
|
||||||
|
<testsuite name="Project Test Suite">
|
||||||
|
<directory>tests</directory>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
|
<extensions>
|
||||||
|
<bootstrap class="DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension" />
|
||||||
|
<bootstrap class="Symfony\Bridge\PhpUnit\SymfonyExtension">
|
||||||
|
<parameter name="clock-mock-namespaces" value="App" />
|
||||||
|
<parameter name="dns-mock-namespaces" value="App" />
|
||||||
|
</bootstrap>
|
||||||
|
</extensions>
|
||||||
</phpunit>
|
</phpunit>
|
||||||
|
|
|
||||||
57
rector.php
57
rector.php
|
|
@ -7,6 +7,7 @@ use Rector\CodingStyle\Rector\FuncCall\CountArrayToEmptyArrayComparisonRector;
|
||||||
use Rector\Config\RectorConfig;
|
use Rector\Config\RectorConfig;
|
||||||
use Rector\Doctrine\Set\DoctrineSetList;
|
use Rector\Doctrine\Set\DoctrineSetList;
|
||||||
use Rector\PHPUnit\CodeQuality\Rector\Class_\PreferPHPUnitThisCallRector;
|
use Rector\PHPUnit\CodeQuality\Rector\Class_\PreferPHPUnitThisCallRector;
|
||||||
|
use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertEmptyNullableObjectToAssertInstanceofRector;
|
||||||
use Rector\PHPUnit\Set\PHPUnitSetList;
|
use Rector\PHPUnit\Set\PHPUnitSetList;
|
||||||
use Rector\Set\ValueObject\LevelSetList;
|
use Rector\Set\ValueObject\LevelSetList;
|
||||||
use Rector\Set\ValueObject\SetList;
|
use Rector\Set\ValueObject\SetList;
|
||||||
|
|
@ -16,6 +17,61 @@ use Rector\Symfony\CodeQuality\Rector\MethodCall\LiteralGetToRequestClassConstan
|
||||||
use Rector\Symfony\Set\SymfonySetList;
|
use Rector\Symfony\Set\SymfonySetList;
|
||||||
use Rector\TypeDeclaration\Rector\StmtsAwareInterface\DeclareStrictTypesRector;
|
use Rector\TypeDeclaration\Rector\StmtsAwareInterface\DeclareStrictTypesRector;
|
||||||
|
|
||||||
|
return RectorConfig::configure()
|
||||||
|
->withComposerBased(phpunit: true)
|
||||||
|
|
||||||
|
->withSymfonyContainerPhp(__DIR__ . '/tests/symfony-container.php')
|
||||||
|
->withSymfonyContainerXml(__DIR__ . '/var/cache/dev/App_KernelDevDebugContainer.xml')
|
||||||
|
|
||||||
|
->withImportNames(importShortClasses: false)
|
||||||
|
->withPaths([
|
||||||
|
__DIR__ . '/config',
|
||||||
|
__DIR__ . '/public',
|
||||||
|
__DIR__ . '/src',
|
||||||
|
__DIR__ . '/tests',
|
||||||
|
])
|
||||||
|
|
||||||
|
->withSets([
|
||||||
|
PHPUnitSetList::ANNOTATIONS_TO_ATTRIBUTES,
|
||||||
|
PHPUnitSetList::PHPUNIT_90,
|
||||||
|
PHPUnitSetList::PHPUNIT_110,
|
||||||
|
PHPUnitSetList::PHPUNIT_CODE_QUALITY,
|
||||||
|
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
|
->withRules([
|
||||||
|
DeclareStrictTypesRector::class
|
||||||
|
])
|
||||||
|
|
||||||
|
->withSkip([
|
||||||
|
//Leave our AssertNull tests alone
|
||||||
|
AssertEmptyNullableObjectToAssertInstanceofRector::class,
|
||||||
|
|
||||||
|
|
||||||
|
CountArrayToEmptyArrayComparisonRector::class,
|
||||||
|
//Leave our !== null checks alone
|
||||||
|
FlipTypeControlToUseExclusiveTypeRector::class,
|
||||||
|
//Leave our PartList TableAction alone
|
||||||
|
ActionSuffixRemoverRector::class,
|
||||||
|
//We declare event listeners via attributes, therefore no need to migrate them to subscribers
|
||||||
|
EventListenerToEventSubscriberRector::class,
|
||||||
|
PreferPHPUnitThisCallRector::class,
|
||||||
|
//Do not replace 'GET' with class constant,
|
||||||
|
LiteralGetToRequestClassConstantRector::class,
|
||||||
|
])
|
||||||
|
|
||||||
|
//Do not apply rules to Symfony own files
|
||||||
|
->withSkip([
|
||||||
|
__DIR__ . '/public/index.php',
|
||||||
|
__DIR__ . '/src/Kernel.php',
|
||||||
|
__DIR__ . '/config/preload.php',
|
||||||
|
__DIR__ . '/config/bundles.php',
|
||||||
|
])
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
/*
|
||||||
return static function (RectorConfig $rectorConfig): void {
|
return static function (RectorConfig $rectorConfig): void {
|
||||||
$rectorConfig->symfonyContainerXml(__DIR__ . '/var/cache/dev/App_KernelDevDebugContainer.xml');
|
$rectorConfig->symfonyContainerXml(__DIR__ . '/var/cache/dev/App_KernelDevDebugContainer.xml');
|
||||||
$rectorConfig->symfonyContainerPhp(__DIR__ . '/tests/symfony-container.php');
|
$rectorConfig->symfonyContainerPhp(__DIR__ . '/tests/symfony-container.php');
|
||||||
|
|
@ -79,3 +135,4 @@ return static function (RectorConfig $rectorConfig): void {
|
||||||
__DIR__ . '/config/bundles.php',
|
__DIR__ . '/config/bundles.php',
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Controller;
|
namespace App\Controller;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||||
use App\Settings\AppSettings;
|
use App\Settings\AppSettings;
|
||||||
use Jbtronics\SettingsBundle\Form\SettingsFormFactoryInterface;
|
use Jbtronics\SettingsBundle\Form\SettingsFormFactoryInterface;
|
||||||
use Jbtronics\SettingsBundle\Manager\SettingsManagerInterface;
|
use Jbtronics\SettingsBundle\Manager\SettingsManagerInterface;
|
||||||
|
|
@ -49,7 +50,7 @@ class SettingsController extends AbstractController
|
||||||
$builder = $this->settingsFormFactory->createSettingsFormBuilder($settings);
|
$builder = $this->settingsFormFactory->createSettingsFormBuilder($settings);
|
||||||
|
|
||||||
//Add a submit button to the form
|
//Add a submit button to the form
|
||||||
$builder->add('submit', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['label' => 'save']);
|
$builder->add('submit', SubmitType::class, ['label' => 'save']);
|
||||||
|
|
||||||
//Create the form
|
//Create the form
|
||||||
$form = $builder->getForm();
|
$form = $builder->getForm();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Services\InfoProviderSystem;
|
namespace App\Services\InfoProviderSystem;
|
||||||
|
|
||||||
use App\Entity\Parts\Manufacturer;
|
use App\Entity\Parts\Manufacturer;
|
||||||
|
|
@ -74,4 +76,4 @@ final class ExistingPartFinder
|
||||||
|
|
||||||
return $qb->getQuery()->getResult();
|
return $qb->getQuery()->getResult();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
*/
|
*/
|
||||||
namespace App\Twig;
|
namespace App\Twig;
|
||||||
|
|
||||||
|
use App\Settings\SettingsIcon;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use App\Services\LogSystem\EventCommentType;
|
use App\Services\LogSystem\EventCommentType;
|
||||||
use Jbtronics\SettingsBundle\Proxy\SettingsProxyInterface;
|
use Jbtronics\SettingsBundle\Proxy\SettingsProxyInterface;
|
||||||
|
|
@ -71,7 +72,7 @@ final class MiscExtension extends AbstractExtension
|
||||||
|
|
||||||
$reflection = new ReflectionClass($objectOrClass);
|
$reflection = new ReflectionClass($objectOrClass);
|
||||||
|
|
||||||
$attribute = $reflection->getAttributes(\App\Settings\SettingsIcon::class)[0] ?? null;
|
$attribute = $reflection->getAttributes(SettingsIcon::class)[0] ?? null;
|
||||||
|
|
||||||
return $attribute?->newInstance()->icon;
|
return $attribute?->newInstance()->icon;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
28
symfony.lock
28
symfony.lock
|
|
@ -29,15 +29,15 @@
|
||||||
"version": "1.11.99.4"
|
"version": "1.11.99.4"
|
||||||
},
|
},
|
||||||
"dama/doctrine-test-bundle": {
|
"dama/doctrine-test-bundle": {
|
||||||
"version": "8.0",
|
"version": "8.3",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes-contrib",
|
"repo": "github.com/symfony/recipes-contrib",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
"version": "7.2",
|
"version": "8.3",
|
||||||
"ref": "896306d79d4ee143af9eadf9b09fd34a8c391b70"
|
"ref": "dfc51177476fb39d014ed89944cde53dc3326d23"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"./config/packages/dama_doctrine_test_bundle.yaml"
|
"config/packages/dama_doctrine_test_bundle.yaml"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"doctrine/cache": {
|
"doctrine/cache": {
|
||||||
|
|
@ -309,15 +309,16 @@
|
||||||
"version": "0.12.4"
|
"version": "0.12.4"
|
||||||
},
|
},
|
||||||
"phpunit/phpunit": {
|
"phpunit/phpunit": {
|
||||||
"version": "9.6",
|
"version": "11.5",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes",
|
"repo": "github.com/symfony/recipes",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
"version": "9.6",
|
"version": "11.1",
|
||||||
"ref": "6a9341aa97d441627f8bd424ae85dc04c944f8b4"
|
"ref": "c6658a60fc9d594805370eacdf542c3d6b5c0869"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
".env.test",
|
".env.test",
|
||||||
|
"bin/phpunit",
|
||||||
"phpunit.xml.dist",
|
"phpunit.xml.dist",
|
||||||
"tests/bootstrap.php"
|
"tests/bootstrap.php"
|
||||||
]
|
]
|
||||||
|
|
@ -576,19 +577,14 @@
|
||||||
"version": "v5.3.8"
|
"version": "v5.3.8"
|
||||||
},
|
},
|
||||||
"symfony/phpunit-bridge": {
|
"symfony/phpunit-bridge": {
|
||||||
"version": "6.4",
|
"version": "7.3",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
"repo": "github.com/symfony/recipes",
|
"repo": "github.com/symfony/recipes",
|
||||||
"branch": "main",
|
"branch": "main",
|
||||||
"version": "6.3",
|
"version": "7.3",
|
||||||
"ref": "a411a0480041243d97382cac7984f7dce7813c08"
|
"ref": "dc13fec96bd527bd399c3c01f0aab915c67fd544"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": []
|
||||||
"./.env.test",
|
|
||||||
"./bin/phpunit",
|
|
||||||
"./phpunit.xml.dist",
|
|
||||||
"./tests/bootstrap.php"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"symfony/polyfill-ctype": {
|
"symfony/polyfill-ctype": {
|
||||||
"version": "v1.14.0"
|
"version": "v1.14.0"
|
||||||
|
|
|
||||||
|
|
@ -23,15 +23,14 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\API;
|
namespace App\Tests\API;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\UserSystem\User;
|
use App\Entity\UserSystem\User;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
class APIDocsAvailabilityTest extends WebTestCase
|
class APIDocsAvailabilityTest extends WebTestCase
|
||||||
{
|
{
|
||||||
/**
|
#[DataProvider('urlProvider')]
|
||||||
* @dataProvider urlProvider
|
|
||||||
*/
|
|
||||||
public function testDocAvailabilityForLoggedInUser(string $url): void
|
public function testDocAvailabilityForLoggedInUser(string $url): void
|
||||||
{
|
{
|
||||||
self::ensureKernelShutdown();
|
self::ensureKernelShutdown();
|
||||||
|
|
|
||||||
|
|
@ -22,20 +22,19 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests;
|
namespace App\Tests;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use Generator;
|
use Generator;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This test just ensures that different pages are available (do not throw an exception).
|
* This test just ensures that different pages are available (do not throw an exception).
|
||||||
*
|
|
||||||
* @group DB
|
|
||||||
* @group slow
|
|
||||||
*/
|
*/
|
||||||
|
#[Group('DB')]
|
||||||
|
#[Group('slow')]
|
||||||
class ApplicationAvailabilityFunctionalTest extends WebTestCase
|
class ApplicationAvailabilityFunctionalTest extends WebTestCase
|
||||||
{
|
{
|
||||||
/**
|
#[DataProvider('urlProvider')]
|
||||||
* @dataProvider urlProvider
|
|
||||||
*/
|
|
||||||
public function testPageIsSuccessful(string $url): void
|
public function testPageIsSuccessful(string $url): void
|
||||||
{
|
{
|
||||||
//We have localized routes
|
//We have localized routes
|
||||||
|
|
@ -54,7 +53,7 @@ class ApplicationAvailabilityFunctionalTest extends WebTestCase
|
||||||
$this->assertTrue($client->getResponse()->isSuccessful(), 'Request not successful. Status code is '.$client->getResponse()->getStatusCode() . ' for URL '.$url);
|
$this->assertTrue($client->getResponse()->isSuccessful(), 'Request not successful. Status code is '.$client->getResponse()->getStatusCode() . ' for URL '.$url);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function urlProvider(): ?Generator
|
public static function urlProvider(): ?Generator
|
||||||
{
|
{
|
||||||
//Homepage
|
//Homepage
|
||||||
yield ['/'];
|
yield ['/'];
|
||||||
|
|
|
||||||
|
|
@ -22,19 +22,19 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller\AdminPages;
|
namespace App\Tests\Controller\AdminPages;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
|
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
|
||||||
|
|
||||||
/**
|
#[Group('slow')]
|
||||||
* @group slow
|
#[Group('DB')]
|
||||||
* @group DB
|
abstract class AbstractAdminController extends WebTestCase
|
||||||
*/
|
|
||||||
abstract class AbstractAdminControllerTest extends WebTestCase
|
|
||||||
{
|
{
|
||||||
protected static string $base_path = 'not_valid';
|
protected static string $base_path = 'not_valid';
|
||||||
protected static string $entity_class = 'not valid';
|
protected static string $entity_class = 'not valid';
|
||||||
|
|
||||||
public function readDataProvider(): \Iterator
|
public static function readDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['noread', false];
|
yield ['noread', false];
|
||||||
yield ['anonymous', true];
|
yield ['anonymous', true];
|
||||||
|
|
@ -43,10 +43,10 @@ abstract class AbstractAdminControllerTest extends WebTestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider readDataProvider
|
|
||||||
* @group slow
|
|
||||||
* Tests if you can access the /new part which is used to list all entities. Checks if permissions are working
|
* Tests if you can access the /new part which is used to list all entities. Checks if permissions are working
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('readDataProvider')]
|
||||||
|
#[Group('slow')]
|
||||||
public function testListEntries(string $user, bool $read): void
|
public function testListEntries(string $user, bool $read): void
|
||||||
{
|
{
|
||||||
static::ensureKernelShutdown();
|
static::ensureKernelShutdown();
|
||||||
|
|
@ -72,10 +72,13 @@ abstract class AbstractAdminControllerTest extends WebTestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider readDataProvider
|
|
||||||
* @group slow
|
|
||||||
* Tests if it is possible to access a specific entity. Checks if permissions are working.
|
* Tests if it is possible to access a specific entity. Checks if permissions are working.
|
||||||
|
* @param string $user
|
||||||
|
* @param bool $read
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('readDataProvider')]
|
||||||
|
#[Group('slow')]
|
||||||
public function testReadEntity(string $user, bool $read): void
|
public function testReadEntity(string $user, bool $read): void
|
||||||
{
|
{
|
||||||
//Test read access
|
//Test read access
|
||||||
|
|
@ -96,7 +99,7 @@ abstract class AbstractAdminControllerTest extends WebTestCase
|
||||||
$this->assertSame($read, !$client->getResponse()->isForbidden(), 'Permission Checking not working!');
|
$this->assertSame($read, !$client->getResponse()->isForbidden(), 'Permission Checking not working!');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteDataProvider(): \Iterator
|
public static function deleteDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['noread', false];
|
yield ['noread', false];
|
||||||
yield ['anonymous', false];
|
yield ['anonymous', false];
|
||||||
|
|
@ -106,10 +109,9 @@ abstract class AbstractAdminControllerTest extends WebTestCase
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests if deleting an entity is working.
|
* Tests if deleting an entity is working.
|
||||||
*
|
|
||||||
* @group slow
|
|
||||||
* @dataProvider deleteDataProvider
|
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('deleteDataProvider')]
|
||||||
|
#[Group('slow')]
|
||||||
public function testDeleteEntity(string $user, bool $delete): void
|
public function testDeleteEntity(string $user, bool $delete): void
|
||||||
{
|
{
|
||||||
//Test read access
|
//Test read access
|
||||||
|
|
@ -22,13 +22,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller\AdminPages;
|
namespace App\Tests\Controller\AdminPages;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\Attachments\AttachmentType;
|
use App\Entity\Attachments\AttachmentType;
|
||||||
|
|
||||||
/**
|
#[Group('slow')]
|
||||||
* @group slow
|
#[Group('DB')]
|
||||||
* @group DB
|
class AttachmentTypeController extends AbstractAdminController
|
||||||
*/
|
|
||||||
class AttachmentTypeControllerTest extends AbstractAdminControllerTest
|
|
||||||
{
|
{
|
||||||
protected static string $base_path = '/en/attachment_type';
|
protected static string $base_path = '/en/attachment_type';
|
||||||
protected static string $entity_class = AttachmentType::class;
|
protected static string $entity_class = AttachmentType::class;
|
||||||
|
|
@ -22,13 +22,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller\AdminPages;
|
namespace App\Tests\Controller\AdminPages;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\Parts\Category;
|
use App\Entity\Parts\Category;
|
||||||
|
|
||||||
/**
|
#[Group('slow')]
|
||||||
* @group slow
|
#[Group('DB')]
|
||||||
* @group DB
|
class CategoryController extends AbstractAdminController
|
||||||
*/
|
|
||||||
class CategoryControllerTest extends AbstractAdminControllerTest
|
|
||||||
{
|
{
|
||||||
protected static string $base_path = '/en/category';
|
protected static string $base_path = '/en/category';
|
||||||
protected static string $entity_class = Category::class;
|
protected static string $entity_class = Category::class;
|
||||||
|
|
@ -22,13 +22,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller\AdminPages;
|
namespace App\Tests\Controller\AdminPages;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\Parts\Footprint;
|
use App\Entity\Parts\Footprint;
|
||||||
|
|
||||||
/**
|
#[Group('slow')]
|
||||||
* @group slow
|
#[Group('DB')]
|
||||||
* @group DB
|
class FootprintController extends AbstractAdminController
|
||||||
*/
|
|
||||||
class FootprintControllerTest extends AbstractAdminControllerTest
|
|
||||||
{
|
{
|
||||||
protected static string $base_path = '/en/footprint';
|
protected static string $base_path = '/en/footprint';
|
||||||
protected static string $entity_class = Footprint::class;
|
protected static string $entity_class = Footprint::class;
|
||||||
|
|
@ -41,20 +41,21 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller\AdminPages;
|
namespace App\Tests\Controller\AdminPages;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\LabelSystem\LabelProfile;
|
use App\Entity\LabelSystem\LabelProfile;
|
||||||
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
|
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
|
||||||
|
|
||||||
class LabelProfileControllerTest extends AbstractAdminControllerTest
|
class LabelProfileController extends AbstractAdminController
|
||||||
{
|
{
|
||||||
protected static string $base_path = '/en/label_profile';
|
protected static string $base_path = '/en/label_profile';
|
||||||
protected static string $entity_class = LabelProfile::class;
|
protected static string $entity_class = LabelProfile::class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests if deleting an entity is working.
|
* Tests if deleting an entity is working.
|
||||||
*
|
|
||||||
* @group slow
|
|
||||||
* @dataProvider deleteDataProvider
|
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('deleteDataProvider')]
|
||||||
|
#[Group('slow')]
|
||||||
public function testDeleteEntity(string $user, bool $delete): void
|
public function testDeleteEntity(string $user, bool $delete): void
|
||||||
{
|
{
|
||||||
//Test read access
|
//Test read access
|
||||||
|
|
@ -22,13 +22,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller\AdminPages;
|
namespace App\Tests\Controller\AdminPages;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\Parts\Manufacturer;
|
use App\Entity\Parts\Manufacturer;
|
||||||
|
|
||||||
/**
|
#[Group('slow')]
|
||||||
* @group slow
|
#[Group('DB')]
|
||||||
* @group DB
|
class ManufacturerController extends AbstractAdminController
|
||||||
*/
|
|
||||||
class ManufacturerControllerTest extends AbstractAdminControllerTest
|
|
||||||
{
|
{
|
||||||
protected static string $base_path = '/en/manufacturer';
|
protected static string $base_path = '/en/manufacturer';
|
||||||
protected static string $entity_class = Manufacturer::class;
|
protected static string $entity_class = Manufacturer::class;
|
||||||
|
|
@ -22,13 +22,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller\AdminPages;
|
namespace App\Tests\Controller\AdminPages;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\Parts\MeasurementUnit;
|
use App\Entity\Parts\MeasurementUnit;
|
||||||
|
|
||||||
/**
|
#[Group('slow')]
|
||||||
* @group slow
|
#[Group('DB')]
|
||||||
* @group DB
|
class MeasurementUnitController extends AbstractAdminController
|
||||||
*/
|
|
||||||
class MeasurementUnitControllerTest extends AbstractAdminControllerTest
|
|
||||||
{
|
{
|
||||||
protected static string $base_path = '/en/measurement_unit';
|
protected static string $base_path = '/en/measurement_unit';
|
||||||
protected static string $entity_class = MeasurementUnit::class;
|
protected static string $entity_class = MeasurementUnit::class;
|
||||||
|
|
@ -23,13 +23,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller\AdminPages;
|
namespace App\Tests\Controller\AdminPages;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\ProjectSystem\Project;
|
use App\Entity\ProjectSystem\Project;
|
||||||
|
|
||||||
/**
|
#[Group('slow')]
|
||||||
* @group slow
|
#[Group('DB')]
|
||||||
* @group DB
|
class ProjectController extends AbstractAdminController
|
||||||
*/
|
|
||||||
class ProjectControllerTest extends AbstractAdminControllerTest
|
|
||||||
{
|
{
|
||||||
protected static string $base_path = '/en/project';
|
protected static string $base_path = '/en/project';
|
||||||
protected static string $entity_class = Project::class;
|
protected static string $entity_class = Project::class;
|
||||||
|
|
@ -22,13 +22,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller\AdminPages;
|
namespace App\Tests\Controller\AdminPages;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\Parts\StorageLocation;
|
use App\Entity\Parts\StorageLocation;
|
||||||
|
|
||||||
/**
|
#[Group('slow')]
|
||||||
* @group slow
|
#[Group('DB')]
|
||||||
* @group DB
|
class StorelocationController extends AbstractAdminController
|
||||||
*/
|
|
||||||
class StorelocationControllerTest extends AbstractAdminControllerTest
|
|
||||||
{
|
{
|
||||||
protected static string $base_path = '/en/store_location';
|
protected static string $base_path = '/en/store_location';
|
||||||
protected static string $entity_class = StorageLocation::class;
|
protected static string $entity_class = StorageLocation::class;
|
||||||
|
|
@ -22,13 +22,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller\AdminPages;
|
namespace App\Tests\Controller\AdminPages;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\Parts\Supplier;
|
use App\Entity\Parts\Supplier;
|
||||||
|
|
||||||
/**
|
#[Group('slow')]
|
||||||
* @group slow
|
#[Group('DB')]
|
||||||
* @group DB
|
class SupplierController extends AbstractAdminController
|
||||||
*/
|
|
||||||
class SupplierControllerTest extends AbstractAdminControllerTest
|
|
||||||
{
|
{
|
||||||
protected static string $base_path = '/en/supplier';
|
protected static string $base_path = '/en/supplier';
|
||||||
protected static string $entity_class = Supplier::class;
|
protected static string $entity_class = Supplier::class;
|
||||||
|
|
@ -22,16 +22,17 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Controller;
|
namespace App\Tests\Controller;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
|
use PHPUnit\Framework\Attributes\Depends;
|
||||||
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
|
use Symfony\Bundle\FrameworkBundle\KernelBrowser;
|
||||||
use App\Entity\UserSystem\User;
|
use App\Entity\UserSystem\User;
|
||||||
use App\Repository\UserRepository;
|
use App\Repository\UserRepository;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
/**
|
#[Group('slow')]
|
||||||
* @group slow
|
#[Group('DB')]
|
||||||
* @group DB
|
|
||||||
*/
|
|
||||||
class RedirectControllerTest extends WebTestCase
|
class RedirectControllerTest extends WebTestCase
|
||||||
{
|
{
|
||||||
protected EntityManagerInterface $em;
|
protected EntityManagerInterface $em;
|
||||||
|
|
@ -50,7 +51,7 @@ class RedirectControllerTest extends WebTestCase
|
||||||
$this->userRepo = $this->em->getRepository(User::class);
|
$this->userRepo = $this->em->getRepository(User::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function urlMatchDataProvider(): \Iterator
|
public static function urlMatchDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['/', true];
|
yield ['/', true];
|
||||||
yield ['/part/2/info', true];
|
yield ['/part/2/info', true];
|
||||||
|
|
@ -64,10 +65,9 @@ class RedirectControllerTest extends WebTestCase
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test if a certain request to an url will be redirected.
|
* Test if a certain request to an url will be redirected.
|
||||||
*
|
|
||||||
* @dataProvider urlMatchDataProvider
|
|
||||||
* @group slow
|
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('urlMatchDataProvider')]
|
||||||
|
#[Group('slow')]
|
||||||
public function testUrlMatch($url, $expect_redirect): void
|
public function testUrlMatch($url, $expect_redirect): void
|
||||||
{
|
{
|
||||||
//$client = static::createClient();
|
//$client = static::createClient();
|
||||||
|
|
@ -79,7 +79,7 @@ class RedirectControllerTest extends WebTestCase
|
||||||
$this->assertSame($expect_redirect, $response->isRedirect());
|
$this->assertSame($expect_redirect, $response->isRedirect());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function urlAddLocaleDataProvider(): \Iterator
|
public static function urlAddLocaleDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
//User locale, original target, redirect target
|
//User locale, original target, redirect target
|
||||||
yield ['de', '/', '/de/'];
|
yield ['de', '/', '/de/'];
|
||||||
|
|
@ -97,11 +97,10 @@ class RedirectControllerTest extends WebTestCase
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test if the user is redirected to the localized version of a page, based on his settings.
|
* Test if the user is redirected to the localized version of a page, based on his settings.
|
||||||
*
|
|
||||||
* @dataProvider urlAddLocaleDataProvider
|
|
||||||
* @group slow
|
|
||||||
* @depends testUrlMatch
|
|
||||||
*/
|
*/
|
||||||
|
#[Depends('testUrlMatch')]
|
||||||
|
#[DataProvider('urlAddLocaleDataProvider')]
|
||||||
|
#[Group('slow')]
|
||||||
public function testAddLocale(?string $user_locale, string $input_path, string $redirect_path): void
|
public function testAddLocale(?string $user_locale, string $input_path, string $redirect_path): void
|
||||||
{
|
{
|
||||||
//Redirect path is absolute
|
//Redirect path is absolute
|
||||||
|
|
@ -121,10 +120,9 @@ class RedirectControllerTest extends WebTestCase
|
||||||
/**
|
/**
|
||||||
* Test if the user is redirected to the localized version of a page, based on his settings.
|
* Test if the user is redirected to the localized version of a page, based on his settings.
|
||||||
* We simulate the situation of a reverse proxy here, by adding a prefix to the path.
|
* We simulate the situation of a reverse proxy here, by adding a prefix to the path.
|
||||||
*
|
|
||||||
* @dataProvider urlAddLocaleDataProvider
|
|
||||||
* @group slow
|
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('urlAddLocaleDataProvider')]
|
||||||
|
#[Group('slow')]
|
||||||
public function testAddLocaleReverseProxy(?string $user_locale, string $input_path, string $redirect_path): void
|
public function testAddLocaleReverseProxy(?string $user_locale, string $input_path, string $redirect_path): void
|
||||||
{
|
{
|
||||||
//Input path remains unchanged, as this is what the server receives from the proxy
|
//Input path remains unchanged, as this is what the server receives from the proxy
|
||||||
|
|
@ -147,10 +145,9 @@ class RedirectControllerTest extends WebTestCase
|
||||||
/**
|
/**
|
||||||
* Test if the user is redirected to the localized version of a page, based on his settings.
|
* Test if the user is redirected to the localized version of a page, based on his settings.
|
||||||
* We simulate the situation of serving Part-DB in a subfolder here.
|
* We simulate the situation of serving Part-DB in a subfolder here.
|
||||||
*
|
|
||||||
* @dataProvider urlAddLocaleDataProvider
|
|
||||||
* @group slow
|
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('urlAddLocaleDataProvider')]
|
||||||
|
#[Group('slow')]
|
||||||
public function testAddLocaleSubfolder(?string $user_locale, string $input_path, string $redirect_path): void
|
public function testAddLocaleSubfolder(?string $user_locale, string $input_path, string $redirect_path): void
|
||||||
{
|
{
|
||||||
//Prefix our path with the proxy prefix
|
//Prefix our path with the proxy prefix
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
*/
|
*/
|
||||||
namespace App\Tests\DataTables\Filters\Constraints;
|
namespace App\Tests\DataTables\Filters\Constraints;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\DataTables\Filters\Constraints\FilterTrait;
|
use App\DataTables\Filters\Constraints\FilterTrait;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
|
@ -40,7 +41,7 @@ class FilterTraitTest extends TestCase
|
||||||
$this->assertFalse($this->useHaving);
|
$this->assertFalse($this->useHaving);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isAggregateFunctionStringDataProvider(): iterable
|
public static function isAggregateFunctionStringDataProvider(): iterable
|
||||||
{
|
{
|
||||||
yield [false, 'parts.test'];
|
yield [false, 'parts.test'];
|
||||||
yield [false, 'attachments.test'];
|
yield [false, 'attachments.test'];
|
||||||
|
|
@ -48,12 +49,10 @@ class FilterTraitTest extends TestCase
|
||||||
yield [true, 'MAX(attachments.value)'];
|
yield [true, 'MAX(attachments.value)'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('isAggregateFunctionStringDataProvider')]
|
||||||
* @dataProvider isAggregateFunctionStringDataProvider
|
|
||||||
*/
|
|
||||||
public function testIsAggregateFunctionString(bool $expected, string $input): void
|
public function testIsAggregateFunctionString(bool $expected, string $input): void
|
||||||
{
|
{
|
||||||
$this->assertEquals($expected, $this->isAggregateFunctionString($input));
|
$this->assertSame($expected, $this->isAggregateFunctionString($input));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,13 +41,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests;
|
namespace App\Tests;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
class DatatablesAvailabilityTest extends WebTestCase
|
class DatatablesAvailabilityTest extends WebTestCase
|
||||||
{
|
{
|
||||||
/**
|
#[DataProvider('urlProvider')]
|
||||||
* @dataProvider urlProvider
|
|
||||||
*/
|
|
||||||
public function testDataTable(string $url, ?array $ordering = null): void
|
public function testDataTable(string $url, ?array $ordering = null): void
|
||||||
{
|
{
|
||||||
//We have localized routes
|
//We have localized routes
|
||||||
|
|
@ -80,7 +79,7 @@ class DatatablesAvailabilityTest extends WebTestCase
|
||||||
$this->assertJson($client->getResponse()->getContent());
|
$this->assertJson($client->getResponse()->getContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function urlProvider(): ?\Generator
|
public static function urlProvider(): ?\Generator
|
||||||
{
|
{
|
||||||
//Part lists
|
//Part lists
|
||||||
yield ['/category/1/parts'];
|
yield ['/category/1/parts'];
|
||||||
|
|
|
||||||
|
|
@ -22,13 +22,14 @@ declare(strict_types=1);
|
||||||
*/
|
*/
|
||||||
namespace App\Tests\Doctrine;
|
namespace App\Tests\Doctrine;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Doctrine\Middleware\SQLiteRegexExtensionMiddlewareDriver;
|
use App\Doctrine\Middleware\SQLiteRegexExtensionMiddlewareDriver;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
class SQLiteRegexMiddlewareTest extends TestCase
|
class SQLiteRegexMiddlewareTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
public function regexpDataProvider(): \Generator
|
public static function regexpDataProvider(): \Generator
|
||||||
{
|
{
|
||||||
yield [1, 'a', 'a'];
|
yield [1, 'a', 'a'];
|
||||||
yield [0, 'a', 'b'];
|
yield [0, 'a', 'b'];
|
||||||
|
|
@ -41,15 +42,13 @@ class SQLiteRegexMiddlewareTest extends TestCase
|
||||||
yield [1, '^a\d+$', 'a123'];
|
yield [1, '^a\d+$', 'a123'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('regexpDataProvider')]
|
||||||
* @dataProvider regexpDataProvider
|
|
||||||
*/
|
|
||||||
public function testRegexp(int $expected, string $pattern, string $value): void
|
public function testRegexp(int $expected, string $pattern, string $value): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, SQLiteRegexExtensionMiddlewareDriver::regexp($pattern, $value));
|
$this->assertSame($expected, SQLiteRegexExtensionMiddlewareDriver::regexp($pattern, $value));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fieldDataProvider(): \Generator
|
public static function fieldDataProvider(): \Generator
|
||||||
{
|
{
|
||||||
|
|
||||||
// Null cases
|
// Null cases
|
||||||
|
|
@ -73,17 +72,13 @@ class SQLiteRegexMiddlewareTest extends TestCase
|
||||||
yield [6, 'c', ['b', 'a', 'b', 'a', 'b', 'c']];
|
yield [6, 'c', ['b', 'a', 'b', 'a', 'b', 'c']];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('fieldDataProvider')]
|
||||||
* @dataProvider fieldDataProvider
|
|
||||||
*/
|
|
||||||
public function testField(int $expected, string|int|null $value, array $array): void
|
public function testField(int $expected, string|int|null $value, array $array): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, SQLiteRegexExtensionMiddlewareDriver::field($value, ...$array));
|
$this->assertSame($expected, SQLiteRegexExtensionMiddlewareDriver::field($value, ...$array));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('fieldDataProvider')]
|
||||||
* @dataProvider fieldDataProvider
|
|
||||||
*/
|
|
||||||
public function testField2(int $expected, string|int|null $value, array $array): void
|
public function testField2(int $expected, string|int|null $value, array $array): void
|
||||||
{
|
{
|
||||||
//Should be the same as field, but with the array comma imploded
|
//Should be the same as field, but with the array comma imploded
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Entity\Attachments;
|
namespace App\Tests\Entity\Attachments;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
|
use PHPUnit\Framework\Attributes\Depends;
|
||||||
use App\Entity\Attachments\Attachment;
|
use App\Entity\Attachments\Attachment;
|
||||||
use App\Entity\Attachments\AttachmentType;
|
use App\Entity\Attachments\AttachmentType;
|
||||||
use App\Entity\Attachments\AttachmentTypeAttachment;
|
use App\Entity\Attachments\AttachmentTypeAttachment;
|
||||||
|
|
@ -73,7 +75,7 @@ class AttachmentTest extends TestCase
|
||||||
$this->assertEmpty($attachment->getFilename());
|
$this->assertEmpty($attachment->getFilename());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function subClassesDataProvider(): \Iterator
|
public static function subClassesDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield [AttachmentTypeAttachment::class, AttachmentType::class];
|
yield [AttachmentTypeAttachment::class, AttachmentType::class];
|
||||||
yield [CategoryAttachment::class, Category::class];
|
yield [CategoryAttachment::class, Category::class];
|
||||||
|
|
@ -89,9 +91,7 @@ class AttachmentTest extends TestCase
|
||||||
yield [UserAttachment::class, User::class];
|
yield [UserAttachment::class, User::class];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('subClassesDataProvider')]
|
||||||
* @dataProvider subClassesDataProvider
|
|
||||||
*/
|
|
||||||
public function testSetElement(string $attachment_class, string $allowed_class): void
|
public function testSetElement(string $attachment_class, string $allowed_class): void
|
||||||
{
|
{
|
||||||
/** @var Attachment $attachment */
|
/** @var Attachment $attachment */
|
||||||
|
|
@ -106,10 +106,9 @@ class AttachmentTest extends TestCase
|
||||||
/**
|
/**
|
||||||
* Test that all attachment subclasses like PartAttachment or similar returns an exception, when a not allowed
|
* Test that all attachment subclasses like PartAttachment or similar returns an exception, when a not allowed
|
||||||
* element is passed.
|
* element is passed.
|
||||||
*
|
|
||||||
* @dataProvider subClassesDataProvider
|
|
||||||
* @depends testSetElement
|
|
||||||
*/
|
*/
|
||||||
|
#[Depends('testSetElement')]
|
||||||
|
#[DataProvider('subClassesDataProvider')]
|
||||||
public function testSetElementExceptionOnSubClasses(string $attachment_class, string $allowed_class): void
|
public function testSetElementExceptionOnSubClasses(string $attachment_class, string $allowed_class): void
|
||||||
{
|
{
|
||||||
$this->expectException(InvalidArgumentException::class);
|
$this->expectException(InvalidArgumentException::class);
|
||||||
|
|
@ -135,9 +134,7 @@ class AttachmentTest extends TestCase
|
||||||
yield [null, 'test.txt', null, null];
|
yield [null, 'test.txt', null, null];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('extensionDataProvider')]
|
||||||
* @dataProvider extensionDataProvider
|
|
||||||
*/
|
|
||||||
public function testGetExtension(?string $internal_path, ?string $external_path, ?string $originalFilename, ?string $expected): void
|
public function testGetExtension(?string $internal_path, ?string $external_path, ?string $originalFilename, ?string $expected): void
|
||||||
{
|
{
|
||||||
$attachment = new PartAttachment();
|
$attachment = new PartAttachment();
|
||||||
|
|
@ -162,9 +159,7 @@ class AttachmentTest extends TestCase
|
||||||
yield ['%SECURE%/foo.txt/test', 'https://test.de/picture.jpeg', false];
|
yield ['%SECURE%/foo.txt/test', 'https://test.de/picture.jpeg', false];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('pictureDataProvider')]
|
||||||
* @dataProvider pictureDataProvider
|
|
||||||
*/
|
|
||||||
public function testIsPicture(?string $internal_path, ?string $external_path, bool $expected): void
|
public function testIsPicture(?string $internal_path, ?string $external_path, bool $expected): void
|
||||||
{
|
{
|
||||||
$attachment = new PartAttachment();
|
$attachment = new PartAttachment();
|
||||||
|
|
@ -184,9 +179,7 @@ class AttachmentTest extends TestCase
|
||||||
yield ['%FOOTPRINTS%/foo/bar.txt', true];
|
yield ['%FOOTPRINTS%/foo/bar.txt', true];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('builtinDataProvider')]
|
||||||
* @dataProvider builtinDataProvider
|
|
||||||
*/
|
|
||||||
public function testIsBuiltIn(?string $path, $expected): void
|
public function testIsBuiltIn(?string $path, $expected): void
|
||||||
{
|
{
|
||||||
$attachment = new PartAttachment();
|
$attachment = new PartAttachment();
|
||||||
|
|
@ -201,9 +194,7 @@ class AttachmentTest extends TestCase
|
||||||
yield ['https://foo.bar/test?txt=test', 'foo.bar'];
|
yield ['https://foo.bar/test?txt=test', 'foo.bar'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('hostDataProvider')]
|
||||||
* @dataProvider hostDataProvider
|
|
||||||
*/
|
|
||||||
public function testGetHost(?string $path, ?string $expected): void
|
public function testGetHost(?string $path, ?string $expected): void
|
||||||
{
|
{
|
||||||
$attachment = new PartAttachment();
|
$attachment = new PartAttachment();
|
||||||
|
|
@ -219,9 +210,7 @@ class AttachmentTest extends TestCase
|
||||||
yield [null, 'https://www.google.de/test.txt', null, null];
|
yield [null, 'https://www.google.de/test.txt', null, null];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('filenameProvider')]
|
||||||
* @dataProvider filenameProvider
|
|
||||||
*/
|
|
||||||
public function testGetFilename(?string $internal_path, ?string $external_path, ?string $original_filename, ?string $expected): void
|
public function testGetFilename(?string $internal_path, ?string $external_path, ?string $original_filename, ?string $expected): void
|
||||||
{
|
{
|
||||||
$attachment = new PartAttachment();
|
$attachment = new PartAttachment();
|
||||||
|
|
@ -242,7 +231,7 @@ class AttachmentTest extends TestCase
|
||||||
//Ensure that changing the external path does reset the internal one
|
//Ensure that changing the external path does reset the internal one
|
||||||
$attachment->setInternalPath('%MEDIA%/foo/bar.txt');
|
$attachment->setInternalPath('%MEDIA%/foo/bar.txt');
|
||||||
$attachment->setExternalPath('https://example.de');
|
$attachment->setExternalPath('https://example.de');
|
||||||
$this->assertSame(null, $attachment->getInternalPath());
|
$this->assertNull($attachment->getInternalPath());
|
||||||
|
|
||||||
//Ensure that setting the same value to the external path again doesn't reset the internal one
|
//Ensure that setting the same value to the external path again doesn't reset the internal one
|
||||||
$attachment->setExternalPath('https://google.de');
|
$attachment->setExternalPath('https://google.de');
|
||||||
|
|
|
||||||
|
|
@ -41,12 +41,13 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Entity\Parameters;
|
namespace App\Tests\Entity\Parameters;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Parameters\PartParameter;
|
use App\Entity\Parameters\PartParameter;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
class PartParameterTest extends TestCase
|
class PartParameterTest extends TestCase
|
||||||
{
|
{
|
||||||
public function valueWithUnitDataProvider(): \Iterator
|
public static function valueWithUnitDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['1', 1.0, ''];
|
yield ['1', 1.0, ''];
|
||||||
yield ['1 V', 1.0, 'V'];
|
yield ['1 V', 1.0, 'V'];
|
||||||
|
|
@ -54,7 +55,7 @@ class PartParameterTest extends TestCase
|
||||||
yield ['1.23 V', 1.23, 'V'];
|
yield ['1.23 V', 1.23, 'V'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function formattedValueDataProvider(): \Iterator
|
public static function formattedValueDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['Text Test', null, null, null, 'V', 'Text Test'];
|
yield ['Text Test', null, null, null, 'V', 'Text Test'];
|
||||||
yield ['10.23 V', null, 10.23, null, 'V', ''];
|
yield ['10.23 V', null, 10.23, null, 'V', ''];
|
||||||
|
|
@ -67,7 +68,7 @@ class PartParameterTest extends TestCase
|
||||||
yield ['10.23 V (9 V ... 11 V) [Test]', 9, 10.23, 11, 'V', 'Test'];
|
yield ['10.23 V (9 V ... 11 V) [Test]', 9, 10.23, 11, 'V', 'Test'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function formattedValueWithLatexDataProvider(): \Iterator
|
public static function formattedValueWithLatexDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['Text Test', null, null, null, 'V', 'Text Test'];
|
yield ['Text Test', null, null, null, 'V', 'Text Test'];
|
||||||
yield ['10.23 $\mathrm{V}$', null, 10.23, null, 'V', ''];
|
yield ['10.23 $\mathrm{V}$', null, 10.23, null, 'V', ''];
|
||||||
|
|
@ -80,9 +81,7 @@ class PartParameterTest extends TestCase
|
||||||
yield ['10.23 $\mathrm{V}$ (9 $\mathrm{V}$ ... 11 $\mathrm{V}$) [Test]', 9, 10.23, 11, 'V', 'Test'];
|
yield ['10.23 $\mathrm{V}$ (9 $\mathrm{V}$ ... 11 $\mathrm{V}$) [Test]', 9, 10.23, 11, 'V', 'Test'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('valueWithUnitDataProvider')]
|
||||||
* @dataProvider valueWithUnitDataProvider
|
|
||||||
*/
|
|
||||||
public function testGetValueMinWithUnit(string $expected, float $value, string $unit): void
|
public function testGetValueMinWithUnit(string $expected, float $value, string $unit): void
|
||||||
{
|
{
|
||||||
$param = new PartParameter();
|
$param = new PartParameter();
|
||||||
|
|
@ -91,9 +90,7 @@ class PartParameterTest extends TestCase
|
||||||
$this->assertSame($expected, $param->getValueMinWithUnit());
|
$this->assertSame($expected, $param->getValueMinWithUnit());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('valueWithUnitDataProvider')]
|
||||||
* @dataProvider valueWithUnitDataProvider
|
|
||||||
*/
|
|
||||||
public function testGetValueMaxWithUnit(string $expected, float $value, string $unit): void
|
public function testGetValueMaxWithUnit(string $expected, float $value, string $unit): void
|
||||||
{
|
{
|
||||||
$param = new PartParameter();
|
$param = new PartParameter();
|
||||||
|
|
@ -102,9 +99,7 @@ class PartParameterTest extends TestCase
|
||||||
$this->assertSame($expected, $param->getValueMaxWithUnit());
|
$this->assertSame($expected, $param->getValueMaxWithUnit());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('valueWithUnitDataProvider')]
|
||||||
* @dataProvider valueWithUnitDataProvider
|
|
||||||
*/
|
|
||||||
public function testGetValueTypicalWithUnit(string $expected, float $value, string $unit): void
|
public function testGetValueTypicalWithUnit(string $expected, float $value, string $unit): void
|
||||||
{
|
{
|
||||||
$param = new PartParameter();
|
$param = new PartParameter();
|
||||||
|
|
@ -114,12 +109,12 @@ class PartParameterTest extends TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider formattedValueDataProvider
|
|
||||||
*
|
*
|
||||||
* @param float $min
|
* @param float $min
|
||||||
* @param float $typical
|
* @param float $typical
|
||||||
* @param float $max
|
* @param float $max
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('formattedValueDataProvider')]
|
||||||
public function testGetFormattedValue(string $expected, ?float $min, ?float $typical, ?float $max, string $unit, string $text): void
|
public function testGetFormattedValue(string $expected, ?float $min, ?float $typical, ?float $max, string $unit, string $text): void
|
||||||
{
|
{
|
||||||
$param = new PartParameter();
|
$param = new PartParameter();
|
||||||
|
|
@ -132,12 +127,12 @@ class PartParameterTest extends TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider formattedValueWithLatexDataProvider
|
|
||||||
*
|
*
|
||||||
* @param float $min
|
* @param float $min
|
||||||
* @param float $typical
|
* @param float $typical
|
||||||
* @param float $max
|
* @param float $max
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('formattedValueWithLatexDataProvider')]
|
||||||
public function testGetFormattedValueWithLatex(string $expected, ?float $min, ?float $typical, ?float $max, string $unit, string $text): void
|
public function testGetFormattedValueWithLatex(string $expected, ?float $min, ?float $typical, ?float $max, string $unit, string $text): void
|
||||||
{
|
{
|
||||||
$param = new PartParameter();
|
$param = new PartParameter();
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ class PartTest extends TestCase
|
||||||
$lot = new PartLot();
|
$lot = new PartLot();
|
||||||
$part->addPartLot($lot);
|
$part->addPartLot($lot);
|
||||||
$this->assertSame($part, $lot->getPart());
|
$this->assertSame($part, $lot->getPart());
|
||||||
$this->assertSame(1, $part->getPartLots()->count());
|
$this->assertCount(1, $part->getPartLots());
|
||||||
|
|
||||||
//Remove element
|
//Remove element
|
||||||
$part->removePartLot($lot);
|
$part->removePartLot($lot);
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ class OrderdetailTest extends TestCase
|
||||||
$pricedetail = new Pricedetail();
|
$pricedetail = new Pricedetail();
|
||||||
$orderdetail->addPricedetail($pricedetail);
|
$orderdetail->addPricedetail($pricedetail);
|
||||||
$this->assertSame($orderdetail, $pricedetail->getOrderdetail());
|
$this->assertSame($orderdetail, $pricedetail->getOrderdetail());
|
||||||
$this->assertSame(1, $orderdetail->getPricedetails()->count());
|
$this->assertCount(1, $orderdetail->getPricedetails());
|
||||||
|
|
||||||
//After removal of the pricedetail, the orderdetail must be empty again
|
//After removal of the pricedetail, the orderdetail must be empty again
|
||||||
$orderdetail->removePricedetail($pricedetail);
|
$orderdetail->removePricedetail($pricedetail);
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ class ApiTokenTypeTest extends TestCase
|
||||||
|
|
||||||
public function testGetTypeFromToken(): void
|
public function testGetTypeFromToken(): void
|
||||||
{
|
{
|
||||||
$this->assertEquals(ApiTokenType::PERSONAL_ACCESS_TOKEN, ApiTokenType::getTypeFromToken('tcp_123'));
|
$this->assertSame(ApiTokenType::PERSONAL_ACCESS_TOKEN, ApiTokenType::getTypeFromToken('tcp_123'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetTypeFromTokenInvalid(): void
|
public function testGetTypeFromTokenInvalid(): void
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Entity\UserSystem;
|
namespace App\Tests\Entity\UserSystem;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
|
use PHPUnit\Framework\Attributes\RequiresPhpunit;
|
||||||
use App\Entity\UserSystem\User;
|
use App\Entity\UserSystem\User;
|
||||||
use App\Entity\UserSystem\WebauthnKey;
|
use App\Entity\UserSystem\WebauthnKey;
|
||||||
use Doctrine\Common\Collections\Collection;
|
use Doctrine\Common\Collections\Collection;
|
||||||
|
|
@ -45,16 +47,14 @@ class UserTest extends TestCase
|
||||||
$this->assertSame('John (@username)', $user->getFullName(true));
|
$this->assertSame('John (@username)', $user->getFullName(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function googleAuthenticatorEnabledDataProvider(): \Iterator
|
public static function googleAuthenticatorEnabledDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield [null, false];
|
yield [null, false];
|
||||||
yield ['', false];
|
yield ['', false];
|
||||||
yield ['SSSk38498', true];
|
yield ['SSSk38498', true];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('googleAuthenticatorEnabledDataProvider')]
|
||||||
* @dataProvider googleAuthenticatorEnabledDataProvider
|
|
||||||
*/
|
|
||||||
public function testIsGoogleAuthenticatorEnabled(?string $secret, bool $expected): void
|
public function testIsGoogleAuthenticatorEnabled(?string $secret, bool $expected): void
|
||||||
{
|
{
|
||||||
$user = new User();
|
$user = new User();
|
||||||
|
|
@ -62,9 +62,7 @@ class UserTest extends TestCase
|
||||||
$this->assertSame($expected, $user->isGoogleAuthenticatorEnabled());
|
$this->assertSame($expected, $user->isGoogleAuthenticatorEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
//#[RequiresPhpunit('8')]
|
||||||
* @requires PHPUnit 8
|
|
||||||
*/
|
|
||||||
public function testSetBackupCodes(): void
|
public function testSetBackupCodes(): void
|
||||||
{
|
{
|
||||||
$user = new User();
|
$user = new User();
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||||
*
|
*
|
||||||
|
|
@ -17,7 +20,6 @@
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace App\Tests\Exceptions;
|
namespace App\Tests\Exceptions;
|
||||||
|
|
||||||
use App\Exceptions\TwigModeException;
|
use App\Exceptions\TwigModeException;
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Helpers;
|
namespace App\Tests\Helpers;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Helpers\BBCodeToMarkdownConverter;
|
use App\Helpers\BBCodeToMarkdownConverter;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
|
@ -34,7 +35,7 @@ class BBCodeToMarkdownConverterTest extends TestCase
|
||||||
$this->converter = new BBCodeToMarkdownConverter();
|
$this->converter = new BBCodeToMarkdownConverter();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProvider(): \Iterator
|
public static function dataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['[b]Bold[/b]', '**Bold**'];
|
yield ['[b]Bold[/b]', '**Bold**'];
|
||||||
yield ['[i]Italic[/i]', '*Italic*'];
|
yield ['[i]Italic[/i]', '*Italic*'];
|
||||||
|
|
@ -46,11 +47,11 @@ class BBCodeToMarkdownConverterTest extends TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider dataProvider
|
|
||||||
*
|
*
|
||||||
* @param $bbcode
|
* @param $bbcode
|
||||||
* @param $expected
|
* @param $expected
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('dataProvider')]
|
||||||
public function testConvert($bbcode, $expected): void
|
public function testConvert($bbcode, $expected): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->converter->convert($bbcode));
|
$this->assertSame($expected, $this->converter->convert($bbcode));
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||||
*
|
*
|
||||||
|
|
@ -17,16 +20,16 @@
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace App\Tests\Helpers;
|
namespace App\Tests\Helpers;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Helpers\IPAnonymizer;
|
use App\Helpers\IPAnonymizer;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
class IPAnonymizerTest extends TestCase
|
class IPAnonymizerTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
public function anonymizeDataProvider(): \Generator
|
public static function anonymizeDataProvider(): \Generator
|
||||||
{
|
{
|
||||||
yield ['127.0.0.0', '127.0.0.23'];
|
yield ['127.0.0.0', '127.0.0.23'];
|
||||||
yield ['2001:db8:85a3::', '2001:0db8:85a3:0000:0000:8a2e:0370:7334'];
|
yield ['2001:db8:85a3::', '2001:0db8:85a3:0000:0000:8a2e:0370:7334'];
|
||||||
|
|
@ -34,9 +37,7 @@ class IPAnonymizerTest extends TestCase
|
||||||
yield ['fe80::', 'fe80::1fc4:15d8:78db:2319%enp4s0'];
|
yield ['fe80::', 'fe80::1fc4:15d8:78db:2319%enp4s0'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('anonymizeDataProvider')]
|
||||||
* @dataProvider anonymizeDataProvider
|
|
||||||
*/
|
|
||||||
public function testAnonymize(string $expected, string $input): void
|
public function testAnonymize(string $expected, string $input): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, IPAnonymizer::anonymize($input));
|
$this->assertSame($expected, IPAnonymizer::anonymize($input));
|
||||||
|
|
|
||||||
|
|
@ -33,9 +33,6 @@ use PHPUnit\Framework\TestCase;
|
||||||
class ProjectBuildRequestTest extends TestCase
|
class ProjectBuildRequestTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
/** @var MeasurementUnit $float_unit */
|
|
||||||
private MeasurementUnit $float_unit;
|
|
||||||
|
|
||||||
/** @var Project */
|
/** @var Project */
|
||||||
private Project $project1;
|
private Project $project1;
|
||||||
/** @var ProjectBOMEntry */
|
/** @var ProjectBOMEntry */
|
||||||
|
|
@ -49,30 +46,25 @@ class ProjectBuildRequestTest extends TestCase
|
||||||
private PartLot $lot1b;
|
private PartLot $lot1b;
|
||||||
private PartLot $lot2;
|
private PartLot $lot2;
|
||||||
|
|
||||||
/** @var Part */
|
|
||||||
private Part $part1;
|
|
||||||
/** @var Part */
|
|
||||||
private Part $part2;
|
|
||||||
|
|
||||||
|
|
||||||
public function setUp(): void
|
public function setUp(): void
|
||||||
{
|
{
|
||||||
$this->float_unit = new MeasurementUnit();
|
$float_unit = new MeasurementUnit();
|
||||||
$this->float_unit->setName('float');
|
$float_unit->setName('float');
|
||||||
$this->float_unit->setUnit('f');
|
$float_unit->setUnit('f');
|
||||||
$this->float_unit->setIsInteger(false);
|
$float_unit->setIsInteger(false);
|
||||||
$this->float_unit->setUseSIPrefix(true);
|
$float_unit->setUseSIPrefix(true);
|
||||||
|
|
||||||
//Setup some example parts and part lots
|
//Setup some example parts and part lots
|
||||||
$this->part1 = new Part();
|
$part1 = new Part();
|
||||||
$this->part1->setName('Part 1');
|
$part1->setName('Part 1');
|
||||||
$this->lot1a = new class extends PartLot {
|
$this->lot1a = new class extends PartLot {
|
||||||
public function getID(): ?int
|
public function getID(): ?int
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
$this->part1->addPartLot($this->lot1a);
|
$part1->addPartLot($this->lot1a);
|
||||||
$this->lot1a->setAmount(10);
|
$this->lot1a->setAmount(10);
|
||||||
$this->lot1a->setDescription('Lot 1a');
|
$this->lot1a->setDescription('Lot 1a');
|
||||||
|
|
||||||
|
|
@ -82,25 +74,25 @@ class ProjectBuildRequestTest extends TestCase
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
$this->part1->addPartLot($this->lot1b);
|
$part1->addPartLot($this->lot1b);
|
||||||
$this->lot1b->setAmount(20);
|
$this->lot1b->setAmount(20);
|
||||||
$this->lot1b->setDescription('Lot 1b');
|
$this->lot1b->setDescription('Lot 1b');
|
||||||
|
|
||||||
$this->part2 = new Part();
|
$part2 = new Part();
|
||||||
|
|
||||||
$this->part2->setName('Part 2');
|
$part2->setName('Part 2');
|
||||||
$this->part2->setPartUnit($this->float_unit);
|
$part2->setPartUnit($float_unit);
|
||||||
$this->lot2 = new PartLot();
|
$this->lot2 = new PartLot();
|
||||||
$this->part2->addPartLot($this->lot2);
|
$part2->addPartLot($this->lot2);
|
||||||
$this->lot2->setAmount(2.5);
|
$this->lot2->setAmount(2.5);
|
||||||
$this->lot2->setDescription('Lot 2');
|
$this->lot2->setDescription('Lot 2');
|
||||||
|
|
||||||
$this->bom_entry1a = new ProjectBOMEntry();
|
$this->bom_entry1a = new ProjectBOMEntry();
|
||||||
$this->bom_entry1a->setPart($this->part1);
|
$this->bom_entry1a->setPart($part1);
|
||||||
$this->bom_entry1a->setQuantity(2);
|
$this->bom_entry1a->setQuantity(2);
|
||||||
|
|
||||||
$this->bom_entry1b = new ProjectBOMEntry();
|
$this->bom_entry1b = new ProjectBOMEntry();
|
||||||
$this->bom_entry1b->setPart($this->part2);
|
$this->bom_entry1b->setPart($part2);
|
||||||
$this->bom_entry1b->setQuantity(1.5);
|
$this->bom_entry1b->setQuantity(1.5);
|
||||||
|
|
||||||
$this->bom_entry1c = new ProjectBOMEntry();
|
$this->bom_entry1c = new ProjectBOMEntry();
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||||
*
|
*
|
||||||
|
|
@ -17,7 +20,6 @@
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace App\Tests\Repository;
|
namespace App\Tests\Repository;
|
||||||
|
|
||||||
use App\Entity\LogSystem\AbstractLogEntry;
|
use App\Entity\LogSystem\AbstractLogEntry;
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
*/
|
*/
|
||||||
class NamedDBElementRepositoryTest extends WebTestCase
|
class NamedDBElementRepositoryTest extends WebTestCase
|
||||||
{
|
{
|
||||||
private $entityManager;
|
|
||||||
/**
|
/**
|
||||||
* @var StructuralDBElementRepository
|
* @var StructuralDBElementRepository
|
||||||
*/
|
*/
|
||||||
|
|
@ -42,11 +41,11 @@ class NamedDBElementRepositoryTest extends WebTestCase
|
||||||
{
|
{
|
||||||
$kernel = self::bootKernel();
|
$kernel = self::bootKernel();
|
||||||
|
|
||||||
$this->entityManager = $kernel->getContainer()
|
$entityManager = $kernel->getContainer()
|
||||||
->get('doctrine')
|
->get('doctrine')
|
||||||
->getManager();
|
->getManager();
|
||||||
|
|
||||||
$this->repo = $this->entityManager->getRepository(User::class);
|
$this->repo = $entityManager->getRepository(User::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetGenericNodeTree(): void
|
public function testGetGenericNodeTree(): void
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
*/
|
*/
|
||||||
class StructuralDBElementRepositoryTest extends WebTestCase
|
class StructuralDBElementRepositoryTest extends WebTestCase
|
||||||
{
|
{
|
||||||
private $entityManager;
|
|
||||||
/**
|
/**
|
||||||
* @var StructuralDBElementRepository
|
* @var StructuralDBElementRepository
|
||||||
*/
|
*/
|
||||||
|
|
@ -42,11 +41,11 @@ class StructuralDBElementRepositoryTest extends WebTestCase
|
||||||
{
|
{
|
||||||
$kernel = self::bootKernel();
|
$kernel = self::bootKernel();
|
||||||
|
|
||||||
$this->entityManager = $kernel->getContainer()
|
$entityManager = $kernel->getContainer()
|
||||||
->get('doctrine')
|
->get('doctrine')
|
||||||
->getManager();
|
->getManager();
|
||||||
|
|
||||||
$this->repo = $this->entityManager->getRepository(AttachmentType::class);
|
$this->repo = $entityManager->getRepository(AttachmentType::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testFindRootNodes(): void
|
public function testFindRootNodes(): void
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
class UserRepositoryTest extends WebTestCase
|
class UserRepositoryTest extends WebTestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
private $entityManager;
|
|
||||||
/**
|
/**
|
||||||
* @var UserRepository
|
* @var UserRepository
|
||||||
*/
|
*/
|
||||||
|
|
@ -40,11 +39,11 @@ class UserRepositoryTest extends WebTestCase
|
||||||
{
|
{
|
||||||
$kernel = self::bootKernel();
|
$kernel = self::bootKernel();
|
||||||
|
|
||||||
$this->entityManager = $kernel->getContainer()
|
$entityManager = $kernel->getContainer()
|
||||||
->get('doctrine')
|
->get('doctrine')
|
||||||
->getManager();
|
->getManager();
|
||||||
|
|
||||||
$this->repo = $this->entityManager->getRepository(User::class);
|
$this->repo = $entityManager->getRepository(User::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
*/
|
*/
|
||||||
namespace App\Tests\Serializer;
|
namespace App\Tests\Serializer;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\Parts\Category;
|
use App\Entity\Parts\Category;
|
||||||
use App\Serializer\StructuralElementDenormalizer;
|
use App\Serializer\StructuralElementDenormalizer;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
@ -53,9 +54,7 @@ class StructuralElementDenormalizerTest extends WebTestCase
|
||||||
$this->assertTrue($this->service->supportsDenormalization(['name' => 'Test'], Category::class, 'json', ['groups' => ['import'], 'partdb_import' => true]));
|
$this->assertTrue($this->service->supportsDenormalization(['name' => 'Test'], Category::class, 'json', ['groups' => ['import'], 'partdb_import' => true]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[Group('DB')]
|
||||||
* @group DB
|
|
||||||
*/
|
|
||||||
public function testDenormalize(): void
|
public function testDenormalize(): void
|
||||||
{
|
{
|
||||||
//Check that we retrieve DB elements via the name
|
//Check that we retrieve DB elements via the name
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\Attachments;
|
namespace App\Tests\Services\Attachments;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Services\Formatters\AmountFormatter;
|
use App\Services\Formatters\AmountFormatter;
|
||||||
use App\Services\Attachments\AttachmentPathResolver;
|
use App\Services\Attachments\AttachmentPathResolver;
|
||||||
use const DIRECTORY_SEPARATOR;
|
use const DIRECTORY_SEPARATOR;
|
||||||
|
|
@ -69,19 +70,19 @@ class AttachmentPathResolverTest extends WebTestCase
|
||||||
$this->assertNull($this->service->parameterToAbsolutePath('/./this/one/too'));
|
$this->assertNull($this->service->parameterToAbsolutePath('/./this/one/too'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function placeholderDataProvider(): \Iterator
|
public static function placeholderDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
//We need to do initialization (again), as dataprovider is called before setUp()
|
//We need to do initialization (again), as dataprovider is called before setUp()
|
||||||
self::bootKernel();
|
self::bootKernel();
|
||||||
$this->projectDir_orig = realpath(self::$kernel->getProjectDir());
|
$projectDir_orig = realpath(self::$kernel->getProjectDir());
|
||||||
$this->projectDir = str_replace('\\', '/', $this->projectDir_orig);
|
$projectDir = str_replace('\\', '/', $projectDir_orig);
|
||||||
$this->media_path = $this->projectDir.'/public/media';
|
$media_path = $projectDir.'/public/media';
|
||||||
$this->footprint_path = $this->projectDir.'/public/img/footprints';
|
$footprint_path = $projectDir.'/public/img/footprints';
|
||||||
yield ['%FOOTPRINTS%/test/test.jpg', $this->footprint_path.'/test/test.jpg'];
|
yield ['%FOOTPRINTS%/test/test.jpg', $footprint_path.'/test/test.jpg'];
|
||||||
yield ['%FOOTPRINTS%/test/', $this->footprint_path.'/test/'];
|
yield ['%FOOTPRINTS%/test/', $footprint_path.'/test/'];
|
||||||
yield ['%MEDIA%/test', $this->media_path.'/test'];
|
yield ['%MEDIA%/test', $media_path.'/test'];
|
||||||
yield ['%MEDIA%', $this->media_path];
|
yield ['%MEDIA%', $media_path];
|
||||||
yield ['%FOOTPRINTS%', $this->footprint_path];
|
yield ['%FOOTPRINTS%', $footprint_path];
|
||||||
//Footprints 3D are disabled
|
//Footprints 3D are disabled
|
||||||
yield ['%FOOTPRINTS_3D%', null];
|
yield ['%FOOTPRINTS_3D%', null];
|
||||||
//Check that invalid pathes return null
|
//Check that invalid pathes return null
|
||||||
|
|
@ -98,65 +99,59 @@ class AttachmentPathResolverTest extends WebTestCase
|
||||||
yield ['%FOOTPRINTS%/0\..\test', null];
|
yield ['%FOOTPRINTS%/0\..\test', null];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function realPathDataProvider(): \Iterator
|
public static function realPathDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
//We need to do initialization (again), as dataprovider is called before setUp()
|
//We need to do initialization (again), as dataprovider is called before setUp()
|
||||||
self::bootKernel();
|
self::bootKernel();
|
||||||
$this->projectDir_orig = realpath(self::$kernel->getProjectDir());
|
$projectDir_orig = realpath(self::$kernel->getProjectDir());
|
||||||
$this->projectDir = str_replace('\\', '/', $this->projectDir_orig);
|
$projectDir = str_replace('\\', '/', $projectDir_orig);
|
||||||
$this->media_path = $this->projectDir.'/public/media';
|
$media_path = $projectDir.'/public/media';
|
||||||
$this->footprint_path = $this->projectDir.'/public/img/footprints';
|
$footprint_path = $projectDir.'/public/img/footprints';
|
||||||
yield [$this->media_path.'/test/img.jpg', '%MEDIA%/test/img.jpg'];
|
yield [$media_path.'/test/img.jpg', '%MEDIA%/test/img.jpg'];
|
||||||
yield [$this->media_path.'/test/img.jpg', '%BASE%/data/media/test/img.jpg', true];
|
yield [$media_path.'/test/img.jpg', '%BASE%/data/media/test/img.jpg', true];
|
||||||
yield [$this->footprint_path.'/foo.jpg', '%FOOTPRINTS%/foo.jpg'];
|
yield [$footprint_path.'/foo.jpg', '%FOOTPRINTS%/foo.jpg'];
|
||||||
yield [$this->footprint_path.'/foo.jpg', '%FOOTPRINTS%/foo.jpg', true];
|
yield [$footprint_path.'/foo.jpg', '%FOOTPRINTS%/foo.jpg', true];
|
||||||
//Every kind of absolute path, that is not based with our placeholder dirs must be invald
|
//Every kind of absolute path, that is not based with our placeholder dirs must be invald
|
||||||
yield ['/etc/passwd', null];
|
yield ['/etc/passwd', null];
|
||||||
yield ['C:\\not\\existing.txt', null];
|
yield ['C:\\not\\existing.txt', null];
|
||||||
//More than one placeholder is not allowed
|
//More than one placeholder is not allowed
|
||||||
yield [$this->footprint_path.'/test/'.$this->footprint_path, null];
|
yield [$footprint_path.'/test/'.$footprint_path, null];
|
||||||
//Path must begin with path
|
//Path must begin with path
|
||||||
yield ['/not/root'.$this->footprint_path, null];
|
yield ['/not/root'.$footprint_path, null];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('placeholderDataProvider')]
|
||||||
* @dataProvider placeholderDataProvider
|
|
||||||
*/
|
|
||||||
public function testPlaceholderToRealPath($param, $expected): void
|
public function testPlaceholderToRealPath($param, $expected): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->placeholderToRealPath($param));
|
$this->assertSame($expected, $this->service->placeholderToRealPath($param));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('realPathDataProvider')]
|
||||||
* @dataProvider realPathDataProvider
|
|
||||||
*/
|
|
||||||
public function testRealPathToPlaceholder($param, $expected, $old_method = false): void
|
public function testRealPathToPlaceholder($param, $expected, $old_method = false): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->realPathToPlaceholder($param, $old_method));
|
$this->assertSame($expected, $this->service->realPathToPlaceholder($param, $old_method));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function germanFootprintPathdDataProvider(): ?\Generator
|
public static function germanFootprintPathdDataProvider(): ?\Generator
|
||||||
{
|
{
|
||||||
self::bootKernel();
|
self::bootKernel();
|
||||||
$this->projectDir_orig = realpath(self::$kernel->getProjectDir());
|
$projectDir_orig = realpath(self::$kernel->getProjectDir());
|
||||||
$this->projectDir = str_replace('\\', '/', $this->projectDir_orig);
|
$projectDir = str_replace('\\', '/', $projectDir_orig);
|
||||||
$this->footprint_path = $this->projectDir.'/public/img/footprints';
|
$footprint_path = $projectDir.'/public/img/footprints';
|
||||||
|
|
||||||
yield [$this->footprint_path. '/Active/Diodes/THT/DIODE_P600.png', '%FOOTPRINTS%/Aktiv/Dioden/Bedrahtet/DIODE_P600.png'];
|
yield [$footprint_path. '/Active/Diodes/THT/DIODE_P600.png', '%FOOTPRINTS%/Aktiv/Dioden/Bedrahtet/DIODE_P600.png'];
|
||||||
yield [$this->footprint_path . '/Passive/Resistors/THT/Carbon/RESISTOR-CARBON_0207.png', '%FOOTPRINTS%/Passiv/Widerstaende/Bedrahtet/Kohleschicht/WIDERSTAND-KOHLE_0207.png'];
|
yield [$footprint_path . '/Passive/Resistors/THT/Carbon/RESISTOR-CARBON_0207.png', '%FOOTPRINTS%/Passiv/Widerstaende/Bedrahtet/Kohleschicht/WIDERSTAND-KOHLE_0207.png'];
|
||||||
yield [$this->footprint_path . '/Optics/LEDs/THT/LED-GREEN_3MM.png', '%FOOTPRINTS%/Optik/LEDs/Bedrahtet/LED-GRUEN_3MM.png'];
|
yield [$footprint_path . '/Optics/LEDs/THT/LED-GREEN_3MM.png', '%FOOTPRINTS%/Optik/LEDs/Bedrahtet/LED-GRUEN_3MM.png'];
|
||||||
yield [$this->footprint_path . '/Passive/Capacitors/TrimmerCapacitors/TRIMMER_CAPACITOR-RED_TZ03F.png', '%FOOTPRINTS%/Passiv/Kondensatoren/Trimmkondensatoren/TRIMMKONDENSATOR-ROT_TZ03F.png'];
|
yield [$footprint_path . '/Passive/Capacitors/TrimmerCapacitors/TRIMMER_CAPACITOR-RED_TZ03F.png', '%FOOTPRINTS%/Passiv/Kondensatoren/Trimmkondensatoren/TRIMMKONDENSATOR-ROT_TZ03F.png'];
|
||||||
yield [$this->footprint_path . '/Active/ICs/TO/IC_TO126.png', '%FOOTPRINTS%/Aktiv/ICs/TO/IC_TO126.png'];
|
yield [$footprint_path . '/Active/ICs/TO/IC_TO126.png', '%FOOTPRINTS%/Aktiv/ICs/TO/IC_TO126.png'];
|
||||||
yield [$this->footprint_path . '/Electromechanics/Switches_Buttons/RotarySwitches/ROTARY_SWITCH_DIP10.png', '%FOOTPRINTS%/Elektromechanik/Schalter_Taster/Drehschalter/DREHSCHALTER_DIP10.png'];
|
yield [$footprint_path . '/Electromechanics/Switches_Buttons/RotarySwitches/ROTARY_SWITCH_DIP10.png', '%FOOTPRINTS%/Elektromechanik/Schalter_Taster/Drehschalter/DREHSCHALTER_DIP10.png'];
|
||||||
yield [$this->footprint_path . '/Electromechanics/Connectors/DINConnectors/SOCKET_DIN_MAB_4.png', '%FOOTPRINTS%/Elektromechanik/Verbinder/Rundsteckverbinder/BUCHSE_DIN_MAB_4.png'];
|
yield [$footprint_path . '/Electromechanics/Connectors/DINConnectors/SOCKET_DIN_MAB_4.png', '%FOOTPRINTS%/Elektromechanik/Verbinder/Rundsteckverbinder/BUCHSE_DIN_MAB_4.png'];
|
||||||
|
|
||||||
//Leave english pathes untouched
|
//Leave english pathes untouched
|
||||||
yield [$this->footprint_path . '/Passive/Capacitors/CAPACITOR_CTS_A_15MM.png', '%FOOTPRINTS%/Passive/Capacitors/CAPACITOR_CTS_A_15MM.png'];
|
yield [$footprint_path . '/Passive/Capacitors/CAPACITOR_CTS_A_15MM.png', '%FOOTPRINTS%/Passive/Capacitors/CAPACITOR_CTS_A_15MM.png'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('germanFootprintPathdDataProvider')]
|
||||||
* @dataProvider germanFootprintPathdDataProvider
|
|
||||||
*/
|
|
||||||
public function testConversionOfGermanFootprintPaths(string $expected, string $input): void
|
public function testConversionOfGermanFootprintPaths(string $expected, string $input): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->placeholderToRealPath($input));
|
$this->assertSame($expected, $this->service->placeholderToRealPath($input));
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\Attachments;
|
namespace App\Tests\Services\Attachments;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Services\Attachments\AttachmentURLGenerator;
|
use App\Services\Attachments\AttachmentURLGenerator;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
|
|
@ -38,7 +39,7 @@ class AttachmentURLGeneratorTest extends WebTestCase
|
||||||
self::$service = self::getContainer()->get(AttachmentURLGenerator::class);
|
self::$service = self::getContainer()->get(AttachmentURLGenerator::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProvider(): \Iterator
|
public static function dataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['/public/test.jpg', 'test.jpg'];
|
yield ['/public/test.jpg', 'test.jpg'];
|
||||||
yield ['/public/folder/test.jpg', 'folder/test.jpg'];
|
yield ['/public/folder/test.jpg', 'folder/test.jpg'];
|
||||||
|
|
@ -48,11 +49,11 @@ class AttachmentURLGeneratorTest extends WebTestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider dataProvider
|
|
||||||
*
|
*
|
||||||
* @param $input
|
* @param $input
|
||||||
* @param $expected
|
* @param $expected
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('dataProvider')]
|
||||||
public function testTestabsolutePathToAssetPath($input, $expected): void
|
public function testTestabsolutePathToAssetPath($input, $expected): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, static::$service->absolutePathToAssetPath($input, static::PUBLIC_DIR));
|
$this->assertSame($expected, static::$service->absolutePathToAssetPath($input, static::PUBLIC_DIR));
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\Attachments;
|
namespace App\Tests\Services\Attachments;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Services\Attachments\BuiltinAttachmentsFinder;
|
use App\Services\Attachments\BuiltinAttachmentsFinder;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
|
|
@ -43,7 +44,7 @@ class BuiltinAttachmentsFinderTest extends WebTestCase
|
||||||
self::$service = self::getContainer()->get(BuiltinAttachmentsFinder::class);
|
self::$service = self::getContainer()->get(BuiltinAttachmentsFinder::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProvider(): \Iterator
|
public static function dataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
//No value should return empty array
|
//No value should return empty array
|
||||||
yield ['', [], []];
|
yield ['', [], []];
|
||||||
|
|
@ -54,9 +55,7 @@ class BuiltinAttachmentsFinderTest extends WebTestCase
|
||||||
yield ['.txt', [], ['%FOOTPRINTS_3D%/hallo.txt']];
|
yield ['.txt', [], ['%FOOTPRINTS_3D%/hallo.txt']];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('dataProvider')]
|
||||||
* @dataProvider dataProvider
|
|
||||||
*/
|
|
||||||
public function testFind($keyword, $options, $expected): void
|
public function testFind($keyword, $options, $expected): void
|
||||||
{
|
{
|
||||||
$value = static::$service->find($keyword, $options, static::$mock_list);
|
$value = static::$service->find($keyword, $options, static::$mock_list);
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\Attachments;
|
namespace App\Tests\Services\Attachments;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Services\Attachments\FileTypeFilterTools;
|
use App\Services\Attachments\FileTypeFilterTools;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
|
|
@ -35,7 +36,7 @@ class FileTypeFilterToolsTest extends WebTestCase
|
||||||
self::$service = self::getContainer()->get(FileTypeFilterTools::class);
|
self::$service = self::getContainer()->get(FileTypeFilterTools::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateDataProvider(): \Iterator
|
public static function validateDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['', true];
|
yield ['', true];
|
||||||
//Empty string is valid
|
//Empty string is valid
|
||||||
|
|
@ -54,7 +55,7 @@ class FileTypeFilterToolsTest extends WebTestCase
|
||||||
yield ['.png .jpg .gif', false];
|
yield ['.png .jpg .gif', false];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function normalizeDataProvider(): \Iterator
|
public static function normalizeDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['', ''];
|
yield ['', ''];
|
||||||
yield ['.jpeg,.png,.gif', '.jpeg,.png,.gif'];
|
yield ['.jpeg,.png,.gif', '.jpeg,.png,.gif'];
|
||||||
|
|
@ -68,7 +69,7 @@ class FileTypeFilterToolsTest extends WebTestCase
|
||||||
yield ['png, .gif, .png,', '.png,.gif'];
|
yield ['png, .gif, .png,', '.png,.gif'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function extensionAllowedDataProvider(): \Iterator
|
public static function extensionAllowedDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['', 'txt', true];
|
yield ['', 'txt', true];
|
||||||
yield ['', 'everything_should_match', true];
|
yield ['', 'everything_should_match', true];
|
||||||
|
|
@ -85,25 +86,20 @@ class FileTypeFilterToolsTest extends WebTestCase
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the validateFilterString method.
|
* Test the validateFilterString method.
|
||||||
*
|
|
||||||
* @dataProvider validateDataProvider
|
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('validateDataProvider')]
|
||||||
public function testValidateFilterString(string $filter, bool $expected): void
|
public function testValidateFilterString(string $filter, bool $expected): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, self::$service->validateFilterString($filter));
|
$this->assertSame($expected, self::$service->validateFilterString($filter));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('normalizeDataProvider')]
|
||||||
* @dataProvider normalizeDataProvider
|
|
||||||
*/
|
|
||||||
public function testNormalizeFilterString(string $filter, string $expected): void
|
public function testNormalizeFilterString(string $filter, string $expected): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, self::$service->normalizeFilterString($filter));
|
$this->assertSame($expected, self::$service->normalizeFilterString($filter));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('extensionAllowedDataProvider')]
|
||||||
* @dataProvider extensionAllowedDataProvider
|
|
||||||
*/
|
|
||||||
public function testIsExtensionAllowed(string $filter, string $extension, bool $expected): void
|
public function testIsExtensionAllowed(string $filter, string $extension, bool $expected): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, self::$service->isExtensionAllowed($filter, $extension));
|
$this->assertSame($expected, self::$service->isExtensionAllowed($filter, $extension));
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,9 @@ class PartMergerTest extends KernelTestCase
|
||||||
//But the new lots, should be assigned to the target part and contain the same info
|
//But the new lots, should be assigned to the target part and contain the same info
|
||||||
$clone3 = $merged->getPartLots()->get(2);
|
$clone3 = $merged->getPartLots()->get(2);
|
||||||
$clone4 = $merged->getPartLots()->get(3);
|
$clone4 = $merged->getPartLots()->get(3);
|
||||||
|
$this->assertInstanceOf(PartLot::class, $clone3);
|
||||||
$this->assertSame($merged, $clone3->getPart());
|
$this->assertSame($merged, $clone3->getPart());
|
||||||
|
$this->assertInstanceOf(PartLot::class, $clone4);
|
||||||
$this->assertSame($merged, $clone4->getPart());
|
$this->assertSame($merged, $clone4->getPart());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\ImportExportSystem;
|
namespace App\Tests\Services\ImportExportSystem;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Attachments\AttachmentContainingDBElement;
|
use App\Entity\Attachments\AttachmentContainingDBElement;
|
||||||
use App\Entity\Attachments\AttachmentType;
|
use App\Entity\Attachments\AttachmentType;
|
||||||
use App\Entity\LabelSystem\LabelProfile;
|
use App\Entity\LabelSystem\LabelProfile;
|
||||||
|
|
@ -35,9 +37,7 @@ use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
use Symfony\Component\Validator\ConstraintViolation;
|
use Symfony\Component\Validator\ConstraintViolation;
|
||||||
use Symfony\Component\Validator\ConstraintViolationListInterface;
|
use Symfony\Component\Validator\ConstraintViolationListInterface;
|
||||||
|
|
||||||
/**
|
#[Group('DB')]
|
||||||
* @group DB
|
|
||||||
*/
|
|
||||||
class EntityImporterTest extends WebTestCase
|
class EntityImporterTest extends WebTestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
|
@ -174,7 +174,7 @@ EOT;
|
||||||
$this->assertSame($longName, $errors[0]['entity']->getName());
|
$this->assertSame($longName, $errors[0]['entity']->getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function formatDataProvider(): \Iterator
|
public static function formatDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['csv', 'csv'];
|
yield ['csv', 'csv'];
|
||||||
yield ['csv', 'CSV'];
|
yield ['csv', 'CSV'];
|
||||||
|
|
@ -184,9 +184,7 @@ EOT;
|
||||||
yield ['yaml', 'YAML'];
|
yield ['yaml', 'YAML'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('formatDataProvider')]
|
||||||
* @dataProvider formatDataProvider
|
|
||||||
*/
|
|
||||||
public function testDetermineFormat(string $expected, string $extension): void
|
public function testDetermineFormat(string $expected, string $extension): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->determineFormat($extension));
|
$this->assertSame($expected, $this->service->determineFormat($extension));
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
*/
|
*/
|
||||||
namespace App\Tests\Services\InfoProviderSystem\DTOs;
|
namespace App\Tests\Services\InfoProviderSystem\DTOs;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Services\InfoProviderSystem\DTOs\FileDTO;
|
use App\Services\InfoProviderSystem\DTOs\FileDTO;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
|
@ -40,9 +41,7 @@ class FileDTOTest extends TestCase
|
||||||
yield ["test%7Cse", "test|se"];
|
yield ["test%7Cse", "test|se"];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('escapingDataProvider')]
|
||||||
* @dataProvider escapingDataProvider
|
|
||||||
*/
|
|
||||||
public function testURLEscaping(string $expected, string $input): void
|
public function testURLEscaping(string $expected, string $input): void
|
||||||
{
|
{
|
||||||
$fileDTO = new FileDTO( $input);
|
$fileDTO = new FileDTO( $input);
|
||||||
|
|
|
||||||
|
|
@ -22,13 +22,14 @@ declare(strict_types=1);
|
||||||
*/
|
*/
|
||||||
namespace App\Tests\Services\InfoProviderSystem\DTOs;
|
namespace App\Tests\Services\InfoProviderSystem\DTOs;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Services\InfoProviderSystem\DTOs\ParameterDTO;
|
use App\Services\InfoProviderSystem\DTOs\ParameterDTO;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
class ParameterDTOTest extends TestCase
|
class ParameterDTOTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
public function parseValueFieldDataProvider(): \Generator
|
public static function parseValueFieldDataProvider(): \Generator
|
||||||
{
|
{
|
||||||
//Text value
|
//Text value
|
||||||
yield [
|
yield [
|
||||||
|
|
@ -131,7 +132,7 @@ class ParameterDTOTest extends TestCase
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function parseValueIncludingUnitDataProvider(): \Generator
|
public static function parseValueIncludingUnitDataProvider(): \Generator
|
||||||
{
|
{
|
||||||
//Text value
|
//Text value
|
||||||
yield [
|
yield [
|
||||||
|
|
@ -234,18 +235,18 @@ class ParameterDTOTest extends TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider parseValueFieldDataProvider
|
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('parseValueFieldDataProvider')]
|
||||||
public function testParseValueField(ParameterDTO $expected, string $name, string|float $value, ?string $unit = null, ?string $symbol = null, ?string $group = null)
|
public function testParseValueField(ParameterDTO $expected, string $name, string|float $value, ?string $unit = null, ?string $symbol = null, ?string $group = null)
|
||||||
{
|
{
|
||||||
$this->assertEquals($expected, ParameterDTO::parseValueField($name, $value, $unit, $symbol, $group));
|
$this->assertEquals($expected, ParameterDTO::parseValueField($name, $value, $unit, $symbol, $group));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider parseValueIncludingUnitDataProvider
|
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
|
#[DataProvider('parseValueIncludingUnitDataProvider')]
|
||||||
public function testParseValueIncludingUnit(ParameterDTO $expected, string $name, string|float $value, ?string $symbol = null, ?string $group = null)
|
public function testParseValueIncludingUnit(ParameterDTO $expected, string $name, string|float $value, ?string $symbol = null, ?string $group = null)
|
||||||
{
|
{
|
||||||
$this->assertEquals($expected, ParameterDTO::parseValueIncludingUnit($name, $value, $symbol, $group));
|
$this->assertEquals($expected, ParameterDTO::parseValueIncludingUnit($name, $value, $symbol, $group));
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
*/
|
*/
|
||||||
namespace App\Tests\Services\InfoProviderSystem;
|
namespace App\Tests\Services\InfoProviderSystem;
|
||||||
|
|
||||||
|
use App\Entity\PriceInformations\Currency;
|
||||||
use App\Entity\Attachments\AttachmentType;
|
use App\Entity\Attachments\AttachmentType;
|
||||||
use App\Entity\Parts\ManufacturingStatus;
|
use App\Entity\Parts\ManufacturingStatus;
|
||||||
use App\Services\InfoProviderSystem\DTOs\FileDTO;
|
use App\Services\InfoProviderSystem\DTOs\FileDTO;
|
||||||
|
|
@ -83,6 +84,7 @@ class DTOtoEntityConverterTest extends WebTestCase
|
||||||
|
|
||||||
//For non-base currencies, a new currency entity is created
|
//For non-base currencies, a new currency entity is created
|
||||||
$currency = $entity->getCurrency();
|
$currency = $entity->getCurrency();
|
||||||
|
$this->assertInstanceOf(Currency::class, $currency);
|
||||||
$this->assertEquals($dto->currency_iso_code, $currency->getIsoCode());
|
$this->assertEquals($dto->currency_iso_code, $currency->getIsoCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,8 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem\BarcodeScanner;
|
namespace App\Tests\Services\LabelSystem\BarcodeScanner;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\LabelSystem\LabelSupportedElement;
|
use App\Entity\LabelSystem\LabelSupportedElement;
|
||||||
use App\Services\LabelSystem\BarcodeScanner\BarcodeRedirector;
|
use App\Services\LabelSystem\BarcodeScanner\BarcodeRedirector;
|
||||||
use App\Services\LabelSystem\BarcodeScanner\BarcodeSourceType;
|
use App\Services\LabelSystem\BarcodeScanner\BarcodeSourceType;
|
||||||
|
|
@ -66,10 +68,8 @@ final class BarcodeRedirectorTest extends KernelTestCase
|
||||||
yield [new LocalBarcodeScanResult(LabelSupportedElement::STORELOCATION, 1, BarcodeSourceType::INTERNAL), '/en/store_location/1/parts'];
|
yield [new LocalBarcodeScanResult(LabelSupportedElement::STORELOCATION, 1, BarcodeSourceType::INTERNAL), '/en/store_location/1/parts'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('urlDataProvider')]
|
||||||
* @dataProvider urlDataProvider
|
#[Group('DB')]
|
||||||
* @group DB
|
|
||||||
*/
|
|
||||||
public function testGetRedirectURL(LocalBarcodeScanResult $scanResult, string $url): void
|
public function testGetRedirectURL(LocalBarcodeScanResult $scanResult, string $url): void
|
||||||
{
|
{
|
||||||
$this->assertSame($url, $this->service->getRedirectURL($scanResult));
|
$this->assertSame($url, $this->service->getRedirectURL($scanResult));
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem\BarcodeScanner;
|
namespace App\Tests\Services\LabelSystem\BarcodeScanner;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\LabelSystem\LabelSupportedElement;
|
use App\Entity\LabelSystem\LabelSupportedElement;
|
||||||
use App\Services\LabelSystem\BarcodeScanner\BarcodeScanHelper;
|
use App\Services\LabelSystem\BarcodeScanner\BarcodeScanHelper;
|
||||||
use App\Services\LabelSystem\BarcodeScanner\BarcodeScanResultInterface;
|
use App\Services\LabelSystem\BarcodeScanner\BarcodeScanResultInterface;
|
||||||
|
|
@ -140,17 +141,13 @@ class BarcodeScanHelperTest extends WebTestCase
|
||||||
yield [''];
|
yield [''];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('dataProvider')]
|
||||||
* @dataProvider dataProvider
|
|
||||||
*/
|
|
||||||
public function testNormalizeBarcodeContent(BarcodeScanResultInterface $expected, string $input): void
|
public function testNormalizeBarcodeContent(BarcodeScanResultInterface $expected, string $input): void
|
||||||
{
|
{
|
||||||
$this->assertEquals($expected, $this->service->scanBarcodeContent($input));
|
$this->assertEquals($expected, $this->service->scanBarcodeContent($input));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('invalidDataProvider')]
|
||||||
* @dataProvider invalidDataProvider
|
|
||||||
*/
|
|
||||||
public function testInvalidFormats(string $input): void
|
public function testInvalidFormats(string $input): void
|
||||||
{
|
{
|
||||||
$this->expectException(\InvalidArgumentException::class);
|
$this->expectException(\InvalidArgumentException::class);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||||
*
|
*
|
||||||
|
|
@ -17,7 +20,6 @@
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem\BarcodeScanner;
|
namespace App\Tests\Services\LabelSystem\BarcodeScanner;
|
||||||
|
|
||||||
use App\Services\LabelSystem\BarcodeScanner\EIGP114BarcodeScanResult;
|
use App\Services\LabelSystem\BarcodeScanner\EIGP114BarcodeScanResult;
|
||||||
|
|
@ -51,7 +53,7 @@ class EIGP114BarcodeScanResultTest extends TestCase
|
||||||
'4L' => 'US',
|
'4L' => 'US',
|
||||||
'13Z' => 'Digi-Key',
|
'13Z' => 'Digi-Key',
|
||||||
]);
|
]);
|
||||||
$this->assertEquals('digikey', $barcode->guessBarcodeVendor());
|
$this->assertSame('digikey', $barcode->guessBarcodeVendor());
|
||||||
|
|
||||||
//Mouser barcode:
|
//Mouser barcode:
|
||||||
$barcode = new EIGP114BarcodeScanResult([
|
$barcode = new EIGP114BarcodeScanResult([
|
||||||
|
|
@ -64,7 +66,7 @@ class EIGP114BarcodeScanResultTest extends TestCase
|
||||||
'1V' => 'Mouser',
|
'1V' => 'Mouser',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->assertEquals('mouser', $barcode->guessBarcodeVendor());
|
$this->assertSame('mouser', $barcode->guessBarcodeVendor());
|
||||||
|
|
||||||
//Farnell barcode:
|
//Farnell barcode:
|
||||||
$barcode = new EIGP114BarcodeScanResult([
|
$barcode = new EIGP114BarcodeScanResult([
|
||||||
|
|
@ -77,7 +79,7 @@ class EIGP114BarcodeScanResultTest extends TestCase
|
||||||
'3P' => 'Farnell',
|
'3P' => 'Farnell',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->assertEquals('element14', $barcode->guessBarcodeVendor());
|
$this->assertSame('element14', $barcode->guessBarcodeVendor());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testIsFormat06Code(): void
|
public function testIsFormat06Code(): void
|
||||||
|
|
@ -102,7 +104,7 @@ class EIGP114BarcodeScanResultTest extends TestCase
|
||||||
public function testParseFormat06Code(): void
|
public function testParseFormat06Code(): void
|
||||||
{
|
{
|
||||||
$barcode = EIGP114BarcodeScanResult::parseFormat06Code("[)>\x1E06\x1DP596-777A1-ND\x1D1PXAF4444\x1DQ3\x1D10D1452\x1D1TBF1103\x1D4LUS\x1E\x04");
|
$barcode = EIGP114BarcodeScanResult::parseFormat06Code("[)>\x1E06\x1DP596-777A1-ND\x1D1PXAF4444\x1DQ3\x1D10D1452\x1D1TBF1103\x1D4LUS\x1E\x04");
|
||||||
$this->assertEquals([
|
$this->assertSame([
|
||||||
'P' => '596-777A1-ND',
|
'P' => '596-777A1-ND',
|
||||||
'1P' => 'XAF4444',
|
'1P' => 'XAF4444',
|
||||||
'Q' => '3',
|
'Q' => '3',
|
||||||
|
|
@ -123,32 +125,32 @@ class EIGP114BarcodeScanResultTest extends TestCase
|
||||||
'4L' => 'US',
|
'4L' => 'US',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->assertEquals('596-777A1-ND', $barcode->customerPartNumber);
|
$this->assertSame('596-777A1-ND', $barcode->customerPartNumber);
|
||||||
$this->assertEquals('XAF4444', $barcode->supplierPartNumber);
|
$this->assertSame('XAF4444', $barcode->supplierPartNumber);
|
||||||
$this->assertEquals(3, $barcode->quantity);
|
$this->assertSame(3, $barcode->quantity);
|
||||||
$this->assertEquals('1452', $barcode->alternativeDateCode);
|
$this->assertSame('1452', $barcode->alternativeDateCode);
|
||||||
$this->assertEquals('BF1103', $barcode->lotCode);
|
$this->assertSame('BF1103', $barcode->lotCode);
|
||||||
$this->assertEquals('US', $barcode->countryOfOrigin);
|
$this->assertSame('US', $barcode->countryOfOrigin);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDigikeyParsing(): void
|
public function testDigikeyParsing(): void
|
||||||
{
|
{
|
||||||
$barcode = EIGP114BarcodeScanResult::parseFormat06Code("[)>\x1e06\x1dPQ1045-ND\x1d1P364019-01\x1d30PQ1045-ND\x1dK12432 TRAVIS FOSS P\x1d1K85732873\x1d10K103332956\x1d9D231013\x1d1TQJ13P\x1d11K1\x1d4LTW\x1dQ3\x1d11ZPICK\x1d12Z7360988\x1d13Z999999\x1d20Z0000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
|
$barcode = EIGP114BarcodeScanResult::parseFormat06Code("[)>\x1e06\x1dPQ1045-ND\x1d1P364019-01\x1d30PQ1045-ND\x1dK12432 TRAVIS FOSS P\x1d1K85732873\x1d10K103332956\x1d9D231013\x1d1TQJ13P\x1d11K1\x1d4LTW\x1dQ3\x1d11ZPICK\x1d12Z7360988\x1d13Z999999\x1d20Z0000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
|
||||||
|
|
||||||
$this->assertEquals('digikey', $barcode->guessBarcodeVendor());
|
$this->assertSame('digikey', $barcode->guessBarcodeVendor());
|
||||||
|
|
||||||
$this->assertEquals('Q1045-ND', $barcode->customerPartNumber);
|
$this->assertSame('Q1045-ND', $barcode->customerPartNumber);
|
||||||
$this->assertEquals('364019-01', $barcode->supplierPartNumber);
|
$this->assertSame('364019-01', $barcode->supplierPartNumber);
|
||||||
$this->assertEquals(3, $barcode->quantity);
|
$this->assertSame(3, $barcode->quantity);
|
||||||
$this->assertEquals('231013', $barcode->dateCode);
|
$this->assertSame('231013', $barcode->dateCode);
|
||||||
$this->assertEquals('QJ13P', $barcode->lotCode);
|
$this->assertSame('QJ13P', $barcode->lotCode);
|
||||||
$this->assertEquals('TW', $barcode->countryOfOrigin);
|
$this->assertSame('TW', $barcode->countryOfOrigin);
|
||||||
$this->assertEquals('Q1045-ND', $barcode->digikeyPartNumber);
|
$this->assertSame('Q1045-ND', $barcode->digikeyPartNumber);
|
||||||
$this->assertEquals('85732873', $barcode->digikeySalesOrderNumber);
|
$this->assertSame('85732873', $barcode->digikeySalesOrderNumber);
|
||||||
$this->assertEquals('103332956', $barcode->digikeyInvoiceNumber);
|
$this->assertSame('103332956', $barcode->digikeyInvoiceNumber);
|
||||||
$this->assertEquals('PICK', $barcode->digikeyLabelType);
|
$this->assertSame('PICK', $barcode->digikeyLabelType);
|
||||||
$this->assertEquals('7360988', $barcode->digikeyPartID);
|
$this->assertSame('7360988', $barcode->digikeyPartID);
|
||||||
$this->assertEquals('999999', $barcode->digikeyNA);
|
$this->assertSame('999999', $barcode->digikeyNA);
|
||||||
$this->assertEquals('0000000000000000000000000000000000000000000000000000000000000000000000000000000000000', $barcode->digikeyPadding);
|
$this->assertSame('0000000000000000000000000000000000000000000000000000000000000000000000000000000000000', $barcode->digikeyPadding);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem\Barcodes;
|
namespace App\Tests\Services\LabelSystem\Barcodes;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Parts\Part;
|
use App\Entity\Parts\Part;
|
||||||
use App\Entity\Parts\PartLot;
|
use App\Entity\Parts\PartLot;
|
||||||
use App\Entity\Parts\StorageLocation;
|
use App\Entity\Parts\StorageLocation;
|
||||||
|
|
@ -57,31 +58,27 @@ class BarcodeContentGeneratorTest extends KernelTestCase
|
||||||
$this->service = self::getContainer()->get(BarcodeContentGenerator::class);
|
$this->service = self::getContainer()->get(BarcodeContentGenerator::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function Barcode1DDataProvider(): \Iterator
|
public static function Barcode1DDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['P0000', Part::class];
|
yield ['P0000', Part::class];
|
||||||
yield ['L0000', PartLot::class];
|
yield ['L0000', PartLot::class];
|
||||||
yield ['S0000', StorageLocation::class];
|
yield ['S0000', StorageLocation::class];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function Barcode2DDataProvider(): \Iterator
|
public static function Barcode2DDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['/scan/part/0', Part::class];
|
yield ['/scan/part/0', Part::class];
|
||||||
yield ['/scan/lot/0', PartLot::class];
|
yield ['/scan/lot/0', PartLot::class];
|
||||||
yield ['/scan/location/0', StorageLocation::class];
|
yield ['/scan/location/0', StorageLocation::class];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('Barcode1DDataProvider')]
|
||||||
* @dataProvider Barcode1DDataProvider
|
|
||||||
*/
|
|
||||||
public function testGet1DBarcodeContent(string $expected, string $class): void
|
public function testGet1DBarcodeContent(string $expected, string $class): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->get1DBarcodeContent(new $class()));
|
$this->assertSame($expected, $this->service->get1DBarcodeContent(new $class()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('Barcode2DDataProvider')]
|
||||||
* @dataProvider Barcode2DDataProvider
|
|
||||||
*/
|
|
||||||
public function testGetURLContent(string $expected, string $class): void
|
public function testGetURLContent(string $expected, string $class): void
|
||||||
{
|
{
|
||||||
$url = $this->service->getURLContent(new $class());
|
$url = $this->service->getURLContent(new $class());
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem;
|
namespace App\Tests\Services\LabelSystem;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Base\AbstractDBElement;
|
use App\Entity\Base\AbstractDBElement;
|
||||||
use App\Entity\LabelSystem\LabelOptions;
|
use App\Entity\LabelSystem\LabelOptions;
|
||||||
use App\Entity\LabelSystem\LabelSupportedElement;
|
use App\Entity\LabelSystem\LabelSupportedElement;
|
||||||
|
|
@ -70,9 +71,7 @@ class LabelGeneratorTest extends WebTestCase
|
||||||
yield [LabelSupportedElement::STORELOCATION, StorageLocation::class];
|
yield [LabelSupportedElement::STORELOCATION, StorageLocation::class];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('supportsDataProvider')]
|
||||||
* @dataProvider supportsDataProvider
|
|
||||||
*/
|
|
||||||
public function testSupports(LabelSupportedElement $type, string $class): void
|
public function testSupports(LabelSupportedElement $type, string $class): void
|
||||||
{
|
{
|
||||||
$options = new LabelOptions();
|
$options = new LabelOptions();
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem;
|
namespace App\Tests\Services\LabelSystem;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Parts\Part;
|
use App\Entity\Parts\Part;
|
||||||
use App\Entity\Parts\PartLot;
|
use App\Entity\Parts\PartLot;
|
||||||
use App\Services\LabelSystem\LabelTextReplacer;
|
use App\Services\LabelSystem\LabelTextReplacer;
|
||||||
|
|
@ -70,7 +71,7 @@ class LabelTextReplacerTest extends WebTestCase
|
||||||
$this->target->setComment('P Comment');
|
$this->target->setComment('P Comment');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handlePlaceholderDataProvider(): \Iterator
|
public static function handlePlaceholderDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['Part 1', '[[NAME]]'];
|
yield ['Part 1', '[[NAME]]'];
|
||||||
yield ['P Description', '[[DESCRIPTION]]'];
|
yield ['P Description', '[[DESCRIPTION]]'];
|
||||||
|
|
@ -82,7 +83,7 @@ class LabelTextReplacerTest extends WebTestCase
|
||||||
yield ['Test [[NAME]]', 'Test [[NAME]]', 'Test [[NAME]]'];
|
yield ['Test [[NAME]]', 'Test [[NAME]]', 'Test [[NAME]]'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function replaceDataProvider(): \Iterator
|
public static function replaceDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['Part 1', '[[NAME]]'];
|
yield ['Part 1', '[[NAME]]'];
|
||||||
yield ['TestPart 1', 'Test[[NAME]]'];
|
yield ['TestPart 1', 'Test[[NAME]]'];
|
||||||
|
|
@ -94,17 +95,13 @@ class LabelTextReplacerTest extends WebTestCase
|
||||||
yield ['TEST[[ ]]TEST', 'TEST[[ ]]TEST'];
|
yield ['TEST[[ ]]TEST', 'TEST[[ ]]TEST'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('handlePlaceholderDataProvider')]
|
||||||
* @dataProvider handlePlaceholderDataProvider
|
|
||||||
*/
|
|
||||||
public function testHandlePlaceholder(string $expected, string $input): void
|
public function testHandlePlaceholder(string $expected, string $input): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->handlePlaceholder($input, $this->target));
|
$this->assertSame($expected, $this->service->handlePlaceholder($input, $this->target));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('replaceDataProvider')]
|
||||||
* @dataProvider replaceDataProvider
|
|
||||||
*/
|
|
||||||
public function testReplace(string $expected, string $input): void
|
public function testReplace(string $expected, string $input): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->replace($input, $this->target));
|
$this->assertSame($expected, $this->service->replace($input, $this->target));
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Base\AbstractDBElement;
|
use App\Entity\Base\AbstractDBElement;
|
||||||
use App\Services\LabelSystem\PlaceholderProviders\AbstractDBElementProvider;
|
use App\Services\LabelSystem\PlaceholderProviders\AbstractDBElementProvider;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
@ -63,14 +64,12 @@ class AbstractElementProviderTest extends WebTestCase
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProvider(): \Iterator
|
public static function dataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['123', '[[ID]]'];
|
yield ['123', '[[ID]]'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('dataProvider')]
|
||||||
* @dataProvider dataProvider
|
|
||||||
*/
|
|
||||||
public function testReplace(string $expected, string $placeholder): void
|
public function testReplace(string $expected, string $placeholder): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Parts\Part;
|
use App\Entity\Parts\Part;
|
||||||
use App\Services\LabelSystem\PlaceholderProviders\GlobalProviders;
|
use App\Services\LabelSystem\PlaceholderProviders\GlobalProviders;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
@ -61,15 +62,13 @@ class GlobalProvidersTest extends WebTestCase
|
||||||
$this->target = new Part();
|
$this->target = new Part();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProvider(): \Iterator
|
public static function dataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['Part-DB', '[[INSTALL_NAME]]'];
|
yield ['Part-DB', '[[INSTALL_NAME]]'];
|
||||||
yield ['anonymous', '[[USERNAME]]'];
|
yield ['anonymous', '[[USERNAME]]'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('dataProvider')]
|
||||||
* @dataProvider dataProvider
|
|
||||||
*/
|
|
||||||
public function testReplace(string $expected, string $placeholder): void
|
public function testReplace(string $expected, string $placeholder): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Contracts\NamedElementInterface;
|
use App\Entity\Contracts\NamedElementInterface;
|
||||||
use App\Services\LabelSystem\PlaceholderProviders\NamedElementProvider;
|
use App\Services\LabelSystem\PlaceholderProviders\NamedElementProvider;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
@ -66,14 +67,12 @@ class NamedElementProviderTest extends WebTestCase
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProvider(): \Iterator
|
public static function dataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['This is my Name', '[[NAME]]'];
|
yield ['This is my Name', '[[NAME]]'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('dataProvider')]
|
||||||
* @dataProvider dataProvider
|
|
||||||
*/
|
|
||||||
public function testReplace(string $expected, string $placeholder): void
|
public function testReplace(string $expected, string $placeholder): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Parts\Part;
|
use App\Entity\Parts\Part;
|
||||||
use App\Entity\Parts\PartLot;
|
use App\Entity\Parts\PartLot;
|
||||||
use App\Entity\Parts\StorageLocation;
|
use App\Entity\Parts\StorageLocation;
|
||||||
|
|
@ -85,7 +86,7 @@ class PartLotProviderTest extends WebTestCase
|
||||||
$this->target->setOwner($user);
|
$this->target->setOwner($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProvider(): \Iterator
|
public static function dataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['unknown', '[[LOT_ID]]'];
|
yield ['unknown', '[[LOT_ID]]'];
|
||||||
yield ['Lot description', '[[LOT_NAME]]'];
|
yield ['Lot description', '[[LOT_NAME]]'];
|
||||||
|
|
@ -101,9 +102,7 @@ class PartLotProviderTest extends WebTestCase
|
||||||
yield ['user', '[[OWNER_USERNAME]]'];
|
yield ['user', '[[OWNER_USERNAME]]'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('dataProvider')]
|
||||||
* @dataProvider dataProvider
|
|
||||||
*/
|
|
||||||
public function testReplace(string $expected, string $placeholder): void
|
public function testReplace(string $expected, string $placeholder): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,8 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Parts\ManufacturingStatus;
|
use App\Entity\Parts\ManufacturingStatus;
|
||||||
use Doctrine\ORM\EntityManager;
|
use Doctrine\ORM\EntityManager;
|
||||||
use App\Entity\Parts\Category;
|
use App\Entity\Parts\Category;
|
||||||
|
|
@ -50,9 +52,7 @@ use App\Services\LabelSystem\PlaceholderProviders\PartProvider;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
/**
|
#[Group('DB')]
|
||||||
* @group DB
|
|
||||||
*/
|
|
||||||
class PartProviderTest extends WebTestCase
|
class PartProviderTest extends WebTestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
|
@ -87,7 +87,7 @@ class PartProviderTest extends WebTestCase
|
||||||
$this->target->setComment('<b>Bold</b> *Italic*');
|
$this->target->setComment('<b>Bold</b> *Italic*');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProvider(): \Iterator
|
public static function dataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['Node 2.1', '[[CATEGORY]]'];
|
yield ['Node 2.1', '[[CATEGORY]]'];
|
||||||
yield ['Node 2 → Node 2.1', '[[CATEGORY_FULL]]'];
|
yield ['Node 2 → Node 2.1', '[[CATEGORY_FULL]]'];
|
||||||
|
|
@ -105,9 +105,7 @@ class PartProviderTest extends WebTestCase
|
||||||
yield ['Bold Italic', '[[COMMENT_T]]'];
|
yield ['Bold Italic', '[[COMMENT_T]]'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('dataProvider')]
|
||||||
* @dataProvider dataProvider
|
|
||||||
*/
|
|
||||||
public function testReplace(string $expected, string $placeholder): void
|
public function testReplace(string $expected, string $placeholder): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
namespace App\Tests\Services\LabelSystem\PlaceholderProviders;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Contracts\TimeStampableInterface;
|
use App\Entity\Contracts\TimeStampableInterface;
|
||||||
use App\Services\LabelSystem\PlaceholderProviders\GlobalProviders;
|
use App\Services\LabelSystem\PlaceholderProviders\GlobalProviders;
|
||||||
use App\Services\LabelSystem\PlaceholderProviders\TimestampableElementProvider;
|
use App\Services\LabelSystem\PlaceholderProviders\TimestampableElementProvider;
|
||||||
|
|
@ -74,16 +75,14 @@ class TimestampableElementProviderTest extends WebTestCase
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProvider(): \Iterator
|
public static function dataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
\Locale::setDefault('en');
|
\Locale::setDefault('en');
|
||||||
yield ['1/1/00, 12:00 AM', '[[LAST_MODIFIED]]'];
|
yield ['1/1/00, 12:00 AM', '[[LAST_MODIFIED]]'];
|
||||||
yield ['1/1/00, 12:00 AM', '[[CREATION_DATE]]'];
|
yield ['1/1/00, 12:00 AM', '[[CREATION_DATE]]'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('dataProvider')]
|
||||||
* @dataProvider dataProvider
|
|
||||||
*/
|
|
||||||
public function testReplace(string $expected, string $placeholder): void
|
public function testReplace(string $expected, string $placeholder): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
$this->assertSame($expected, $this->service->replace($placeholder, $this->target));
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\LabelSystem;
|
namespace App\Tests\Services\LabelSystem;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\LabelSystem\LabelOptions;
|
use App\Entity\LabelSystem\LabelOptions;
|
||||||
use App\Entity\LabelSystem\LabelProcessMode;
|
use App\Entity\LabelSystem\LabelProcessMode;
|
||||||
use App\Entity\LabelSystem\LabelSupportedElement;
|
use App\Entity\LabelSystem\LabelSupportedElement;
|
||||||
|
|
@ -61,7 +62,7 @@ class SandboxedTwigFactoryTest extends WebTestCase
|
||||||
$this->service = self::getContainer()->get(SandboxedTwigFactory::class);
|
$this->service = self::getContainer()->get(SandboxedTwigFactory::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function twigDataProvider(): \Iterator
|
public static function twigDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield [' {% for i in range(1, 3) %}
|
yield [' {% for i in range(1, 3) %}
|
||||||
{{ part.id }}
|
{{ part.id }}
|
||||||
|
|
@ -94,7 +95,7 @@ class SandboxedTwigFactoryTest extends WebTestCase
|
||||||
'];
|
'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function twigNotAllowedDataProvider(): \Iterator
|
public static function twigNotAllowedDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['{% block test %} {% endblock %}'];
|
yield ['{% block test %} {% endblock %}'];
|
||||||
yield ['{% deprecated test %}'];
|
yield ['{% deprecated test %}'];
|
||||||
|
|
@ -103,9 +104,7 @@ class SandboxedTwigFactoryTest extends WebTestCase
|
||||||
yield ['{{ part.setCategory(null) }}'];
|
yield ['{{ part.setCategory(null) }}'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('twigDataProvider')]
|
||||||
* @dataProvider twigDataProvider
|
|
||||||
*/
|
|
||||||
public function testTwigFeatures(string $twig): void
|
public function testTwigFeatures(string $twig): void
|
||||||
{
|
{
|
||||||
$options = new LabelOptions();
|
$options = new LabelOptions();
|
||||||
|
|
@ -123,9 +122,7 @@ class SandboxedTwigFactoryTest extends WebTestCase
|
||||||
$this->assertIsString($str);
|
$this->assertIsString($str);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('twigNotAllowedDataProvider')]
|
||||||
* @dataProvider twigNotAllowedDataProvider
|
|
||||||
*/
|
|
||||||
public function testTwigForbidden(string $twig): void
|
public function testTwigForbidden(string $twig): void
|
||||||
{
|
{
|
||||||
$this->expectException(SecurityError::class);
|
$this->expectException(SecurityError::class);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
|
||||||
*
|
*
|
||||||
|
|
@ -17,7 +20,6 @@
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace App\Tests\Services\LogSystem;
|
namespace App\Tests\Services\LogSystem;
|
||||||
|
|
||||||
use App\Entity\LogSystem\ElementEditedLogEntry;
|
use App\Entity\LogSystem\ElementEditedLogEntry;
|
||||||
|
|
@ -45,7 +47,7 @@ class TimeTravelTest extends KernelTestCase
|
||||||
$undeletedCategory = $this->service->undeleteEntity(Category::class, 100);
|
$undeletedCategory = $this->service->undeleteEntity(Category::class, 100);
|
||||||
|
|
||||||
$this->assertInstanceOf(Category::class, $undeletedCategory);
|
$this->assertInstanceOf(Category::class, $undeletedCategory);
|
||||||
$this->assertEquals(100, $undeletedCategory->getId());
|
$this->assertSame(100, $undeletedCategory->getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testApplyEntry(): void
|
public function testApplyEntry(): void
|
||||||
|
|
@ -63,8 +65,8 @@ class TimeTravelTest extends KernelTestCase
|
||||||
|
|
||||||
$this->service->applyEntry($category, $logEntry);
|
$this->service->applyEntry($category, $logEntry);
|
||||||
|
|
||||||
$this->assertEquals('Old Category', $category->getName());
|
$this->assertSame('Old Category', $category->getName());
|
||||||
$this->assertEquals('Old Comment', $category->getComment());
|
$this->assertSame('Old Comment', $category->getComment());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRevertEntityToTimestamp(): void
|
public function testRevertEntityToTimestamp(): void
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\Misc;
|
namespace App\Tests\Services\Misc;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Services\Misc\FAIconGenerator;
|
use App\Services\Misc\FAIconGenerator;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
|
|
@ -41,7 +42,7 @@ class FAIconGeneratorTest extends WebTestCase
|
||||||
$this->service = self::getContainer()->get(FAIconGenerator::class);
|
$this->service = self::getContainer()->get(FAIconGenerator::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fileExtensionDataProvider(): \Iterator
|
public static function fileExtensionDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield ['pdf', 'fa-file-pdf'];
|
yield ['pdf', 'fa-file-pdf'];
|
||||||
yield ['jpeg','fa-file-image'];
|
yield ['jpeg','fa-file-image'];
|
||||||
|
|
@ -95,9 +96,7 @@ class FAIconGeneratorTest extends WebTestCase
|
||||||
yield ['fgd', 'fa-file'];
|
yield ['fgd', 'fa-file'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('fileExtensionDataProvider')]
|
||||||
* @dataProvider fileExtensionDataProvider
|
|
||||||
*/
|
|
||||||
public function testFileExtensionToFAType(string $ext, string $expected): void
|
public function testFileExtensionToFAType(string $ext, string $expected): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->fileExtensionToFAType($ext), 'Failed for extension .'.$ext);
|
$this->assertSame($expected, $this->service->fileExtensionToFAType($ext), 'Failed for extension .'.$ext);
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\Misc;
|
namespace App\Tests\Services\Misc;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Services\Misc\RangeParser;
|
use App\Services\Misc\RangeParser;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
|
|
@ -57,7 +58,7 @@ class RangeParserTest extends WebTestCase
|
||||||
$this->service = self::getContainer()->get(RangeParser::class);
|
$this->service = self::getContainer()->get(RangeParser::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dataProvider(): \Iterator
|
public static function dataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield [[], ''];
|
yield [[], ''];
|
||||||
yield [[], ' '];
|
yield [[], ' '];
|
||||||
|
|
@ -81,7 +82,7 @@ class RangeParserTest extends WebTestCase
|
||||||
yield [[], '1, 2, test', true];
|
yield [[], '1, 2, test', true];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validDataProvider(): \Iterator
|
public static function validDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield [true, ''];
|
yield [true, ''];
|
||||||
yield [true, ' '];
|
yield [true, ' '];
|
||||||
|
|
@ -96,9 +97,7 @@ class RangeParserTest extends WebTestCase
|
||||||
yield [false, '1, 2 test'];
|
yield [false, '1, 2 test'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('dataProvider')]
|
||||||
* @dataProvider dataProvider
|
|
||||||
*/
|
|
||||||
public function testParse(array $expected, string $input, bool $must_throw = false): void
|
public function testParse(array $expected, string $input, bool $must_throw = false): void
|
||||||
{
|
{
|
||||||
if ($must_throw) {
|
if ($must_throw) {
|
||||||
|
|
@ -109,9 +108,7 @@ class RangeParserTest extends WebTestCase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('validDataProvider')]
|
||||||
* @dataProvider validDataProvider
|
|
||||||
*/
|
|
||||||
public function testIsValidRange(bool $expected, string $input): void
|
public function testIsValidRange(bool $expected, string $input): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->isValidRange($input));
|
$this->assertSame($expected, $this->service->isValidRange($input));
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\Parameters;
|
namespace App\Tests\Services\Parameters;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Parameters\AbstractParameter;
|
use App\Entity\Parameters\AbstractParameter;
|
||||||
use App\Services\Parameters\ParameterExtractor;
|
use App\Services\Parameters\ParameterExtractor;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
@ -56,7 +57,7 @@ class ParameterExtractorTest extends WebTestCase
|
||||||
$this->service = self::getContainer()->get(ParameterExtractor::class);
|
$this->service = self::getContainer()->get(ParameterExtractor::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function emptyDataProvider(): \Iterator
|
public static function emptyDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield [''];
|
yield [''];
|
||||||
yield [' '];
|
yield [' '];
|
||||||
|
|
@ -69,9 +70,7 @@ class ParameterExtractorTest extends WebTestCase
|
||||||
yield ['A [link](https://demo.part-db.de) should not be matched'];
|
yield ['A [link](https://demo.part-db.de) should not be matched'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('emptyDataProvider')]
|
||||||
* @dataProvider emptyDataProvider
|
|
||||||
*/
|
|
||||||
public function testShouldReturnEmpty(string $input): void
|
public function testShouldReturnEmpty(string $input): void
|
||||||
{
|
{
|
||||||
$this->assertEmpty($this->service->extractParameters($input));
|
$this->assertEmpty($this->service->extractParameters($input));
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\Parts;
|
namespace App\Tests\Services\Parts;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\Parts\Part;
|
use App\Entity\Parts\Part;
|
||||||
use App\Entity\PriceInformations\Orderdetail;
|
use App\Entity\PriceInformations\Orderdetail;
|
||||||
use App\Entity\PriceInformations\Pricedetail;
|
use App\Entity\PriceInformations\Pricedetail;
|
||||||
|
|
@ -43,7 +44,7 @@ class PricedetailHelperTest extends WebTestCase
|
||||||
$this->service = self::getContainer()->get(PricedetailHelper::class);
|
$this->service = self::getContainer()->get(PricedetailHelper::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function maxDiscountAmountDataProvider(): ?\Generator
|
public static function maxDiscountAmountDataProvider(): ?\Generator
|
||||||
{
|
{
|
||||||
$part = new Part();
|
$part = new Part();
|
||||||
yield [$part, null, 'Part without any orderdetails failed!'];
|
yield [$part, null, 'Part without any orderdetails failed!'];
|
||||||
|
|
@ -81,9 +82,7 @@ class PricedetailHelperTest extends WebTestCase
|
||||||
yield [$part, 10.0, 'Part with multiple orderdetails failed'];
|
yield [$part, 10.0, 'Part with multiple orderdetails failed'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('maxDiscountAmountDataProvider')]
|
||||||
* @dataProvider maxDiscountAmountDataProvider
|
|
||||||
*/
|
|
||||||
public function testGetMaxDiscountAmount(Part $part, ?float $expected_result, string $message): void
|
public function testGetMaxDiscountAmount(Part $part, ?float $expected_result, string $message): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected_result, $this->service->getMaxDiscountAmount($part), $message);
|
$this->assertSame($expected_result, $this->service->getMaxDiscountAmount($part), $message);
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\Trees;
|
namespace App\Tests\Services\Trees;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\Group;
|
||||||
use App\Entity\Attachments\AttachmentType;
|
use App\Entity\Attachments\AttachmentType;
|
||||||
use App\Entity\Parts\Category;
|
use App\Entity\Parts\Category;
|
||||||
use App\Helpers\Trees\TreeViewNode;
|
use App\Helpers\Trees\TreeViewNode;
|
||||||
|
|
@ -29,9 +30,7 @@ use App\Services\Trees\TreeViewGenerator;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
||||||
/**
|
#[Group('DB')]
|
||||||
* @group DB
|
|
||||||
*/
|
|
||||||
class TreeViewGeneratorTest extends WebTestCase
|
class TreeViewGeneratorTest extends WebTestCase
|
||||||
{
|
{
|
||||||
protected $em;
|
protected $em;
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\UserSystem;
|
namespace App\Tests\Services\UserSystem;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Entity\UserSystem\Group;
|
use App\Entity\UserSystem\Group;
|
||||||
use App\Entity\UserSystem\PermissionData;
|
use App\Entity\UserSystem\PermissionData;
|
||||||
use App\Entity\UserSystem\User;
|
use App\Entity\UserSystem\User;
|
||||||
|
|
@ -91,7 +92,7 @@ class PermissionManagerTest extends WebTestCase
|
||||||
$this->group->method('getParent')->willReturn($parent_group);
|
$this->group->method('getParent')->willReturn($parent_group);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getPermissionNames(): \Iterator
|
public static function getPermissionNames(): \Iterator
|
||||||
{
|
{
|
||||||
//List some permission names
|
//List some permission names
|
||||||
yield ['parts'];
|
yield ['parts'];
|
||||||
|
|
@ -101,9 +102,7 @@ class PermissionManagerTest extends WebTestCase
|
||||||
yield ['tools'];
|
yield ['tools'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('getPermissionNames')]
|
||||||
* @dataProvider getPermissionNames
|
|
||||||
*/
|
|
||||||
public function testListOperationsForPermission($perm_name): void
|
public function testListOperationsForPermission($perm_name): void
|
||||||
{
|
{
|
||||||
$arr = $this->service->listOperationsForPermission($perm_name);
|
$arr = $this->service->listOperationsForPermission($perm_name);
|
||||||
|
|
|
||||||
|
|
@ -90,9 +90,9 @@ class PermissionSchemaUpdaterTest extends WebTestCase
|
||||||
|
|
||||||
//Do an upgrade and afterward the move, add, and withdraw permissions should be set to ALLOW
|
//Do an upgrade and afterward the move, add, and withdraw permissions should be set to ALLOW
|
||||||
self::assertTrue($this->service->upgradeSchema($user, 1));
|
self::assertTrue($this->service->upgradeSchema($user, 1));
|
||||||
self::assertEquals(PermissionData::ALLOW, $user->getPermissions()->getPermissionValue('parts_stock', 'move'));
|
self::assertSame(PermissionData::ALLOW, $user->getPermissions()->getPermissionValue('parts_stock', 'move'));
|
||||||
self::assertEquals(PermissionData::ALLOW, $user->getPermissions()->getPermissionValue('parts_stock', 'add'));
|
self::assertSame(PermissionData::ALLOW, $user->getPermissions()->getPermissionValue('parts_stock', 'add'));
|
||||||
self::assertEquals(PermissionData::ALLOW, $user->getPermissions()->getPermissionValue('parts_stock', 'withdraw'));
|
self::assertSame(PermissionData::ALLOW, $user->getPermissions()->getPermissionValue('parts_stock', 'withdraw'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testUpgradeSchemaToVersion2(): void
|
public function testUpgradeSchemaToVersion2(): void
|
||||||
|
|
@ -106,9 +106,9 @@ class PermissionSchemaUpdaterTest extends WebTestCase
|
||||||
|
|
||||||
//After the upgrade all operations should be available under the name "projects" with the same values
|
//After the upgrade all operations should be available under the name "projects" with the same values
|
||||||
self::assertTrue($this->service->upgradeSchema($user, 2));
|
self::assertTrue($this->service->upgradeSchema($user, 2));
|
||||||
self::assertEquals(PermissionData::ALLOW, $user->getPermissions()->getPermissionValue('projects', 'read'));
|
self::assertSame(PermissionData::ALLOW, $user->getPermissions()->getPermissionValue('projects', 'read'));
|
||||||
self::assertEquals(PermissionData::INHERIT, $user->getPermissions()->getPermissionValue('projects', 'edit'));
|
self::assertSame(PermissionData::INHERIT, $user->getPermissions()->getPermissionValue('projects', 'edit'));
|
||||||
self::assertEquals(PermissionData::DISALLOW, $user->getPermissions()->getPermissionValue('projects', 'delete'));
|
self::assertSame(PermissionData::DISALLOW, $user->getPermissions()->getPermissionValue('projects', 'delete'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testUpgradeSchemaToVersion3(): void
|
public function testUpgradeSchemaToVersion3(): void
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests\Services\UserSystem\TFA;
|
namespace App\Tests\Services\UserSystem\TFA;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Services\UserSystem\TFA\BackupCodeGenerator;
|
use App\Services\UserSystem\TFA\BackupCodeGenerator;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use RuntimeException;
|
use RuntimeException;
|
||||||
|
|
@ -46,7 +47,7 @@ class BackupCodeGeneratorTest extends TestCase
|
||||||
new BackupCodeGenerator(4, 10);
|
new BackupCodeGenerator(4, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function codeLengthDataProvider(): \Iterator
|
public static function codeLengthDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield [6];
|
yield [6];
|
||||||
yield [8];
|
yield [8];
|
||||||
|
|
@ -54,25 +55,21 @@ class BackupCodeGeneratorTest extends TestCase
|
||||||
yield [16];
|
yield [16];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('codeLengthDataProvider')]
|
||||||
* @dataProvider codeLengthDataProvider
|
|
||||||
*/
|
|
||||||
public function testGenerateSingleCode(int $code_length): void
|
public function testGenerateSingleCode(int $code_length): void
|
||||||
{
|
{
|
||||||
$generator = new BackupCodeGenerator($code_length, 10);
|
$generator = new BackupCodeGenerator($code_length, 10);
|
||||||
$this->assertMatchesRegularExpression("/^([a-f0-9]){{$code_length}}\$/", $generator->generateSingleCode());
|
$this->assertMatchesRegularExpression("/^([a-f0-9]){{$code_length}}\$/", $generator->generateSingleCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function codeCountDataProvider(): \Iterator
|
public static function codeCountDataProvider(): \Iterator
|
||||||
{
|
{
|
||||||
yield [2];
|
yield [2];
|
||||||
yield [8];
|
yield [8];
|
||||||
yield [10];
|
yield [10];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('codeCountDataProvider')]
|
||||||
* @dataProvider codeCountDataProvider
|
|
||||||
*/
|
|
||||||
public function testGenerateCodeSet(int $code_count): void
|
public function testGenerateCodeSet(int $code_count): void
|
||||||
{
|
{
|
||||||
$generator = new BackupCodeGenerator(8, $code_count);
|
$generator = new BackupCodeGenerator(8, $code_count);
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Tests;
|
namespace App\Tests;
|
||||||
|
|
||||||
|
use Jbtronics\SettingsBundle\Settings\Settings;
|
||||||
|
use Jbtronics\SettingsBundle\Settings\ResettableSettingsInterface;
|
||||||
use InvalidArgumentException;
|
use InvalidArgumentException;
|
||||||
use ReflectionClass;
|
use ReflectionClass;
|
||||||
|
|
||||||
|
|
@ -41,14 +43,14 @@ class SettingsTestHelper
|
||||||
$reflection = new ReflectionClass($class);
|
$reflection = new ReflectionClass($class);
|
||||||
|
|
||||||
//Check if it is a settings class (has a Settings attribute)
|
//Check if it is a settings class (has a Settings attribute)
|
||||||
if ($reflection->getAttributes(\Jbtronics\SettingsBundle\Settings\Settings::class) === []) {
|
if ($reflection->getAttributes(Settings::class) === []) {
|
||||||
throw new InvalidArgumentException("The class $class is not a settings class!");
|
throw new InvalidArgumentException("The class $class is not a settings class!");
|
||||||
}
|
}
|
||||||
|
|
||||||
$object = $reflection->newInstanceWithoutConstructor();
|
$object = $reflection->newInstanceWithoutConstructor();
|
||||||
|
|
||||||
//If the object has some initialization logic, then call it
|
//If the object has some initialization logic, then call it
|
||||||
if ($object instanceof \Jbtronics\SettingsBundle\Settings\ResettableSettingsInterface) {
|
if ($object instanceof ResettableSettingsInterface) {
|
||||||
$object->resetToDefaultValues();
|
$object->resetToDefaultValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ declare(strict_types=1);
|
||||||
*/
|
*/
|
||||||
namespace App\Tests\Twig;
|
namespace App\Tests\Twig;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\Attributes\DataProvider;
|
||||||
use App\Twig\UserExtension;
|
use App\Twig\UserExtension;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
|
||||||
|
|
@ -36,7 +37,7 @@ class UserExtensionTest extends WebTestCase
|
||||||
$this->service = self::getContainer()->get(UserExtension::class);
|
$this->service = self::getContainer()->get(UserExtension::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function removeLocaleFromPathDataSet(): ?\Generator
|
public static function removeLocaleFromPathDataSet(): ?\Generator
|
||||||
{
|
{
|
||||||
yield ['/', '/de/'];
|
yield ['/', '/de/'];
|
||||||
yield ['/test', '/de/test'];
|
yield ['/test', '/de/test'];
|
||||||
|
|
@ -46,9 +47,7 @@ class UserExtensionTest extends WebTestCase
|
||||||
yield ['/test/foo/bar?param1=val1¶m2=val2', '/de_DE/test/foo/bar?param1=val1¶m2=val2'];
|
yield ['/test/foo/bar?param1=val1¶m2=val2', '/de_DE/test/foo/bar?param1=val1¶m2=val2'];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#[DataProvider('removeLocaleFromPathDataSet')]
|
||||||
* @dataProvider removeLocaleFromPathDataSet
|
|
||||||
*/
|
|
||||||
public function testRemoveLocaleFromPath(string $expected, string $input): void
|
public function testRemoveLocaleFromPath(string $expected, string $input): void
|
||||||
{
|
{
|
||||||
$this->assertSame($expected, $this->service->removeLocaleFromPath($input));
|
$this->assertSame($expected, $this->service->removeLocaleFromPath($input));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue