Skip to content

Commit 0ccc53d

Browse files
cubehouseclaude
andauthored
feat(dlp): surface 'Live Your Story' Castle Stage show (#235)
Disney flags P1GS93 (Live Your Story - a Disney Princess Celebration) 'Hide from the Service', so it was filtered out. Add it to VISIBILITY_EXCEPTIONS to surface it as a SHOW, matching the existing override pattern for Frozen Ever After / Tangled Spin. Adds a regression test covering the exception and the control (other hidden shows stay dropped). Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
1 parent 302219e commit 0ccc53d

2 files changed

Lines changed: 53 additions & 0 deletions

File tree

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import {describe, it, expect, vi, beforeEach} from 'vitest';
2+
import {DisneylandParis} from '../disneylandparis.js';
3+
4+
/**
5+
* A hidden POI is normally dropped by filterPOIEntities (HIDE_RULES). Entities
6+
* listed in VISIBILITY_EXCEPTIONS bypass that. P1GS93 ("Live Your Story") is a
7+
* real Castle Stage show Disney flags "Hide from the Service", so it must be
8+
* force-surfaced while other hidden shows stay filtered.
9+
*/
10+
function stubbedPark(): DisneylandParis {
11+
const park = new DisneylandParis();
12+
vi.spyOn(park as any, 'getPOIData').mockResolvedValue({
13+
ThemePark: [{id: 'P1', name: 'Disneyland Park', type: 'ThemePark'}],
14+
Entertainment: [
15+
{
16+
id: 'P1GS93',
17+
name: 'Live Your Story – a Disney Princess Celebration',
18+
type: 'Entertainment',
19+
subType: 'Stage Show',
20+
location: {id: 'P1'},
21+
hideFunctionality: 'Hide from the Service',
22+
},
23+
{
24+
// Control: hidden Stage Show NOT in VISIBILITY_EXCEPTIONS — must stay dropped.
25+
id: 'P1G107',
26+
name: 'Disney Music Hits Concert',
27+
type: 'Entertainment',
28+
subType: 'Stage Show',
29+
location: {id: 'P1'},
30+
hideFunctionality: 'Hide from Web List + Mobile App',
31+
},
32+
],
33+
});
34+
return park;
35+
}
36+
37+
describe('DLP visibility exceptions', () => {
38+
beforeEach(() => vi.restoreAllMocks());
39+
40+
it('surfaces P1GS93 (Live Your Story) despite its "Hide from the Service" flag', async () => {
41+
const entities = await stubbedPark().getEntities();
42+
const lys = entities.find((e) => e.id === 'P1GS93');
43+
expect(lys).toBeDefined();
44+
expect(lys?.entityType).toBe('SHOW');
45+
expect((lys as any)?.parkId).toBe('P1');
46+
});
47+
48+
it('still drops other hidden shows not in the exception set', async () => {
49+
const entities = await stubbedPark().getEntities();
50+
expect(entities.find((e) => e.id === 'P1G107')).toBeUndefined();
51+
});
52+
});

src/parks/dlp/disneylandparis.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const IGNORE_ENTITIES = new Set([
3434
const VISIBILITY_EXCEPTIONS = new Set([
3535
'P2EA00', // Frozen Ever After
3636
'P2DA00', // Tangled Spin
37+
'P1GS93', // Live Your Story – a Disney Princess Celebration (Castle Stage; Disney flags it "Hide from the Service")
3738
]);
3839

3940
/** Hide rules that exclude entities from the POI list */

0 commit comments

Comments
 (0)