test unhappy swap
parent
c744704b63
commit
e2d7c4a908
|
|
@ -168,8 +168,8 @@ func (v01 *V01) serveGM(w http.ResponseWriter, r *http.Request) {
|
|||
v01.serveGMShuffle(w, r)
|
||||
v01.cfg.Quiet = false
|
||||
case "/gm/rpc/swap":
|
||||
if err := v01.serveGMSwap(r, r.URL.Query().Get("a"), r.URL.Query().Get("b")); err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
if errCode, err := v01.serveGMSwap(r, r.URL.Query().Get("a"), r.URL.Query().Get("b")); err != nil {
|
||||
http.Error(w, err.Error(), errCode)
|
||||
return
|
||||
}
|
||||
v01.cfg.Quiet = false
|
||||
|
|
@ -226,7 +226,7 @@ func (v01 *V01) serveGMShuffle(w http.ResponseWriter, r *http.Request) {
|
|||
v01.servePutBroadcastValue(strings.Join(msg, ", "))
|
||||
}
|
||||
|
||||
func (v01 *V01) serveGMSwap(r *http.Request, nameA, nameB string) error {
|
||||
func (v01 *V01) serveGMSwap(r *http.Request, nameA, nameB string) (int, error) {
|
||||
getUserNameFor := func(like string) string {
|
||||
for k, v := range v01.cfg.Users {
|
||||
if k == like || v.Alias == like {
|
||||
|
|
@ -238,15 +238,15 @@ func (v01 *V01) serveGMSwap(r *http.Request, nameA, nameB string) error {
|
|||
userA := getUserNameFor(nameA)
|
||||
userB := getUserNameFor(nameB)
|
||||
if userA == "" || userB == "" {
|
||||
return errors.New("who dat?")
|
||||
return http.StatusBadRequest, errors.New("who dat?")
|
||||
}
|
||||
if userA == userB {
|
||||
return errors.New("/spiderman-pointing")
|
||||
return http.StatusConflict, errors.New("/spiderman-pointing")
|
||||
}
|
||||
a := v01.cfg.Users[userA]
|
||||
b := v01.cfg.Users[userB]
|
||||
a.Player, b.Player = b.Player, a.Player
|
||||
v01.cfg.Users[userA] = a
|
||||
v01.cfg.Users[userB] = b
|
||||
return nil
|
||||
return http.StatusOK, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -209,6 +209,33 @@ func TestServeGM(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("swap", func(t *testing.T) {
|
||||
t.Run("self", func(t *testing.T) {
|
||||
v01 := NewV01(ctx, nil)
|
||||
v01.cfg.Quiet = true
|
||||
v01.cfg.Users = map[string]configUser{
|
||||
"bel": configUser{Player: 1},
|
||||
}
|
||||
resp := do(v01, "/gm/rpc/swap?a=bel&b=bel", "")
|
||||
if resp.Code != http.StatusConflict {
|
||||
t.Error(resp.Code)
|
||||
}
|
||||
if !v01.cfg.Quiet {
|
||||
t.Error(v01.cfg.Quiet)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("who", func(t *testing.T) {
|
||||
v01 := NewV01(ctx, nil)
|
||||
v01.cfg.Quiet = true
|
||||
resp := do(v01, "/gm/rpc/swap?a=bel", "")
|
||||
if resp.Code != http.StatusBadRequest {
|
||||
t.Error(resp.Code)
|
||||
}
|
||||
if !v01.cfg.Quiet {
|
||||
t.Error(v01.cfg.Quiet)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("happy", func(t *testing.T) {
|
||||
v01 := NewV01(ctx, nil)
|
||||
v01.cfg.Quiet = true
|
||||
|
|
|
|||
Loading…
Reference in New Issue