Added some tests to check if LabelSystem and scanner pages are available.

This commit is contained in:
Jan Böhmer 2020-05-10 13:28:01 +02:00
parent df6546d94d
commit 7e656be246
6 changed files with 174 additions and 7 deletions

View file

@ -47,7 +47,7 @@ class ScanController extends AbstractController
} }
/** /**
* @Route("/", name="scan_dialog") * @Route("", name="scan_dialog")
*/ */
public function dialog(Request $request): Response public function dialog(Request $request): Response
{ {

View file

@ -82,8 +82,8 @@ class GroupFixtures extends Fixture
'suppliers' => 5461, 'suppliers' => 5461,
'manufacturers' => 5461, 'manufacturers' => 5461,
'attachment_types' => 1365, 'attachment_types' => 1365,
'tools' => 1365, 'tools' => 87381,
'labels' => 21, 'labels' => 87381,
'parts_category' => 5, 'parts_category' => 5,
'parts_minamount' => 5, 'parts_minamount' => 5,
'parts_lots' => 85, 'parts_lots' => 85,
@ -125,8 +125,8 @@ class GroupFixtures extends Fixture
'suppliers' => 1705, 'suppliers' => 1705,
'manufacturers' => 1705, 'manufacturers' => 1705,
'attachment_types' => 681, 'attachment_types' => 681,
'tools' => 1366, 'tools' => 87382,
'labels' => 165, 'labels' => 173737,
'parts_category' => 9, 'parts_category' => 9,
'parts_minamount' => 9, 'parts_minamount' => 9,
'parts_lots' => 169, 'parts_lots' => 169,
@ -168,8 +168,8 @@ class GroupFixtures extends Fixture
'suppliers' => 5461, 'suppliers' => 5461,
'manufacturers' => 5461, 'manufacturers' => 5461,
'attachment_types' => 1365, 'attachment_types' => 1365,
'tools' => 1365, 'tools' => 87381,
'labels' => 85, 'labels' => 91477,
'parts_category' => 5, 'parts_category' => 5,
'parts_minamount' => 5, 'parts_minamount' => 5,
'parts_lots' => 85, 'parts_lots' => 85,

View file

@ -0,0 +1,96 @@
<?php
/**
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
*
* Copyright (C) 2019 - 2020 Jan Böhmer (https://github.com/jbtronics)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* 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/>.
*/
namespace App\DataFixtures;
use App\Entity\LabelSystem\LabelOptions;
use App\Entity\LabelSystem\LabelProfile;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\ObjectManager;
class LabelProfileFixtures extends Fixture
{
protected $em;
public function __construct(EntityManagerInterface $entityManager)
{
$this->em = $entityManager;
}
public function load(ObjectManager $manager)
{
$this->em->getConnection()->exec("ALTER TABLE `label_profiles` AUTO_INCREMENT = 1;");
$profile1 = new LabelProfile();
$profile1->setName('Profile 1');
$profile1->setShowInDropdown(true);
$option1 = new LabelOptions();
$option1->setLines("[[NAME]]\n[[DESCRIPION]]");
$option1->setBarcodeType('none');
$option1->setSupportedElement('part');
$profile1->setOptions($option1);
$manager->persist($profile1);
$profile2 = new LabelProfile();
$profile2->setName('Profile 2');
$profile2->setShowInDropdown(false);
$option2 = new LabelOptions();
$option2->setLines("[[NAME]]\n[[DESCRIPION]]");
$option2->setBarcodeType('qr');
$option2->setSupportedElement('part');
$profile2->setOptions($option2);
$manager->persist($profile2);
$profile3 = new LabelProfile();
$profile3->setName('Profile 3');
$profile3->setShowInDropdown(true);
$option3 = new LabelOptions();
$option3->setLines("[[NAME]]\n[[DESCRIPION]]");
$option3->setBarcodeType('code128');
$option3->setSupportedElement('part_lot');
$profile3->setOptions($option3);
$manager->persist($profile3);
$profile4 = new LabelProfile();
$profile4->setName('Profile 4');
$profile4->setShowInDropdown(true);
$option4 = new LabelOptions();
$option4->setLines("{{ element.name }}");
$option4->setBarcodeType('code39');
$option4->setSupportedElement('part');
$option4->setLinesMode('twig');
$profile4->setOptions($option4);
$manager->persist($profile4);
$manager->flush();
}
}

View file

@ -73,6 +73,12 @@ class LabelProfile extends AttachmentContainingDBElement
return $this->options; return $this->options;
} }
public function setOptions(LabelOptions $labelOptions): LabelProfile
{
$this->options = $labelOptions;
return $this;
}
/** /**
* Get the comment of the element. * Get the comment of the element.
* @return string the comment * @return string the comment

View file

@ -119,5 +119,12 @@ class ApplicationAvailabilityFunctionalTest extends WebTestCase
//Typeahead //Typeahead
yield ['/typeahead/builtInResources/search/DIP8']; yield ['/typeahead/builtInResources/search/DIP8'];
yield ['/typeahead/tags/search/test']; yield ['/typeahead/tags/search/test'];
//Label test
yield ['/scan'];
yield ['/label/dialog'];
yield ['/label/dialog?target_id=1&target_type=part'];
yield ['/label/1/dialog'];
yield ['/label/1/dialog?target_id=1&target_type=part&generate=1'];
} }
} }

View file

@ -0,0 +1,58 @@
<?php
/**
* This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony).
*
* Copyright (C) 2019 - 2020 Jan Böhmer (https://github.com/jbtronics)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* 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/>.
*/
namespace App\Tests\Controller\AdminPages;
use App\Entity\LabelSystem\LabelProfile;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
class LabelProfileControllerTest extends AbstractAdminControllerTest
{
protected static $base_path = '/en'.'/label_profile';
protected static $entity_class = LabelProfile::class;
/**
* Tests if deleting an entity is working.
*
* @group slow
* @dataProvider deleteDataProvider
*/
public function testDeleteEntity(string $user, bool $delete): void
{
//Test read access
$client = static::createClient([], [
'PHP_AUTH_USER' => $user,
'PHP_AUTH_PW' => 'test',
]);
$client->catchExceptions(false);
if (false === $delete) {
$this->expectException(AccessDeniedException::class);
}
//Test read/list access by access /new overview page
$client->request('DELETE', static::$base_path.'/3');
//Page is redirected to '/new', when delete was successful
$this->assertSame($delete, $client->getResponse()->isRedirect(static::$base_path.'/new'));
$this->assertSame($delete, ! $client->getResponse()->isForbidden(), 'Permission Checking not working!');
}
}