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"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -113,7 +114,7 @@ func deleteSchool(id uint) int {
|
||||||
return rr.Code
|
return rr.Code
|
||||||
}
|
}
|
||||||
|
|
||||||
func subscribeSchoolAsSchool() error {
|
func subscribeSchoolAsSchool() (uint, error) {
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Add("Name", "Foo School")
|
form.Add("Name", "Foo School")
|
||||||
form.Add("Code", "123456789")
|
form.Add("Code", "123456789")
|
||||||
|
@ -138,12 +139,21 @@ func subscribeSchoolAsSchool() error {
|
||||||
router.ServeHTTP(rr, req)
|
router.ServeHTTP(rr, req)
|
||||||
|
|
||||||
if rr.Code != http.StatusSeeOther {
|
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) {
|
func TestRunner(t *testing.T) {
|
||||||
|
@ -361,13 +371,14 @@ func (t *testSuite) TestSchoolSubscription() {
|
||||||
|
|
||||||
t.Equal(http.StatusSeeOther, rr.Code)
|
t.Equal(http.StatusSeeOther, rr.Code)
|
||||||
|
|
||||||
|
schoolId, err := getIdFromPath(rr.Header()["Location"][0])
|
||||||
if !t.Failed() {
|
if !t.Failed() {
|
||||||
doc, err := goquery.NewDocumentFromReader(rr.Body)
|
doc, err := goquery.NewDocumentFromReader(rr.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
expected := []string{
|
expected := []string{
|
||||||
"FooSchooll",
|
"FooSchool",
|
||||||
"123",
|
"123",
|
||||||
}
|
}
|
||||||
ok := true
|
ok := true
|
||||||
|
@ -379,51 +390,85 @@ func (t *testSuite) TestSchoolSubscription() {
|
||||||
})
|
})
|
||||||
t.True(ok)
|
t.True(ok)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
var school orm.School
|
var school orm.School
|
||||||
err = handlers.Database.DB().First(&school, 501).Error
|
err = handlers.Database.DB().First(&school, schoolId).Error
|
||||||
t.Nil(err)
|
t.Nil(err)
|
||||||
|
|
||||||
|
if !t.Failed() {
|
||||||
|
var user orm.User
|
||||||
|
if err := handlers.Database.DB().First(&user, school.UserID).Error; err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Equal("123", user.Username)
|
||||||
|
|
||||||
|
form := url.Values{}
|
||||||
|
form.Add("Firstname", "Mario")
|
||||||
|
form.Add("Lastname", "BROS")
|
||||||
|
form.Add("Fiscalcode", "BRSMRE815ZL16")
|
||||||
|
form.Add("category_id", "1")
|
||||||
|
form.Add("school_id", strconv.Itoa(int(school.ID)))
|
||||||
|
|
||||||
|
req, err := handlers.NewCreateRequest(&orm.Participant{}, "/participants/create/", "html", "POST", form)
|
||||||
|
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
t.Nil(err)
|
||||||
|
|
||||||
|
req, err = login(req, handlers, user.Username, user.Password)
|
||||||
|
t.Nil(err)
|
||||||
|
|
||||||
|
rr := httptest.NewRecorder()
|
||||||
|
|
||||||
|
router := mux.NewRouter()
|
||||||
|
router.Handle("/participants/create/", handlers.Create(&orm.Participant{}))
|
||||||
|
router.ServeHTTP(rr, req)
|
||||||
|
|
||||||
|
t.Equal(http.StatusSeeOther, rr.Code)
|
||||||
|
|
||||||
|
t.Equal(http.StatusOK, deleteParticipant(1001))
|
||||||
|
|
||||||
if !t.Failed() {
|
|
||||||
var user orm.User
|
|
||||||
if err := handlers.Database.DB().First(&user, school.UserID).Error; err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Equal("123", user.Username)
|
t.Equal(http.StatusOK, deleteSchool(schoolId))
|
||||||
|
|
||||||
form := url.Values{}
|
|
||||||
form.Add("Firstname", "Mario")
|
|
||||||
form.Add("Lastname", "BROS")
|
|
||||||
form.Add("Fiscalcode", "BRSMRE815ZL16")
|
|
||||||
form.Add("category_id", "1")
|
|
||||||
form.Add("school_id", strconv.Itoa(int(school.ID)))
|
|
||||||
|
|
||||||
req, err := handlers.NewCreateRequest(&orm.Participant{}, "/participants/create/", "html", "POST", form)
|
|
||||||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
|
||||||
t.Nil(err)
|
|
||||||
|
|
||||||
req, err = login(req, handlers, user.Username, user.Password)
|
|
||||||
t.Nil(err)
|
|
||||||
|
|
||||||
rr := httptest.NewRecorder()
|
|
||||||
|
|
||||||
router := mux.NewRouter()
|
|
||||||
router.Handle("/participants/create/", handlers.Create(&orm.Participant{}))
|
|
||||||
router.ServeHTTP(rr, req)
|
|
||||||
|
|
||||||
t.Equal(http.StatusSeeOther, rr.Code)
|
|
||||||
|
|
||||||
t.Equal(http.StatusOK, deleteParticipant(1001))
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Equal(http.StatusOK, deleteSchool(501))
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *testSuite) TestUserModifier() {
|
func (t *testSuite) TestUserModifier() {
|
||||||
err := subscribeSchoolAsSchool()
|
id, err := subscribeSchoolAsSchool()
|
||||||
t.Nil(err)
|
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
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isAdministrator(r) {
|
||||||
|
school.UserModifierCreate.get(db)
|
||||||
|
school.UserModifierUpdate.get(db)
|
||||||
|
}
|
||||||
|
|
||||||
return &school, nil
|
return &school, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue