package homeuserauthtest

import (
	"fmt"
	"fusenapi/server/home-user-auth/internal/types"
	fstests "fusenapi/utils/fstests"
	"testing"

	"github.com/474420502/requests"
	"github.com/tidwall/gjson"
)

func TestUserContactService(t *testing.T) {
	var err error
	var resp *requests.Response
	var result gjson.Result

	// 获取 session,并携带 JWT token
	ses := fstests.GetSessionWithUserToken(t, userserver, cnf.Host, cnf.Port)
	tp := ses.Post(fmt.Sprintf("http://%s:%d/api/user/contact-service", cnf.Host, cnf.Port))
	req := types.RequestContactService{Type: "order", RelationID: 481, Email: "9107058@qq.com", Name: "zhang"}
	tp.SetBodyJson(req)
	// 向服务器发送 GET 请求,获取用户基本信息
	resp, err = tp.TestExecute(gserver)
	if err != nil {
		t.Error(err)
	}
	respjson := resp.Json()
	// 检查返回值中的 code 字段是否存在,并且值是否为 200
	result = respjson.Get("code")
	if !result.Exists() {
		t.Error("code is not exists")
	}
	if result.Int() != 200 {
		t.Error("code != 200")
	}

	// 检查返回值中的 msg 字段是否存在,并且值是否为 "success"
	result = respjson.Get("msg")
	if !result.Exists() {
		t.Error("msg is not exists")
	}
	if result.String() != "success" {
		t.Error(result.String())
	}

	// 检查返回值中的 data 字段是否存在
	result = respjson.Get("data")
	if !result.Exists() {
		t.Error("data is not exists")
	}

	// 检查返回值中的 msg 字段是否存在,并且值是否为 "success"
	result = respjson.Get("msg")
	if !result.Exists() {
		t.Error("msg does not exist")
	}

	data := respjson.Get("data")

	// 补充检查返回值中的每个字段是否存在
	fieldKeys := []string{"id", "type", "relation_id", "user_id", "name", "email", "phone", "remark", "is_handle", "ctime", "handle_remark", "handle_uid", "handle_time"}
	for _, key := range fieldKeys {
		field := data.Get(key)
		if !field.Exists() {
			t.Errorf("Field '%s' does not exist", key)
		}
	}

}