feat(backend): add domain store, learning services, and seed data

Persist LMS entities and implement hearts/watch rules plus curriculum bootstrap.
This commit is contained in:
ahp
2026-10-07 19:40:26 +03:30
parent f76c7a110b
commit 3ee609337c
15 changed files with 4076 additions and 0 deletions
@@ -0,0 +1,28 @@
package service
import (
"context"
"testing"
"pargar/backend/internal/models"
)
func TestConsumeHeartsSkipsStaff(t *testing.T) {
h := &HeartsService{}
for _, role := range []models.Role{models.RoleAdmin, models.RoleMentor} {
u := &models.User{ID: 1, Role: role, Hearts: 1, IsLocked: false}
out, lost, err := h.ConsumeHearts(context.Background(), u, 3)
if err != nil {
t.Fatalf("%s: unexpected err %v", role, err)
}
if lost != 0 {
t.Fatalf("%s: expected 0 hearts lost, got %d", role, lost)
}
if out.Hearts != 1 {
t.Fatalf("%s: hearts should stay 1, got %d", role, out.Hearts)
}
if out.IsLocked {
t.Fatalf("%s: staff must not lock", role)
}
}
}