GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( a48bd8...83d092 )
by joseph
16:18 queued 18s
created

Entity/Savers/AbstractEntitySpecificSaverTest.php (1 issue)

Severity
1
<?php declare(strict_types=1);
2
3
namespace EdmondsCommerce\DoctrineStaticMeta\Tests\Large\D\Entity\Savers;
4
5
use EdmondsCommerce\DoctrineStaticMeta\CodeGeneration\NamespaceHelper;
6
use EdmondsCommerce\DoctrineStaticMeta\Entity\Repositories\AbstractEntityRepository;
7
use EdmondsCommerce\DoctrineStaticMeta\Entity\Savers\EntitySaver;
8
use EdmondsCommerce\DoctrineStaticMeta\Entity\Savers\EntitySaverFactory;
9
use EdmondsCommerce\DoctrineStaticMeta\Entity\Savers\EntitySaverInterface;
10
use EdmondsCommerce\DoctrineStaticMeta\Entity\Testing\EntityGenerator\TestEntityGeneratorFactory;
11
use EdmondsCommerce\DoctrineStaticMeta\Tests\Assets\AbstractLargeTest;
12
use EdmondsCommerce\DoctrineStaticMeta\Tests\Assets\AbstractTest;
13
use EdmondsCommerce\DoctrineStaticMeta\Tests\Assets\TestCodeGenerator;
14
15
/**
16
 * Class AbstractEntitySpecificSaverTest
17
 *
18
 * @package EdmondsCommerce\DoctrineStaticMeta\Entity\Savers
19
 * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
20
 * @large
21
 * @covers  \EdmondsCommerce\DoctrineStaticMeta\Entity\Savers\AbstractEntitySpecificSaver
22
 */
