feat: materials by zjazd in the student API and admin
The material admin form gets the "Na zjazd" picker, every student material JSON carries meeting_id, and GET /materials accepts meeting= inside the published-only scope, so the Pulpit hero can list the zjazd's materials next to its readings.
This commit is contained in:
@@ -4,6 +4,8 @@ import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.golem15.com/jakub/sm-bm-plugin/models"
|
||||
)
|
||||
|
||||
// TestReadingJSONCarriesMeetingID checks that meeting_id is always present
|
||||
@@ -26,3 +28,24 @@ func TestReadingJSONCarriesMeetingID(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TestMaterialJSONCarriesMeetingID checks that meeting_id is always present
|
||||
// in a material, as a number or as null.
|
||||
func TestMaterialJSONCarriesMeetingID(t *testing.T) {
|
||||
id := uint(4)
|
||||
for _, tc := range []struct {
|
||||
meeting *uint
|
||||
want string
|
||||
}{
|
||||
{&id, `"meeting_id":4`},
|
||||
{nil, `"meeting_id":null`},
|
||||
} {
|
||||
b, err := json.Marshal(newMaterialListJSON(models.Material{ID: 1, Title: "Materiał", Type: "pdf", MeetingID: tc.meeting}, 0))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(string(b), tc.want) {
|
||||
t.Errorf("material JSON %s does not contain %s", b, tc.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user