|
@@ -3,6 +3,7 @@ package handlers
|
|
|
import (
|
|
|
"bytes"
|
|
|
"encoding/json"
|
|
|
+ "fmt"
|
|
|
"net/http"
|
|
|
"net/http/httptest"
|
|
|
"net/url"
|
|
@@ -10,6 +11,7 @@ import (
|
|
|
"testing"
|
|
|
"time"
|
|
|
|
|
|
+ "github.com/gorilla/mux"
|
|
|
"github.com/jinzhu/gorm"
|
|
|
"github.com/remogatto/prettytest"
|
|
|
"gogs.carducci-dante.gov.it/karmen/core/config"
|
|
@@ -177,6 +179,39 @@ func (t *testSuite) TestGetTeachersJSON() {
|
|
|
|
|
|
}
|
|
|
|
|
|
+func (t *testSuite) TestGetTeacherJSON() {
|
|
|
+ var (
|
|
|
+ teacher *orm.Teacher
|
|
|
+ response renderer.JsonResponse
|
|
|
+ )
|
|
|
+
|
|
|
+ req, err := http.NewRequest("GET", "/api/teachers/9?format=json", nil)
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ pattern := PathPattern{"/api/%s/{id}", "", []string{"GET"}}
|
|
|
+
|
|
|
+ rr := httptest.NewRecorder()
|
|
|
+
|
|
|
+ router := mux.NewRouter()
|
|
|
+ router.Handle("/api/teachers/{id}", modelHandler("teachers", pattern))
|
|
|
+ router.ServeHTTP(rr, req)
|
|
|
+
|
|
|
+ t.Equal(http.StatusOK, rr.Code)
|
|
|
+
|
|
|
+ if !t.Failed() {
|
|
|
+ err := json.Unmarshal(rr.Body.Bytes(), &response)
|
|
|
+ t.Nil(err)
|
|
|
+ if !t.Failed() {
|
|
|
+ err := json.Unmarshal(response.Result, &teacher)
|
|
|
+ t.Nil(err)
|
|
|
+ t.Equal("FRANCESCHINI", teacher.Surname)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
func (t *testSuite) TestGetTeachersCSV() {
|
|
|
var response renderer.JsonResponse
|
|
|
|
|
@@ -227,7 +262,7 @@ func (t *testSuite) TestGetErrorJSON() {
|
|
|
|
|
|
}
|
|
|
|
|
|
-func (t *testSuite) TestPostTeacherJSON() {
|
|
|
+func (t *testSuite) TestAddTeacherJSON() {
|
|
|
var (
|
|
|
response renderer.JsonResponse
|
|
|
id uint
|
|
@@ -240,7 +275,7 @@ func (t *testSuite) TestPostTeacherJSON() {
|
|
|
data, err := json.Marshal(teacher)
|
|
|
t.Nil(err)
|
|
|
|
|
|
- req, err := http.NewRequest("POST", "/api/teachers/add?format=json", bytes.NewBuffer(data))
|
|
|
+ req, err := http.NewRequest("POST", "/api/teachers/add", bytes.NewBuffer(data))
|
|
|
req.Header.Set("Content-Type", "application/json; charset=utf-8")
|
|
|
|
|
|
if err != nil {
|
|
@@ -249,7 +284,7 @@ func (t *testSuite) TestPostTeacherJSON() {
|
|
|
|
|
|
pattern := PathPattern{
|
|
|
"/api/%s/add",
|
|
|
- "/%s?format=json",
|
|
|
+ "",
|
|
|
[]string{"POST"},
|
|
|
}
|
|
|
|
|
@@ -269,3 +304,66 @@ func (t *testSuite) TestPostTeacherJSON() {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+func (t *testSuite) TestUpdateTeacherJSON() {
|
|
|
+ teacher := getTeacherJSON(1)
|
|
|
+ teacher.Name = "Mario"
|
|
|
+ teacher.Surname = "ROSSI"
|
|
|
+
|
|
|
+ data, err := json.Marshal(teacher)
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ req, err := http.NewRequest("POST", fmt.Sprintf("/api/teachers/%d/update?format=json", teacher.ID), bytes.NewBuffer(data))
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
+ req.Header.Set("Content-Type", "application/json; charset=utf-8")
|
|
|
+
|
|
|
+ rr := httptest.NewRecorder()
|
|
|
+
|
|
|
+ pattern := PathPattern{"/api/%s/{id}/update", "", []string{"POST"}}
|
|
|
+ router := mux.NewRouter()
|
|
|
+ router.Handle("/api/teachers/{id}/update", modelHandler("teachers", pattern))
|
|
|
+ router.ServeHTTP(rr, req)
|
|
|
+
|
|
|
+ t.Equal(http.StatusOK, rr.Code)
|
|
|
+
|
|
|
+ if !t.Failed() {
|
|
|
+ dbTeacher := getTeacherJSON(1)
|
|
|
+ t.Equal("ROSSI", dbTeacher.Surname)
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func getTeacherJSON(id uint) *orm.Teacher {
|
|
|
+ var (
|
|
|
+ teacher *orm.Teacher
|
|
|
+ response renderer.JsonResponse
|
|
|
+ )
|
|
|
+
|
|
|
+ req, err := http.NewRequest("GET", fmt.Sprintf("/api/teachers/%d?format=json", id), nil)
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ pattern := PathPattern{"/api/%s/{id}", "", []string{"GET"}}
|
|
|
+
|
|
|
+ rr := httptest.NewRecorder()
|
|
|
+
|
|
|
+ router := mux.NewRouter()
|
|
|
+ router.Handle("/api/teachers/{id}", modelHandler("teachers", pattern))
|
|
|
+ router.ServeHTTP(rr, req)
|
|
|
+
|
|
|
+ err = json.Unmarshal(rr.Body.Bytes(), &response)
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
+ err = json.Unmarshal(response.Result, &teacher)
|
|
|
+ if err != nil {
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
+ return teacher
|
|
|
+
|
|
|
+}
|