Display createdby and updatedby for schools also (as admin)
This commit is contained in:
parent
e574c20d22
commit
61f4ca1842
2 changed files with 92 additions and 42 deletions
|
@ -9,6 +9,7 @@ import (
|
|||
"net/http"
|
||||
"net/http/httptest"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
@ -113,7 +114,7 @@ func deleteSchool(id uint) int {
|
|||
return rr.Code
|
||||
}
|
||||
|
||||
func subscribeSchoolAsSchool() error {
|
||||
func subscribeSchoolAsSchool() (uint, error) {
|
||||
form := url.Values{}
|
||||
form.Add("Name", "Foo School")
|
||||
form.Add("Code", "123456789")
|
||||
|
@ -138,12 +139,21 @@ func subscribeSchoolAsSchool() error {
|
|||
router.ServeHTTP(rr, req)
|
||||
|
||||
if rr.Code != http.StatusSeeOther {
|
||||
return errors.New("Unexpected response code")
|
||||
return 0, errors.New("Unexpected response code")
|
||||
}
|
||||
|
||||
log.Println(rr.Header()["Location"])
|
||||
re := regexp.MustCompile(`/schools/([0-9]+)\?`)
|
||||
matches := re.FindStringSubmatch(rr.Header()["Location"][0])
|
||||
id, err := strconv.Atoi(matches[1])
|
||||
|
||||
return nil
|
||||
return uint(id), nil
|
||||
}
|
||||
|
||||
func getIdFromPath(path string) (uint, error) {
|
||||
re := regexp.MustCompile(`/[a-z]+/([0-9]+)\?`)
|
||||
matches := re.FindStringSubmatch(path)
|
||||
id, err := strconv.Atoi(matches[1])
|
||||
return uint(id), err
|
||||
}
|
||||
|
||||
func TestRunner(t *testing.T) {
|
||||
|
@ -361,13 +371,14 @@ func (t *testSuite) TestSchoolSubscription() {
|
|||
|
||||
t.Equal(http.StatusSeeOther, rr.Code)
|
||||
|
||||
schoolId, err := getIdFromPath(rr.Header()["Location"][0])
|
||||
if !t.Failed() {
|
||||
doc, err := goquery.NewDocumentFromReader(rr.Body)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
expected := []string{
|
||||
"FooSchooll",
|
||||
"FooSchool",
|
||||
"123",
|
||||
}
|
||||
ok := true
|
||||
|
@ -379,10 +390,9 @@ func (t *testSuite) TestSchoolSubscription() {
|
|||
})
|
||||
t.True(ok)
|
||||
}
|
||||
}
|
||||
|
||||
var school orm.School
|
||||
err = handlers.Database.DB().First(&school, 501).Error
|
||||
err = handlers.Database.DB().First(&school, schoolId).Error
|
||||
t.Nil(err)
|
||||
|
||||
if !t.Failed() {
|
||||
|
@ -419,11 +429,46 @@ func (t *testSuite) TestSchoolSubscription() {
|
|||
|
||||
}
|
||||
|
||||
t.Equal(http.StatusOK, deleteSchool(501))
|
||||
t.Equal(http.StatusOK, deleteSchool(schoolId))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (t *testSuite) TestUserModifier() {
|
||||
err := subscribeSchoolAsSchool()
|
||||
id, err := subscribeSchoolAsSchool()
|
||||
t.Nil(err)
|
||||
|
||||
req, err := handlers.NewReadRequest(&orm.School{}, fmt.Sprintf("/schools/%d", id), "html")
|
||||
t.Nil(err)
|
||||
|
||||
req, err = login(req, handlers, "admin", "admin")
|
||||
t.Nil(err)
|
||||
|
||||
if !t.Failed() {
|
||||
rr := httptest.NewRecorder()
|
||||
|
||||
router := mux.NewRouter()
|
||||
router.Handle("/schools/{id}", handlers.Read(&orm.School{}))
|
||||
router.ServeHTTP(rr, req)
|
||||
|
||||
t.Equal(http.StatusOK, rr.Code)
|
||||
|
||||
if !t.Failed() {
|
||||
doc, err := goquery.NewDocumentFromReader(rr.Body)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
expected := "Creato da"
|
||||
ok := false
|
||||
doc.Find("dt").Each(func(i int, s *goquery.Selection) {
|
||||
if strings.Contains(s.Text(), expected) {
|
||||
ok = true
|
||||
}
|
||||
})
|
||||
t.True(ok)
|
||||
}
|
||||
}
|
||||
|
||||
t.Equal(http.StatusOK, deleteSchool(id))
|
||||
|
||||
}
|
||||
|
|
|
@ -195,6 +195,11 @@ func (model *School) Read(db *Database, args map[string]string, w http.ResponseW
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if isAdministrator(r) {
|
||||
school.UserModifierCreate.get(db)
|
||||
school.UserModifierUpdate.get(db)
|
||||
}
|
||||
|
||||
return &school, nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue