The Pulpit hero lists what to read for the current or next zjazd, so readings and materials get a nullable meeting_id (FK to jz_bm_meetings, ON DELETE SET NULL, indexed). The reading admin form gets a "Na zjazd" picker, the student reading JSON carries meeting_id, and the management /readings records filter and validate it.
29 lines
620 B
Go
29 lines
620 B
Go
package api
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// TestReadingJSONCarriesMeetingID checks that meeting_id is always present
|
|
// in a reading, as a number or as null.
|
|
func TestReadingJSONCarriesMeetingID(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(readingJSON{ID: 1, Title: "Lektura", MeetingID: tc.meeting})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !strings.Contains(string(b), tc.want) {
|
|
t.Errorf("reading JSON %s does not contain %s", b, tc.want)
|
|
}
|
|
}
|
|
}
|