Skip to content

Commit 5ee6c9c

Browse files
authored
Merge pull request #223 from os2display/feature/fix-tests
Fixed broken tests
2 parents 59ef26c + 0308a8a commit 5ee6c9c

11 files changed

+98
-24
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
- [#223](https://github.com/os2display/display-api-service/pull/223)
8+
- Added explicit fixtures to avoid false negatives in the test suite
79
- [#219](https://github.com/os2display/display-api-service/pull/219)
810
- Fixed psalm, test, coding standards and updated api spec.
911

fixtures/feed.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,10 @@ App\Entity\Tenant\Feed:
1616
id: '<ulid($createdAt)>'
1717
configuration:
1818
feeds: [12345]
19+
feed_relations_checksum_test:
20+
feedSource: '@feed_source_relations_checksum_test'
21+
slide: '@slide_relations_checksum_test'
22+
tenant: '@tenant_xyz'
23+
createdAt (unique): '<dateTimeBetween("-2 years", "-2 days")>'
24+
modifiedAt: '<dateTimeBetween($createdAt, "-1 days")>'
25+
id: '<ulid($createdAt)>'

fixtures/feed_source.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,6 @@ App\Entity\Tenant\FeedSource:
2121
token: '1234567890'
2222
supportedFeedOutputType: 'instagram'
2323
tenant: '@tenant_abc'
24+
feed_source_relations_checksum_test (extends feed):
25+
title: 'feed_source_relations_checksum_test'
26+
tenant: '@tenant_xyz'

fixtures/playlist.yaml

+11
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,14 @@ App\Entity\Tenant\Playlist:
6464
tenants:
6565
- '@tenant_xyz'
6666
tenant: '@tenant_def'
67+
68+
playlist_relations_checksum_test (extends playlist):
69+
title: 'playlist_relations_checksum_test'
70+
isCampaign: true
71+
playlistSlides:
72+
- '@playlist_slide_relations_checksum_test'
73+
tenant: '@tenant_xyz'
74+
75+
playlist_screen_test_update (extends playlist):
76+
title: 'playlist_screen_test_update'
77+
tenant: '@tenant_xyz'

fixtures/playlist_screen_region.yaml

+10-5
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,23 @@ App\Entity\Tenant\PlaylistScreenRegion:
1111
id: '<ulid($createdAt)>'
1212

1313
playlist_screen_region_abc_1 (extends playlist_screen_region):
14-
playlist: '@playlist_abc_*'
14+
playlist: '@playlist_abc_1'
1515
screen: '@screen_abc_1'
1616
tenant: '@tenant_abc'
1717
playlist_screen_region_abc_2 (extends playlist_screen_region):
18-
playlist: '@playlist_abc_*'
18+
playlist: '@playlist_abc_2'
1919
screen: '@screen_abc_2'
2020
tenant: '@tenant_abc'
2121
playlist_screen_region_abc_3 (extends playlist_screen_region):
22-
playlist: '@playlist_abc_*'
22+
playlist: '@playlist_abc_3'
2323
screen: '@screen_abc_3'
2424
tenant: '@tenant_abc'
2525
playlist_screen_region_abc_4 (extends playlist_screen_region):
26-
playlist: '@playlist_abc_*'
26+
playlist: '@playlist_abc_4'
2727
screen: '@screen_abc_4'
2828
tenant: '@tenant_abc'
2929
playlist_screen_region_abc_5 (extends playlist_screen_region):
30-
playlist: '@playlist_abc_*'
30+
playlist: '@playlist_abc_5'
3131
screen: '@screen_abc_5'
3232
tenant: '@tenant_abc'
3333

@@ -51,3 +51,8 @@ App\Entity\Tenant\PlaylistScreenRegion:
5151
playlist: '@playlist_xyz_*'
5252
screen: '@screen_xyz_5'
5353
tenant: '@tenant_xyz'
54+
playlist_screen_region_screen_update (extends playlist_screen_region):
55+
playlist: '@playlist_screen_test_update'
56+
screen: '@screen_test_update'
57+
tenant: '@tenant_xyz'
58+
region: '@screen_layout_region_full'

fixtures/playlist_slide.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,7 @@ App\Entity\Tenant\PlaylistSlide:
3030
playlist: '@playlist_def_shared_with_abc'
3131
slide: '@slide_def_shared_to_abc'
3232
tenant: '@tenant_def'
33+
playlist_slide_relations_checksum_test (extends playlist_slide):
34+
playlist: '@playlist_relations_checksum_test'
35+
slide: '@slide_relations_checksum_test'
36+
tenant: '@tenant_xyz'

fixtures/screen.yaml

+9
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,12 @@ App\Entity\Tenant\Screen:
3535
title: 'screen_xyz_<current()>'
3636
screenLayout: "@screen_layout_id_full"
3737
tenant: "@tenant_xyz"
38+
screen_relations_checksum_test (extends screen):
39+
title: 'screen_relations_checksum_test'
40+
screenCampaigns: ['@screen_campaign_relations_checksum_test']
41+
screenLayout: "@screen_layout_id_full"
42+
tenant: "@tenant_xyz"
43+
screen_test_update (extends screen):
44+
title: 'screen_test_update'
45+
screenLayout: "@screen_layout_id_full"
46+
tenant: "@tenant_xyz"

fixtures/screen_campaign.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,7 @@ App\Entity\Tenant\ScreenCampaign:
1717
screen: '@screen_xyz_*'
1818
campaign: '@playlist_xyz_*'
1919
tenant: '@tenant_xyz'
20+
screen_campaign_relations_checksum_test (extends screen_campaign):
21+
screen: '@screen_relations_checksum_test'
22+
campaign: '@playlist_relations_checksum_test'
23+
tenant: '@tenant_xyz'

fixtures/slide.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,6 @@ App\Entity\Tenant\Slide:
3434
content:
3535
maxEntries: 6
3636
tenant: '@tenant_abc'
37+
slide_relations_checksum_test (extends slide):
38+
title: 'slide_relations_checksum_test'
39+
tenant: '@tenant_xyz'

tests/Api/ScreensTest.php

+36-10
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,12 @@ public function testCreateScreen(): void
152152
'orientation' => 'vertical',
153153
'inScreenGroups' => '/v2/screens/'.$response->toArray()['id'].'/screen-groups',
154154
'enableColorSchemeChange' => true,
155-
'regions' => ['/v2/screens/'.$response->toArray()['id'].'/regions/'.$regionUlidLeft.'/playlists', '/v2/screens/'.$response->toArray()['id'].'/regions/'.$regionUlidRight.'/playlists'],
156155
]);
156+
157+
$regions = $response->toArray()['regions'];
158+
$this->assertTrue(in_array('/v2/screens/'.$response->toArray()['id'].'/regions/'.$regionUlidLeft.'/playlists', $regions));
159+
$this->assertTrue(in_array('/v2/screens/'.$response->toArray()['id'].'/regions/'.$regionUlidRight.'/playlists', $regions));
160+
157161
$this->assertMatchesRegularExpression('@^/v\d/\w+/([A-Za-z0-9]{26})$@', $response->toArray()['@id']);
158162

