Harden screen query failure handling
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run

This commit is contained in:
Snider 2026-04-17 18:44:19 +01:00
parent 2d2f965bbe
commit 4b8a534920
2 changed files with 24 additions and 3 deletions

View file

@ -90,10 +90,13 @@ func failedQuery(method, query string) error {
func (s *Service) GetScreens() []*Screen {
r := s.Core().QUERY(screen.QueryAll{})
if !r.OK {
return nil
return []*Screen{}
}
screens, ok := r.Value.([]screen.Screen)
if !ok {
return []*Screen{}
}
if len(screens) == 0 {
return nil
}
result := make([]*Screen, 0, len(screens))

View file

@ -153,6 +153,20 @@ func TestDisplayAPI_GetScreens_Good(t *testing.T) {
assert.Equal(t, 1920, screens[0].Width)
}
func TestDisplayAPI_GetScreens_Empty(t *testing.T) {
svc, c := newTestDisplayAPIService(t)
c.RegisterQuery(func(_ *core.Core, q core.Query) core.Result {
switch q.(type) {
case screen.QueryAll:
return core.Result{Value: []screen.Screen{}, OK: true}
default:
return core.Result{}
}
})
assert.Nil(t, svc.GetScreens())
}
func TestDisplayAPI_GetScreens_Bad(t *testing.T) {
svc, c := newTestDisplayAPIService(t)
c.RegisterQuery(func(_ *core.Core, q core.Query) core.Result {
@ -164,7 +178,9 @@ func TestDisplayAPI_GetScreens_Bad(t *testing.T) {
}
})
assert.Nil(t, svc.GetScreens())
screens := svc.GetScreens()
require.NotNil(t, screens)
assert.Empty(t, screens)
}
func TestDisplayAPI_GetScreens_Ugly(t *testing.T) {
@ -178,7 +194,9 @@ func TestDisplayAPI_GetScreens_Ugly(t *testing.T) {
}
})
assert.Nil(t, svc.GetScreens())
screens := svc.GetScreens()
require.NotNil(t, screens)
assert.Empty(t, screens)
}
func TestDisplayAPI_GetScreen_BadType(t *testing.T) {