feat: prefer png format on firmware versions >=1.5.2

This commit is contained in:
Benjamin Nussbaum 2025-05-10 01:39:41 +02:00
parent cc63c8cce2
commit ad5ff5d2c9
12 changed files with 215 additions and 27 deletions

View file

@ -448,9 +448,9 @@ test('authenticated user can fetch their devices', function () {
'friendly_id',
'mac_address',
'battery_voltage',
'rssi'
]
]
'rssi',
],
],
])
->assertJsonCount(2, 'data');
@ -463,9 +463,9 @@ test('authenticated user can fetch their devices', function () {
'friendly_id' => $devices[0]->friendly_id,
'mac_address' => $devices[0]->mac_address,
'battery_voltage' => 3.72,
'rssi' => -63
]
]
'rssi' => -63,
],
],
]);
});

View file

@ -0,0 +1,120 @@
<?php
use App\Models\Device;
use Illuminate\Support\Facades\Storage;
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);
beforeEach(function () {
Storage::fake('public');
Storage::disk('public')->makeDirectory('/images/generated');
});
test('device with firmware version 1.5.1 gets bmp format', function () {
$device = Device::factory()->create([
'mac_address' => '00:11:22:33:44:55',
'api_key' => 'test-api-key',
'current_screen_image' => 'test-image',
'last_firmware_version' => '1.5.1',
]);
// Create both bmp and png files
Storage::disk('public')->put('images/generated/test-image.bmp', 'fake bmp content');
Storage::disk('public')->put('images/generated/test-image.png', 'fake png content');
// Test /api/display endpoint
$displayResponse = $this->withHeaders([
'id' => $device->mac_address,
'access-token' => $device->api_key,
'rssi' => -70,
'battery_voltage' => 3.8,
'fw-version' => '1.5.1',
])->get('/api/display');
$displayResponse->assertOk()
->assertJson([
'filename' => 'test-image.bmp',
]);
// Test /api/current_screen endpoint
$currentScreenResponse = $this->withHeaders([
'access-token' => $device->api_key,
])->get('/api/current_screen');
$currentScreenResponse->assertOk()
->assertJson([
'filename' => 'test-image.bmp',
]);
});
test('device with firmware version 1.5.2 gets png format', function () {
$device = Device::factory()->create([
'mac_address' => '00:11:22:33:44:55',
'api_key' => 'test-api-key',
'current_screen_image' => 'test-image',
'last_firmware_version' => '1.5.2',
]);
// Create both bmp and png files
Storage::disk('public')->put('images/generated/test-image.png', 'fake bmp content');
// Test /api/display endpoint
$displayResponse = $this->withHeaders([
'id' => $device->mac_address,
'access-token' => $device->api_key,
'rssi' => -70,
'battery_voltage' => 3.8,
'fw-version' => '1.5.2',
])->get('/api/display');
$displayResponse->assertOk()
->assertJson([
'filename' => 'test-image.png',
]);
// Test /api/current_screen endpoint
$currentScreenResponse = $this->withHeaders([
'access-token' => $device->api_key,
])->get('/api/current_screen');
$currentScreenResponse->assertOk()
->assertJson([
'filename' => 'test-image.png',
]);
});
test('device falls back to bmp when png does not exist', function () {
$device = Device::factory()->create([
'mac_address' => '00:11:22:33:44:55',
'api_key' => 'test-api-key',
'current_screen_image' => 'test-image',
'last_firmware_version' => '1.5.2',
]);
// Create only bmp file
Storage::disk('public')->put('images/generated/test-image.bmp', 'fake bmp content');
// Test /api/display endpoint
$displayResponse = $this->withHeaders([
'id' => $device->mac_address,
'access-token' => $device->api_key,
'rssi' => -70,
'battery_voltage' => 3.8,
'fw-version' => '1.5.2',
])->get('/api/display');
$displayResponse->assertOk()
->assertJson([
'filename' => 'test-image.bmp',
]);
// Test /api/current_screen endpoint
$currentScreenResponse = $this->withHeaders([
'access-token' => $device->api_key,
])->get('/api/current_screen');
$currentScreenResponse->assertOk()
->assertJson([
'filename' => 'test-image.bmp',
]);
});

View file

@ -23,7 +23,6 @@ test('it generates screen images and updates device', function () {
// Assert both PNG and BMP files were created
$uuid = $device->current_screen_image;
Storage::disk('public')->assertExists("/images/generated/{$uuid}.png");
Storage::disk('public')->assertExists("/images/generated/{$uuid}.bmp");
})->skipOnGitHubActions();
test('it cleans up unused images', function () {