Skip to content

Commit cf938cc

Browse files
authored
Merge pull request #493 from os2display/fix/deflake-relations-checksum-test
test: de-flake RelationsChecksumListenerTest media lookups
2 parents 703a66a + efa2635 commit cf938cc

4 files changed

Lines changed: 18 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
- De-flaked `RelationsChecksumListenerTest`: the media-checksum tests now use a dedicated
8+
fixture slide (`slide_media_checksum_test`) with known media and no playlist membership.
9+
Previously an unordered `findOneBy()` could return the media-less `slide_abc_notified`
10+
(crashing on the missing `media` checksum key) or a slide deleted earlier in the class by
11+
`testRemoveSlide()`, which removes a random-`createdAt` fixture slide from the shared DB.
712
- Fixed the 2.x → 3.0 screen client auto-upgrade path: ship a copy of `release.json` at the
813
deprecated `/client/release.json` location polled by 2.x clients. Without it the catch-all
914
`/client` route answered with the SPA's HTML and already-running 2.x screens never detected

fixtures/slide.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,10 @@ App\Entity\Tenant\Slide:
3737
slide_relations_checksum_test (extends slide):
3838
title: "slide_relations_checksum_test"
3939
tenant: "@tenant_xyz"
40+
# Dedicated to the media tests in RelationsChecksumListenerTest: known media
41+
# (two distinct, so one can be removed and the 'media' checksum key remains)
42+
# and on no playlist, so testRemoveSlide() can never delete it.
43+
slide_media_checksum_test (extends slide):
44+
title: "slide_media_checksum_test"
45+
tenant: "@tenant_abc"
46+
media: ["@media_abc_1", "@media_abc_2"]

tests/Api/SlidesTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function testGetCollection(): void
2222
'@context' => '/contexts/Slide',
2323
'@id' => '/v2/slides',
2424
'@type' => 'hydra:Collection',
25-
'hydra:totalItems' => 61,
25+
'hydra:totalItems' => 62,
2626
'hydra:view' => [
2727
'@id' => '/v2/slides?itemsPerPage=10&page=1',
2828
'@type' => 'hydra:PartialCollectionView',

tests/EventListener/RelationsChecksumListenerTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,8 @@ public function testPersistSlide(): void
210210

211211
public function testUpdateMedia(): void
212212
{
213-
$tenant = $this->em->getRepository(Tenant::class)->findOneBy(['tenantKey' => 'ABC']);
214213
/** @var Tenant\Slide $slide */
215-
$slide = $this->em->getRepository(Tenant\Slide::class)->findOneBy(['tenant' => $tenant]);
214+
$slide = $this->em->getRepository(Tenant\Slide::class)->findOneBy(['title' => 'slide_media_checksum_test']);
216215

217216
$before = $slide->getRelationsChecksum()['media'];
218217

@@ -527,7 +526,7 @@ public function testAddMediaToSlideUpdatesChecksum(): void
527526
{
528527
$tenant = $this->em->getRepository(Tenant::class)->findOneBy(['tenantKey' => 'ABC']);
529528
/** @var Tenant\Slide $slide */
530-
$slide = $this->em->getRepository(Tenant\Slide::class)->findOneBy(['tenant' => $tenant]);
529+
$slide = $this->em->getRepository(Tenant\Slide::class)->findOneBy(['title' => 'slide_media_checksum_test']);
531530
$beforeChecksum = $slide->getRelationsChecksum()['media'];
532531

533532
// Find a media not already on this slide
@@ -553,9 +552,8 @@ public function testAddMediaToSlideUpdatesChecksum(): void
553552

554553
public function testRemoveMediaFromSlideUpdatesChecksum(): void
555554
{
556-
$tenant = $this->em->getRepository(Tenant::class)->findOneBy(['tenantKey' => 'ABC']);
557555
/** @var Tenant\Slide $slide */
558-
$slide = $this->em->getRepository(Tenant\Slide::class)->findOneBy(['tenant' => $tenant]);
556+
$slide = $this->em->getRepository(Tenant\Slide::class)->findOneBy(['title' => 'slide_media_checksum_test']);
559557
$this->assertGreaterThan(0, $slide->getMedia()->count());
560558

561559
$beforeChecksum = $slide->getRelationsChecksum()['media'];
@@ -566,6 +564,8 @@ public function testRemoveMediaFromSlideUpdatesChecksum(): void
566564
$this->em->flush();
567565

568566
$this->em->refresh($slide);
567+
// The fixture slide has two media, so one remains after the removal and
568+
// the 'media' checksum key still exists.
569569
$this->assertNotEquals($beforeChecksum, $slide->getRelationsChecksum()['media']);
570570
$this->assertFalse($slide->isChanged());
571571
}

0 commit comments

Comments
 (0)