Code Duplication    Length = 56-56 lines in 3 locations

tests/Doctrine/Tests/ORM/Hydration/ObjectHydratorTest.php 3 locations

@@ 198-253 (lines=56) @@
195
     * SELECT PARTIAL u.{id, name} AS user, PARTIAL a.{id, topic}
196
     *   FROM Doctrine\Tests\Models\CMS\CmsUser u, Doctrine\Tests\Models\CMS\CmsArticle a
197
     */
198
    public function testSimpleMultipleRootEntityQueryWithAliasedUserEntity()
199
    {
200
        $rsm = new ResultSetMapping;
201
        $rsm->addEntityResult(CmsUser::class, 'u', 'user');
202
        $rsm->addEntityResult(CmsArticle::class, 'a');
203
        $rsm->addFieldResult('u', 'u__id', 'id');
204
        $rsm->addFieldResult('u', 'u__name', 'name');
205
        $rsm->addFieldResult('a', 'a__id', 'id');
206
        $rsm->addFieldResult('a', 'a__topic', 'topic');
207
208
        // Faked result set
209
        $resultSet = [
210
            [
211
                'u__id' => '1',
212
                'u__name' => 'romanb',
213
                'a__id' => '1',
214
                'a__topic' => 'Cool things.'
215
            ],
216
            [
217
                'u__id' => '2',
218
                'u__name' => 'jwage',
219
                'a__id' => '2',
220
                'a__topic' => 'Cool things II.'
221
            ]
222
        ];
223
224
        $stmt     = new HydratorMockStatement($resultSet);
225
        $hydrator = new \Doctrine\ORM\Internal\Hydration\ObjectHydrator($this->em);
226
        $result   = $hydrator->hydrateAll($stmt, $rsm, [Query::HINT_FORCE_PARTIAL_LOAD => true]);
227
228
        self::assertEquals(4, count($result));
229
230
        self::assertArrayHasKey('user', $result[0]);
231
        self::assertArrayNotHasKey(0, $result[0]);
232
        self::assertInstanceOf(CmsUser::class, $result[0]['user']);
233
        self::assertEquals(1, $result[0]['user']->id);
234
        self::assertEquals('romanb', $result[0]['user']->name);
235
236
        self::assertArrayHasKey(0, $result[1]);
237
        self::assertArrayNotHasKey('user', $result[1]);
238
        self::assertInstanceOf(CmsArticle::class, $result[1][0]);
239
        self::assertEquals(1, $result[1][0]->id);
240
        self::assertEquals('Cool things.', $result[1][0]->topic);
241
242
        self::assertArrayHasKey('user', $result[2]);
243
        self::assertArrayNotHasKey(0, $result[2]);
244
        self::assertInstanceOf(CmsUser::class, $result[2]['user']);
245
        self::assertEquals(2, $result[2]['user']->id);
246
        self::assertEquals('jwage', $result[2]['user']->name);
247
248
        self::assertArrayHasKey(0, $result[3]);
249
        self::assertArrayNotHasKey('user', $result[3]);
250
        self::assertInstanceOf(CmsArticle::class, $result[3][0]);
251
        self::assertEquals(2, $result[3][0]->id);
252
        self::assertEquals('Cool things II.', $result[3][0]->topic);
253
    }
254
255
    /**
256
     * SELECT PARTIAL u.{id, name}, PARTIAL a.{id, topic} AS article
@@ 259-314 (lines=56) @@
256
     * SELECT PARTIAL u.{id, name}, PARTIAL a.{id, topic} AS article
257
     *   FROM Doctrine\Tests\Models\CMS\CmsUser u, Doctrine\Tests\Models\CMS\CmsArticle a
258
     */
259
    public function testSimpleMultipleRootEntityQueryWithAliasedArticleEntity()