23
class AbstractEntitySpecificSaverTest extends AbstractLargeTest
24
{
25
26
    public const WORK_DIR = AbstractTest::VAR_PATH .
27
                            '/' .
28
                            self::TEST_TYPE_LARGE .
29
                            '/AbstractEntitySpecificSaverTest';
30
31
    private const TEST_ENTITIES = [
32
        self::TEST_ENTITIES_ROOT_NAMESPACE . TestCodeGenerator::TEST_ENTITY_LARGE_DATA,
33
        self::TEST_ENTITIES_ROOT_NAMESPACE . TestCodeGenerator::TEST_ENTITY_NAME_SPACING_ANOTHER_CLIENT,
34
    ];
35
    protected static $buildOnce = true;
36
    /**
37
     * @var EntitySaverFactory
38
     */
39
    private $saverFactory;
40
    /**
41
     * @var array
42
     */
43
    private $generatedEntities;
44
45
    public function setup()
46
    {
47
        parent::setUp();
48
        if (false === self::$built) {
49
            $this->getTestCodeGenerator()
50
                 ->copyTo(self::WORK_DIR);
51
            self::$built = true;
52
        }
53
        $this->setupCopiedWorkDirAndCreateDatabase();
54
        $this->saverFactory = new EntitySaverFactory(
55
            $this->getEntityManager(),
56
            new EntitySaver($this->getEntityManager()),
57
            new NamespaceHelper()
58
        );
59
        foreach (self::TEST_ENTITIES as $entityFqn) {
60
            $entityFqn                           = $this->getCopiedFqn($entityFqn);
61
            $this->generatedEntities[$entityFqn] =
62
                $this->container->get(TestEntityGeneratorFactory::class)
63
                                ->createForEntityFqn($entityFqn)
64
                                ->generateEntities(10);
65
            $this->saverFactory->getSaverForEntityFqn($entityFqn)->saveAll($this->generatedEntities[$entityFqn]);
66
        }
67
    }
68
69
    public function testRemoveAll(): void
70
    {
71
        foreach (self::TEST_ENTITIES as $entityFqn) {
72
            $entityFqn = $this->getCopiedFqn($entityFqn);
73
            $saver     = $this->getEntitySpecificSaver($entityFqn);
74
            /**
75
             * @var AbstractEntityRepository $repo
76
             */
77
            $repo   = $this->getRepositoryFactory()->getRepository($entityFqn);
78
            $loaded = $repo->findAll();
79
            $saver->removeAll($loaded);
80
            $reLoaded = $this->getRepositoryFactory()->getRepository($entityFqn)->findAll();
81
            self::assertSame([], $reLoaded);
82
        }
83
    }
84
85
    protected function getEntitySpecificSaver(string $entityFqn): EntitySaverInterface
86
    {
87
        $saver = $this->saverFactory->getSaverForEntityFqn($entityFqn);
88
        if (!$saver instanceof EntitySaverInterface) {
0 ignored issues
show
$saver is always a sub-type of EdmondsCommerce\Doctrine...rs\EntitySaverInterface.
Loading history...
89
            $this->fail(
90
                '$saver for $entityFqn ' . $entityFqn . ' is not an instance of EntitySaverInterface'
91
            );
92
        }
93
94
        return $saver;
95
    }
96
97
    public function testRemove(): void
98
    {
99
        $entityFqn = $this->getCopiedFqn(current(self::TEST_ENTITIES));
100
        $saver     = $this->getEntitySpecificSaver($entityFqn);
101
        /**
102
         * @var AbstractEntityRepository $repo
103
         */
104
        $repo   = $this->getRepositoryFactory()->getRepository($entityFqn);
105
        $loaded = $repo->findAll();
106
        foreach ($loaded as $entity) {
107
            $saver->remove($entity);
108
        }
109
        $reLoaded = $repo->findAll();
110
        self::assertNotSame($loaded, $reLoaded);
111
    }
112
113
    public function testSaveAll(): void
114
    {
115
        foreach (self::TEST_ENTITIES as $entityFqn) {
116
            $entityFqn = $this->getCopiedFqn($entityFqn);
117
            $saver     = $this->getEntitySpecificSaver($entityFqn);
118
            /**
119
             * @var AbstractEntityRepository $repo
120
             */
121
            $repo                                = $this->getRepositoryFactory()->getRepository($entityFqn);
122
            $loaded                              = $repo->findAll();
123
            $this->generatedEntities[$entityFqn] = $this->cloneEntities($loaded);
124
            $dto                                 = $this->getEntityDtoFactory()
125
                                                        ->createEmptyDtoFromEntityFqn($entityFqn)
126
                                                        ->setString('name ' . microtime(true));
127
            foreach ($loaded as $entity) {
128
                $dto->setId($entity->getId());
129
                $entity->update($dto);
130
            }
131
            $saver->saveAll($loaded);
132
            $reLoaded = $this->getRepositoryFactory()->getRepository($entityFqn)->findAll();
133
            self::assertNotSame($this->generatedEntities[$entityFqn], $reLoaded);
134
        }
135
    }
136
137
    protected function cloneEntities(array $entities): array
138
    {
139
        $clones = [];
140
        foreach ($entities as $entity) {
141
            $clones[] = clone $entity;
142
        }
143
144
        return $clones;
145
    }
146
147
    public function testSave(): void
148
    {
149
        $entityFqn = $this->getCopiedFqn(self::TEST_ENTITIES[0]);
150
        $saver     = $this->getEntitySpecificSaver($entityFqn);
151
        /**
152
         * @var AbstractEntityRepository $repo
153
         */
154
        $repo                                = $this->getRepositoryFactory()->getRepository($entityFqn);
155
        $loaded                              = $repo->findAll();
156
        $this->generatedEntities[$entityFqn] = $this->cloneEntities($loaded);
157
        $dto                                 = $this->getEntityDtoFactory()
158
                                                    ->createEmptyDtoFromEntityFqn($entityFqn)
159
                                                    ->setString('name ' . microtime(true));
160
        foreach ($loaded as $entity) {
161
            $dto->setId($entity->getId());
162
            $entity->update($dto);
163
        }
164
        foreach ($loaded as $entity) {
165
            $saver->save($entity);
166
        }
167
        $reLoaded = $this->getRepositoryFactory()->getRepository($entityFqn)->findAll();
168
        self::assertNotSame($this->generatedEntities[$entityFqn], $reLoaded);
169
    }
170
}
171