Parcourir la source

Refactor DELETE predicate in handlers.go

Andrea Fazzi il y a 5 ans
Parent
commit
94d65ab055
2 fichiers modifiés avec 36 ajouts et 19 suppressions
  1. 19 19
      handlers/handlers.go
  2. 17 0
      handlers/handlers_test.go

+ 19 - 19
handlers/handlers.go

@@ -1,7 +1,6 @@
 package handlers
 
 import (
-	"encoding/json"
 	"fmt"
 	"io/ioutil"
 	"log"
@@ -226,8 +225,8 @@ func post(w http.ResponseWriter, r *http.Request, model string, pattern PathPatt
 func modelHandler(model string, pattern PathPattern) http.Handler {
 	fn := func(w http.ResponseWriter, r *http.Request) {
 		var (
-			ok     bool
-			postFn orm.PostFn
+		// ok     bool
+		// postFn orm.PostFn
 		)
 
 		switch r.Method {
@@ -239,22 +238,23 @@ func modelHandler(model string, pattern PathPattern) http.Handler {
 			post(w, r, model, pattern)
 
 		case "DELETE":
-			postFn, ok = orm.Post[pattern.Path(model)]
-			if !ok {
-				renderer.Render[r.URL.Query().Get("format")](w, r, fmt.Errorf("Can't find ORM function for path %s!", pattern.PathPattern))
-			}
-			_, err := postFn(mux.Vars(r), r)
-			if err != nil {
-				renderer.Render["html"](w, r, err)
-			} else {
-				var data struct {
-					RedirectUrl string `json:"redirect_url"`
-				}
-				data.RedirectUrl = pattern.RedirectPath(model)
-
-				w.Header().Set("Content-Type", "application/json")
-				json.NewEncoder(w).Encode(data)
-			}
+			post(w, r, model, pattern)
+			// postFn, ok = orm.Post[pattern.Path(model)]
+			// if !ok {
+			// 	renderer.Render[r.URL.Query().Get("format")](w, r, fmt.Errorf("Can't find ORM function for path %s!", pattern.PathPattern))
+			// }
+			// _, err := postFn(mux.Vars(r), r)
+			// if err != nil {
+			// 	renderer.Render["html"](w, r, err)
+			// } else {
+			// 	var data struct {
+			// 		RedirectUrl string `json:"redirect_url"`
+			// 	}
+			// 	data.RedirectUrl = pattern.RedirectPath(model)
+
+			// 	w.Header().Set("Content-Type", "application/json")
+			// 	json.NewEncoder(w).Encode(data)
+			// }
 
 		}
 	}

+ 17 - 0
handlers/handlers_test.go

@@ -179,6 +179,23 @@ func (t *testSuite) TestGetTeachersJSON() {
 
 }
 
+func (t *testSuite) TestDeleteActivityJSON() {
+	req, err := http.NewRequest("DELETE", fmt.Sprintf("/api/activities/%d/delete?format=json", 1), nil)
+	if err != nil {
+		panic(err)
+	}
+	req.Header.Set("Content-Type", "application/json; charset=utf-8")
+
+	rr := httptest.NewRecorder()
+
+	pattern := PathPattern{"/api/%s/{id}/delete", "", []string{"DELETE"}}
+	router := mux.NewRouter()
+	router.Handle("/api/activities/{id}/delete", modelHandler("activities", pattern))
+	router.ServeHTTP(rr, req)
+
+	t.Equal(http.StatusOK, rr.Code)
+}
+
 func (t *testSuite) TestGetTeacherJSON() {
 	var (
 		teacher  *orm.Teacher