260
    {
261
        $rsm = new ResultSetMapping;
262
        $rsm->addEntityResult(CmsUser::class, 'u');
263
        $rsm->addEntityResult(CmsArticle::class, 'a', 'article');
264
        $rsm->addFieldResult('u', 'u__id', 'id');
265
        $rsm->addFieldResult('u', 'u__name', 'name');
266
        $rsm->addFieldResult('a', 'a__id', 'id');
267
        $rsm->addFieldResult('a', 'a__topic', 'topic');
268
269
        // Faked result set
270
        $resultSet = [
271
            [
272
                'u__id' => '1',
273
                'u__name' => 'romanb',
274
                'a__id' => '1',
275
                'a__topic' => 'Cool things.'
276
            ],
277
            [
278
                'u__id' => '2',
279
                'u__name' => 'jwage',
280
                'a__id' => '2',
281
                'a__topic' => 'Cool things II.'
282
            ]
283
        ];
284
285
        $stmt     = new HydratorMockStatement($resultSet);
286
        $hydrator = new \Doctrine\ORM\Internal\Hydration\ObjectHydrator($this->em);
287
        $result   = $hydrator->hydrateAll($stmt, $rsm, [Query::HINT_FORCE_PARTIAL_LOAD => true]);
288
289
        self::assertEquals(4, count($result));
290
291
        self::assertArrayHasKey(0, $result[0]);
292
        self::assertArrayNotHasKey('article', $result[0]);
293
        self::assertInstanceOf(CmsUser::class, $result[0][0]);
294
        self::assertEquals(1, $result[0][0]->id);
295
        self::assertEquals('romanb', $result[0][0]->name);
296
297
        self::assertArrayHasKey('article', $result[1]);
298
        self::assertArrayNotHasKey(0, $result[1]);
299
        self::assertInstanceOf(CmsArticle::class, $result[1]['article']);
300
        self::assertEquals(1, $result[1]['article']->id);
301
        self::assertEquals('Cool things.', $result[1]['article']->topic);
302
303
        self::assertArrayHasKey(0, $result[2]);
304
        self::assertArrayNotHasKey('article', $result[2]);
305
        self::assertInstanceOf(CmsUser::class, $result[2][0]);
306
        self::assertEquals(2, $result[2][0]->id);
307
        self::assertEquals('jwage', $result[2][0]->name);
308
309
        self::assertArrayHasKey('article', $result[3]);
310
        self::assertArrayNotHasKey(0, $result[3]);
311
        self::assertInstanceOf(CmsArticle::class, $result[3]['article']);
312
        self::assertEquals(2, $result[3]['article']->id);
313
        self::assertEquals('Cool things II.', $result[3]['article']->topic);
314
    }
315
316
    /**
317
     * SELECT PARTIAL u.{id, name} AS user, PARTIAL a.{id, topic} AS article
@@ 320-375 (lines=56) @@
317
     * SELECT PARTIAL u.{id, name} AS user, PARTIAL a.{id, topic} AS article
318
     *   FROM Doctrine\Tests\Models\CMS\CmsUser u, Doctrine\Tests\Models\CMS\CmsArticle a
319
     */
320
    public function testSimpleMultipleRootEntityQueryWithAliasedEntities()
321
    {
322
        $rsm = new ResultSetMapping;
323
        $rsm->addEntityResult(CmsUser::class, 'u', 'user');
324
        $rsm->addEntityResult(CmsArticle::class, 'a', 'article');
325
        $rsm->addFieldResult('u', 'u__id', 'id');
326
        $rsm->addFieldResult('u', 'u__name', 'name');
327
        $rsm->addFieldResult('a', 'a__id', 'id');
328
        $rsm->addFieldResult('a', 'a__topic', 'topic');
329
330
        // Faked result set
331
        $resultSet = [
332
            [
333
                'u__id' => '1',
334
                'u__name' => 'romanb',
335
                'a__id' => '1',
336
                'a__topic' => 'Cool things.'
337
            ],
338
            [
339
                'u__id' => '2',
340
                'u__name' => 'jwage',
341
                'a__id' => '2',
342
                'a__topic' => 'Cool things II.'
343
            ]
344
        ];
345
346
        $stmt     = new HydratorMockStatement($resultSet);
347
        $hydrator = new \Doctrine\ORM\Internal\Hydration\ObjectHydrator($this->em);
348
        $result   = $hydrator->hydrateAll($stmt, $rsm, [Query::HINT_FORCE_PARTIAL_LOAD => true]);
349
350
        self::assertEquals(4, count($result));
351
352
        self::assertArrayHasKey('user', $result[0]);
353
        self::assertArrayNotHasKey('article', $result[0]);
354
        self::assertInstanceOf(CmsUser::class, $result[0]['user']);
355
        self::assertEquals(1, $result[0]['user']->id);
356
        self::assertEquals('romanb', $result[0]['user']->name);
357
358
        self::assertArrayHasKey('article', $result[1]);
359
        self::assertArrayNotHasKey('user', $result[1]);
360
        self::assertInstanceOf(CmsArticle::class, $result[1]['article']);
361
        self::assertEquals(1, $result[1]['article']->id);
362
        self::assertEquals('Cool things.', $result[1]['article']->topic);
363
364
        self::assertArrayHasKey('user', $result[2]);
365
        self::assertArrayNotHasKey('article', $result[2]);
366
        self::assertInstanceOf(CmsUser::class, $result[2]['user']);
367
        self::assertEquals(2, $result[2]['user']->id);
368
        self::assertEquals('jwage', $result[2]['user']->name);
369
370
        self::assertArrayHasKey('article', $result[3]);
371
        self::assertArrayNotHasKey('user', $result[3]);
372
        self::assertInstanceOf(CmsArticle::class, $result[3]['article']);
373
        self::assertEquals(2, $result[3]['article']->id);
374
        self::assertEquals('Cool things II.', $result[3]['article']->topic);
375
    }
376
377
    /**
378
     * SELECT PARTIAL u.{id, status}, COUNT(p.phonenumber) numPhones