fix(#176): inject device variables into recipes
Some checks failed
tests / ci (push) Has been cancelled

This commit is contained in:
Benjamin Nussbaum 2026-02-03 22:21:35 +01:00
parent 7adbcc104e
commit 2b919a193d
3 changed files with 47 additions and 2 deletions

View file

@ -1,8 +1,10 @@
<?php
use App\Models\Device;
use App\Models\Playlist;
use App\Models\PlaylistItem;
use App\Models\Plugin;
use App\Models\User;
test('playlist item belongs to playlist', function (): void {
$playlist = Playlist::factory()->create();
@ -208,3 +210,39 @@ test('playlist item can create mashup', function (): void {
->is_active->toBeTrue()
->order->toBe($order);
});
test('playlist item mashup render includes device context in liquid (trmnl.device.friendly_id)', function (): void {
$user = User::factory()->create();
$device = Device::factory()->create([
'user_id' => $user->id,
'friendly_id' => 'my-kitchen-display',
]);
$playlist = Playlist::factory()->create(['device_id' => $device->id]);
$plugin1 = Plugin::factory()->create([
'user_id' => $user->id,
'plugin_type' => 'recipe',
'markup_language' => 'liquid',
'render_markup' => '{{ trmnl.device.friendly_id }}',
]);
$plugin2 = Plugin::factory()->create([
'user_id' => $user->id,
'plugin_type' => 'recipe',
'markup_language' => 'liquid',
'render_markup' => 'slot2:{{ trmnl.device.friendly_id }}',
]);
$playlistItem = PlaylistItem::createMashup(
$playlist,
'1Lx1R',
[$plugin1->id, $plugin2->id],
'Device context mashup',
1
);
$markup = $playlistItem->render($device);
expect($markup)
->toContain('my-kitchen-display')
->toContain('slot2:my-kitchen-display');
});