feat(studio): studio web UI (course list, manifest, lessons with live preview, decks, attachments, exercises, conflicts, sync) and dev entry
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
497ce91216
commit
0992df7257
18 files changed
+1403
-5
No files matched your search
@@ -11,8 +11,10 @@ test("anonymous gets 401, learners 403", async () => {
|
||||
expect((await env.call("lea", "POST", "/api/studio/courses", { id: "x", title: "X" })).status).toBe(403);
|
||||
});
|
||||
|
||||
test("creating a course records the creator in course_authors; a per-course author without the role can edit it", async () => {
|
||||
env = await setupApp();
|
||||
const DBS = [["sqlite", "sqlite://:memory:"], ...(process.env.STC_TEST_PG_URL ? [["postgres", process.env.STC_TEST_PG_URL]] : [])] as const;
|
||||
|
||||
test.each(DBS)("creating a course records the creator in course_authors; a per-course author without the role can edit it [%s]", async (_name, url) => {
|
||||
env = await setupApp([], url);
|
||||
expect((await env.call("ada", "POST", "/api/studio/courses", { id: "c1", title: "C" })).status).toBe(201);
|
||||
const rows = await env.db.sql`SELECT course_id, user_id FROM course_authors`;
|
||||
expect(rows.map((r: any) => [r.course_id, r.user_id])).toEqual([["c1", "u-ada"]]);
|
||||
|
||||
Reference in new issue
Block a user