fix: tap handler

This commit is contained in:
lilong.129
2025-03-04 20:40:10 +08:00
parent 65564b958f
commit 7539e456d7
7 changed files with 78 additions and 18 deletions

View File

@@ -15,14 +15,9 @@ import (
)
func (r *Router) GetDriver(c *gin.Context) (driverExt *uixt.XTDriver, err error) {
driverObj, exists := c.Get("driver")
if exists {
return driverObj.(*uixt.XTDriver), nil
}
deviceObj, exists := c.Get("device")
var device uixt.IDevice
var driver uixt.IDriver
deviceObj, exists := c.Get("device")
if !exists {
device, err = r.GetDevice(c)
if err != nil {

View File

@@ -12,14 +12,9 @@ import (
)
func (r *RouterExt) GetDriver(c *gin.Context) (driverExt *driver_ext.StubXTDriver, err error) {
driverObj, exists := c.Get("driver")
if exists {
return driverObj.(*driver_ext.StubXTDriver), nil
}
deviceObj, exists := c.Get("device")
var device uixt.IDevice
var driver driver_ext.IStubDriver
deviceObj, exists := c.Get("device")
if !exists {
device, err = r.GetDevice(c)
if err != nil {

View File

@@ -20,7 +20,7 @@ func (r *Router) tapHandler(c *gin.Context) {
err = driver.Drag(tapReq.X, tapReq.Y, tapReq.X, tapReq.Y,
option.WithDuration(tapReq.Duration))
} else {
err = driver.TapAbsXY(tapReq.X, tapReq.Y)
err = driver.TapXY(tapReq.X, tapReq.Y)
}
if err != nil {
RenderError(c, err)

73
server/ui_test.go Normal file
View File

@@ -0,0 +1,73 @@
package server
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
)
func TestTapHandler(t *testing.T) {
router := NewRouter()
tests := []struct {
name string
path string
tapReq TapRequest
wantStatus int
wantResp HttpResponse
}{
{
name: "tap abs xy",
path: fmt.Sprintf("/api/v1/android/%s/ui/tap", "4622ca24"),
tapReq: TapRequest{
X: 500,
Y: 800,
Duration: 0,
},
wantStatus: http.StatusOK,
wantResp: HttpResponse{
Code: 0,
Message: "success",
Result: true,
},
},
{
name: "tap relative xy",
path: fmt.Sprintf("/api/v1/android/%s/ui/tap", "4622ca24"),
tapReq: TapRequest{
X: 0.5,
Y: 0.6,
Duration: 0,
},
wantStatus: http.StatusOK,
wantResp: HttpResponse{
Code: 0,
Message: "success",
Result: true,
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
reqBody, _ := json.Marshal(tt.tapReq)
req := httptest.NewRequest(http.MethodPost, tt.path, bytes.NewBuffer(reqBody))
req.Header.Set("Content-Type", "application/json")
w := httptest.NewRecorder()
router.ServeHTTP(w, req)
assert.Equal(t, tt.wantStatus, w.Code)
var got HttpResponse
err := json.Unmarshal(w.Body.Bytes(), &got)
assert.NoError(t, err)
assert.Equal(t, tt.wantResp, got)
})
}
}