get(ToolChain::class); $tool = $toolChain->getToolFromName('global'); $this->assertInstanceOf(AbstractTool::class, $tool); $this->assertInstanceOf(GlobalTool::class, $tool); } public function testResourceType(): void { self::bootKernel(); $toolChain = self::getContainer()->get(ToolChain::class); $tool = $toolChain->getToolFromName('global'); $entity = $tool->getEntityByResourceType('urls'); $this->assertSame($entity, AccessUrl::class); $typeName = 'urls'; $type = $tool->getTypeNameByEntity(AccessUrl::class); $this->assertSame($typeName, $type); $type = $toolChain->getResourceTypeNameByEntity(AccessUrl::class); $this->assertSame($typeName, $type); $typeName = 'files'; $tool = $toolChain->getToolFromName('user'); $type = $tool->getTypeNameByEntity(PersonalFile::class); $this->assertSame($typeName, $type); $type = $toolChain->getResourceTypeNameByEntity(PersonalFile::class); $this->assertSame($typeName, $type); $type = $toolChain->getResourceTypeNameByEntity('test'); $this->assertNull($type); } public function testSetToolPermissions(): void { self::bootKernel(); $toolChain = self::getContainer()->get(ToolChain::class); $em = $this->getEntityManager(); $toolRepo = $em->getRepository(Tool::class); $agendaTool = $toolRepo->findOneBy(['title' => 'agenda']); $this->assertNotNull($agendaTool); $toolChain->setToolPermissions($agendaTool); } public function testGetTools(): void { self::bootKernel(); $toolChain = self::getContainer()->get(ToolChain::class); $tools = $toolChain->getTools(); foreach ($tools as $tool) { $name = $tool->getTitle(); $this->assertNotEmpty($name); $link = $tool->getLink(); $this->assertNotEmpty($tool->getCategory()); $this->assertNotEmpty($tool->getIcon()); $this->assertNotEmpty($link, sprintf('Link for tool %s is empty', $name)); $types = $tool->getResourceTypes(); // $icon = $tool->getIcon(); // $this->assertNotEmpty($icon, sprintf("Icons for tool %s doesnt exists", $name)); // $em = $this->getEntityManager(); /*if (!empty($types)) { foreach ($types as $entityName) { $repo = $em->getRepository($entityName); //var_dump($repo->getClassName()); $msg = sprintf( 'Error in tool %s, entity: %s repo: %s not instance of ResourceRepository', $name, $entityName, \get_class($repo) ); $this->assertInstanceOf(ResourceRepository::class, $repo, $msg); } }*/ } $this->assertTrue(\count($tools) > 0); } public function testCreateTools(): void { self::bootKernel(); $toolChain = self::getContainer()->get(ToolChain::class); $countBefore = \count($toolChain->getTools()); $toolChain->createTools(); $tools = $toolChain->getTools(); $this->assertCount($countBefore, $tools); $em = $this->getEntityManager(); // Delete BranchSync $branchRepo = $em->getRepository(BranchSync::class); $items = $branchRepo->findAll(); foreach ($items as $item) { $em->remove($item); } $em->flush(); // Delete AccessUrl $urlRepo = $em->getRepository(AccessUrl::class); $items = $urlRepo->findAll(); foreach ($items as $item) { $em->remove($item); } $em->flush(); $resourceTypeRepo = $em->getRepository(ResourceType::class); $items = $resourceTypeRepo->findAll(); foreach ($items as $item) { $em->remove($item); } $em->flush(); $items = $resourceTypeRepo->findAll(); $this->assertSame([], $items); $toolChain = self::getContainer()->get(ToolChain::class); $toolChain->createTools(); $items = $resourceTypeRepo->findAll(); $this->assertNotEmpty($items); $resourceType = (new ResourceType()) ->setTitle('test') ; $this->assertHasNoEntityViolations($resourceType); $em->persist($resourceType); $collection = new ArrayCollection(); $collection->add($resourceType); $tool = (new Tool()) ->setTitle('lasagna') ->setResourceTypes($collection) ; $this->assertHasNoEntityViolations($tool); $em->persist($tool); $em->flush(); $this->assertNotNull($resourceType->getId()); } }