Harden display query failures
This commit is contained in:
parent
2c1cc5af33
commit
2d2f965bbe
2 changed files with 76 additions and 4 deletions
|
|
@ -83,6 +83,10 @@ func unexpectedResultType(method string) error {
|
|||
return coreerr.E(method, "unexpected result type", nil)
|
||||
}
|
||||
|
||||
func failedQuery(method, query string) error {
|
||||
return coreerr.E(method, query+" query failed", nil)
|
||||
}
|
||||
|
||||
func (s *Service) GetScreens() []*Screen {
|
||||
r := s.Core().QUERY(screen.QueryAll{})
|
||||
if !r.OK {
|
||||
|
|
@ -105,7 +109,7 @@ func (s *Service) GetScreen(id string) (*Screen, error) {
|
|||
if err, ok := r.Value.(error); ok {
|
||||
return nil, err
|
||||
}
|
||||
return nil, nil
|
||||
return nil, failedQuery("display.GetScreen", "screen.queryByID")
|
||||
}
|
||||
scr, ok := r.Value.(*screen.Screen)
|
||||
if !ok {
|
||||
|
|
@ -120,7 +124,7 @@ func (s *Service) GetPrimaryScreen() (*Screen, error) {
|
|||
if err, ok := r.Value.(error); ok {
|
||||
return nil, err
|
||||
}
|
||||
return nil, nil
|
||||
return nil, failedQuery("display.GetPrimaryScreen", "screen.queryPrimary")
|
||||
}
|
||||
scr, ok := r.Value.(*screen.Screen)
|
||||
if !ok {
|
||||
|
|
@ -135,7 +139,7 @@ func (s *Service) GetScreenAtPoint(x, y int) (*Screen, error) {
|
|||
if err, ok := r.Value.(error); ok {
|
||||
return nil, err
|
||||
}
|
||||
return nil, nil
|
||||
return nil, failedQuery("display.GetScreenAtPoint", "screen.queryAtPoint")
|
||||
}
|
||||
scr, ok := r.Value.(*screen.Screen)
|
||||
if !ok {
|
||||
|
|
@ -390,7 +394,7 @@ func (s *Service) ReadClipboardImage() ([]byte, error) {
|
|||
if err, ok := r.Value.(error); ok {
|
||||
return nil, err
|
||||
}
|
||||
return nil, nil
|
||||
return nil, failedQuery("display.ReadClipboardImage", "clipboard.queryImage")
|
||||
}
|
||||
content, ok := r.Value.(clipboard.ImageContent)
|
||||
if !ok {
|
||||
|
|
|
|||
|
|
@ -198,6 +198,57 @@ func TestDisplayAPI_GetScreen_BadType(t *testing.T) {
|
|||
assert.Nil(t, got)
|
||||
}
|
||||
|
||||
func TestDisplayAPI_GetScreen_Ugly(t *testing.T) {
|
||||
svc, c := newTestDisplayAPIService(t)
|
||||
c.RegisterQuery(func(_ *core.Core, q core.Query) core.Result {
|
||||
switch q.(type) {
|
||||
case screen.QueryByID:
|
||||
return core.Result{OK: false}
|
||||
default:
|
||||
return core.Result{}
|
||||
}
|
||||
})
|
||||
|
||||
got, err := svc.GetScreen("screen-1")
|
||||
|
||||
require.Error(t, err)
|
||||
assert.Nil(t, got)
|
||||
}
|
||||
|
||||
func TestDisplayAPI_GetPrimaryScreen_Ugly(t *testing.T) {
|
||||
svc, c := newTestDisplayAPIService(t)
|
||||
c.RegisterQuery(func(_ *core.Core, q core.Query) core.Result {
|
||||
switch q.(type) {
|
||||
case screen.QueryPrimary:
|
||||
return core.Result{OK: false}
|
||||
default:
|
||||
return core.Result{}
|
||||
}
|
||||
})
|
||||
|
||||
got, err := svc.GetPrimaryScreen()
|
||||
|
||||
require.Error(t, err)
|
||||
assert.Nil(t, got)
|
||||
}
|
||||
|
||||
func TestDisplayAPI_GetScreenAtPoint_Ugly(t *testing.T) {
|
||||
svc, c := newTestDisplayAPIService(t)
|
||||
c.RegisterQuery(func(_ *core.Core, q core.Query) core.Result {
|
||||
switch q.(type) {
|
||||
case screen.QueryAtPoint:
|
||||
return core.Result{OK: false}
|
||||
default:
|
||||
return core.Result{}
|
||||
}
|
||||
})
|
||||
|
||||
got, err := svc.GetScreenAtPoint(10, 20)
|
||||
|
||||
require.Error(t, err)
|
||||
assert.Nil(t, got)
|
||||
}
|
||||
|
||||
func TestDisplayAPI_OpenFileDialog_Good(t *testing.T) {
|
||||
svc, c := newTestDisplayAPIService(t)
|
||||
c.Action("dialog.openFile", func(_ context.Context, opts core.Options) core.Result {
|
||||
|
|
@ -497,6 +548,23 @@ func TestDisplayAPI_ReadClipboardImage_Ugly(t *testing.T) {
|
|||
assert.Nil(t, got)
|
||||
}
|
||||
|
||||
func TestDisplayAPI_ReadClipboardImage_Ugly_BackendFailure(t *testing.T) {
|
||||
svc, c := newTestDisplayAPIService(t)
|
||||
c.RegisterQuery(func(_ *core.Core, q core.Query) core.Result {
|
||||
switch q.(type) {
|
||||
case clipboard.QueryImage:
|
||||
return core.Result{OK: false}
|
||||
default:
|
||||
return core.Result{}
|
||||
}
|
||||
})
|
||||
|
||||
got, err := svc.ReadClipboardImage()
|
||||
|
||||
require.Error(t, err)
|
||||
assert.Nil(t, got)
|
||||
}
|
||||
|
||||
func TestDisplayAPI_WriteClipboardImage_Good(t *testing.T) {
|
||||
svc, c := newTestDisplayAPIService(t)
|
||||
var got []byte
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue