自动化测试
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

135 lines
3.2 KiB

package showcase
import (
"net/http"
"strings"
"automatedtesting/usecases_server/models"
"automatedtesting/usecases_server/utils"
"automatedtesting/usecases_server/utils/cyllib/log"
"automatedtesting/usecases_server/utils/cyllib/re"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
type CaseController struct {
Id int `json:"id"`
Indexes int `json:"index"`
Module string `json:"module"`
ChildModule string `json:"childmodule"`
Title string `json:"title"`
Step string `json:"step"`
Expect string `json:"expect"`
Real string `json:"_"`
Result string `json:"result"`
}
func (s *CaseController) GetData(c *gin.Context) {
public := utils.GetPublicParam(c)
cases, total := s.GetCaseData(*public, c)
type MsgList struct {
Size int `json:"size"`
Step []string `json:"step"`
Expect []string `json:"expect"`
Real []string `json:"real"`
}
var msgmap = make(map[int]MsgList)
for _, d := range *cases {
ms := MsgList{}
st, ex, real := utils.GetReStepAndExpect(d.Step, d.Expect, d.Real)
sts := []string{}
exs := []string{}
res := []string{}
for i := range st {
st_s, ex_s, re_s := "", "", ""
st_s_ := re.FindAll(`^\d+\.([\w\W]*)`, st[i])
ex_s_ := re.FindAll(`^\d+\.([\w\W]*)`, ex[i])
var re_s_ [][]string
if len(real) >= i+1 {
re_s_ = re.FindAll(`^\d+\.([\w\W]*)`, real[i])
}
if len(st_s_) > 0 && len(st_s_[0]) > 1 {
st_s = st_s_[0][1]
st_s = strings.TrimRight(st_s, "\r\n")
sts = append(sts, st_s)
}
if len(ex_s_) > 0 && len(ex_s_[0]) > 1 {
ex_s = ex_s_[0][1]
ex_s = strings.TrimRight(ex_s, "\r\n")
exs = append(exs, ex_s)
}
if len(re_s_) > 0 && len(re_s_[0]) > 1 {
re_s = re_s_[0][1]
re_s = strings.TrimRight(re_s, "\r\n")
res = append(res, re_s)
}
}
ms.Step = sts
ms.Expect = exs
ms.Real = res
ms.Size = len(ms.Step)
msgmap[d.Id] = ms
}
c.JSON(http.StatusOK, &gin.H{"msg": *cases, "msgmap": msgmap, "total": total})
}
func (s *CaseController) GetCount(c *gin.Context) {
public := utils.GetPublicParam(c)
cases := s.GetCaseAllData(*public, c)
var idlist = make([]int, 0)
for _, d := range *cases {
idlist = append(idlist, d.Id)
}
c.JSON(http.StatusOK, &gin.H{"idlist": idlist})
}
func (s *CaseController) Delete(c *gin.Context) {
flag := true
id := c.Query("id")
er := models.GetDb().Transaction(func(tx *gorm.DB) error {
var err error
if err = tx.Table("cases").Where("id = ?", id).Delete(models.Cases{}).Error; err != nil {
log.WriteErr(err)
}
return err
})
if er != nil {
flag = false
}
c.JSON(http.StatusOK, &gin.H{"flag": flag})
}
func (s *CaseController) UpData(c *gin.Context) {
cas := s.UCase(c)
flag := true
er := models.GetDb().Transaction(func(tx *gorm.DB) error {
var err error
if err = tx.Table("cases").Updates(cas).Error; err != nil {
log.WriteErr(err)
}
return err
})
if er != nil {
flag = false
}
c.JSON(http.StatusOK, &gin.H{"flag": flag})
}
func (s *CaseController) Add(c *gin.Context) {
cas := s.ACase(c)
flag := true
er := models.GetDb().Transaction(func(tx *gorm.DB) error {
var err error
if err = tx.Create(&cas).Error; err != nil {
log.WriteErr(err)
}
return err
})
if er != nil {
flag = false
}
c.JSON(http.StatusOK, &gin.H{"flag": flag})
}