159163
$this->assertMatchesResourceItemJsonSchema(Screen::class);
@@ -183,18 +187,18 @@ public function testCreateInvalidScreen(): void
183187

184188
public function testUpdateScreen(): void
185189
{
190+
$client = $this->getAuthenticatedClient('ROLE_ADMIN');
191+
186192
$playlistScreenRegionRepository = $this->entityManager->getRepository(PlaylistScreenRegion::class);
187193
$playlistScreenRegionCountBefore = $playlistScreenRegionRepository->count([]);
188194

189-
$playlistIri = $this->findIriBy(Playlist::class, ['title' => 'playlist_abc_3']);
195+
$playlistIri = $this->findIriBy(Playlist::class, ['title' => 'playlist_screen_test_update']);
190196
$playlistUlid = $this->iriHelperUtils->getUlidFromIRI($playlistIri);
191197
$regionIri = $this->findIriBy(ScreenLayoutRegions::class, ['title' => 'full']);
192198
$regionUlid = $this->iriHelperUtils->getUlidFromIRI($regionIri);
199+
$screenIri = $this->findIriBy(Screen::class, ['title' => 'screen_test_update']);
193200

194-
$client = $this->getAuthenticatedClient('ROLE_ADMIN');
195-
$iri = $this->findIriBy(Screen::class, ['title' => 'screen_abc_3']);
196-
197-
$response = $client->request('PUT', $iri, [
201+
$client->request('PUT', $screenIri, [
198202
'json' => [
199203
'title' => 'Updated title',
200204
'regions' => [['playlists' => [['id' => $playlistUlid, 'weight' => 0]], 'regionId' => $regionUlid]],
@@ -207,14 +211,16 @@ public function testUpdateScreen(): void
207211
$this->assertResponseIsSuccessful();
208212
$this->assertJsonContains([
209213
'@type' => 'Screen',
210-
'@id' => $iri,
214+
'@id' => $screenIri,
211215
'title' => 'Updated title',
212-
'regions' => ['/v2/screens/'.$response->toArray()['id'].'/regions/'.$regionUlid.'/playlists'],
216+
'regions' => [$screenIri.'/regions/'.$regionUlid.'/playlists'],
213217
]);
214218
$playlistScreenRegionCountAfter = $playlistScreenRegionRepository->count([]);
215219
$this->assertEquals($playlistScreenRegionCountBefore, $playlistScreenRegionCountAfter, 'PlaylistScreenRegion count should not change');
216220

217-
$response = $client->request('PUT', $iri, [
221+
// Test that PUT without regions property will not change playlist screen regions.
222+
223+
$client->request('PUT', $screenIri, [
218224
'json' => [
219225
'title' => 'Updated title 2',
220226
],
@@ -225,11 +231,31 @@ public function testUpdateScreen(): void
225231

226232
$this->assertResponseIsSuccessful();
227233
$this->assertJsonContains([
228-
'@id' => $iri,
234+
'@id' => $screenIri,
229235
'title' => 'Updated title 2',
230236
]);
231237
$playlistScreenRegionCountAfter = $playlistScreenRegionRepository->count([]);
232238
$this->assertEquals($playlistScreenRegionCountBefore, $playlistScreenRegionCountAfter, 'PlaylistScreenRegion count should not change');
239+
240+
// Test that region can be cleared.
241+
242+
$client->request('PUT', $screenIri, [
243+
'json' => [
244+
'title' => 'Updated title 3',
245+
'regions' => [['playlists' => [], 'regionId' => $regionUlid]],
246+
],
247+
'headers' => [
248+
'Content-Type' => 'application/ld+json',
249+
],
250+
]);
251+
252+
$this->assertResponseIsSuccessful();
253+
$this->assertJsonContains([
254+
'@id' => $screenIri,
255+
'title' => 'Updated title 3',
256+
]);
257+
$playlistScreenRegionCountAfter = $playlistScreenRegionRepository->count([]);
258+
$this->assertEquals($playlistScreenRegionCountBefore - 1, $playlistScreenRegionCountAfter, 'PlaylistScreenRegion count should go 1 down');
233259
}
234260

235261
public function testDeleteScreen(): void

tests/EventListener/RelationsChecksumListenerTest.php

+9-9
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,18 @@ public function testVersion(): void
5050
public function testRelationsChecksumPropagation(): void
5151
{
5252
/** @var Tenant\Screen $screen */
53-
$screen = $this->em->getRepository(Tenant\Screen::class)->findOneBy(['title' => 'screen_abc_1']);
53+
$screen = $this->em->getRepository(Tenant\Screen::class)->findOneBy(['title' => 'screen_relations_checksum_test']);
5454
$screenChecksums = $screen->getRelationsChecksum();
5555

56-
/** @var Tenant\ScreenGroupCampaign $campaign */
57-
$campaign = $screen->getScreenCampaigns()->first();
58-
$campaignChecksums = $campaign->getRelationsChecksum();
56+
/** @var Tenant\ScreenCampaign $screenCampaign */
57+
$screenCampaign = $screen->getScreenCampaigns()->first();
58+
$screenCampaignChecksums = $screenCampaign->getRelationsChecksum();
5959

60-
$playlist = $campaign->getCampaign();
60+
$playlist = $screenCampaign->getCampaign();
6161
$playlistChecksums = $playlist->getRelationsChecksum();
6262

6363
/** @var Tenant\Slide $slide */
64-
$slide = $this->em->getRepository(Tenant\Slide::class)->findOneBy(['title' => 'slide_abc_1']);
64+
$slide = $playlist->getPlaylistSlides()->first()->getSlide();
6565
$slideChecksums = $slide->getRelationsChecksum();
6666

6767
$feed = $slide->getFeed();
@@ -83,9 +83,9 @@ public function testRelationsChecksumPropagation(): void
8383
$this->assertNotEquals($playlistChecksums['slides'], $playlist->getRelationsChecksum()['slides']);
8484
$this->assertFalse($playlist->isChanged());
8585

86-
$this->em->refresh($campaign);
87-
$this->assertNotEquals($campaignChecksums['campaign'], $campaign->getRelationsChecksum()['campaign']);
88-
$this->assertFalse($campaign->isChanged());
86+
$this->em->refresh($screenCampaign);
87+
$this->assertNotEquals($screenCampaignChecksums['campaign'], $screenCampaign->getRelationsChecksum()['campaign']);
88+
$this->assertFalse($screenCampaign->isChanged());
8989

9090
$this->em->refresh($screen);
9191
$this->assertNotEquals($screenChecksums['campaigns'], $screen->getRelationsChecksum()['campaigns']);

0 commit comments

Comments
 (0)