Register lighthouse user:{id} if the namespace is free, fire user.Deleting before unscoped delete, and backfill missing handles.
Co-authored-by: Cursor <cursoragent@cursor.com>
87 lines
2.5 KiB
Go
87 lines
2.5 KiB
Go
package classes
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"git.golem15.com/golem15/sm-user-plugin/models"
|
|
"git.golem15.com/golem15/summercms/modules/festival"
|
|
)
|
|
|
|
func TestGetApiArrayEventMerge(t *testing.T) {
|
|
bus := festival.New()
|
|
bus.ListenPriority[*GetApiArrayEvent]("first", 0, func(_ context.Context, e *GetApiArrayEvent) error {
|
|
e.Collected()["organisation_id"] = 1
|
|
e.Collected()["kept"] = "a"
|
|
return nil
|
|
})
|
|
bus.ListenPriority[*GetApiArrayEvent]("second", 0, func(_ context.Context, e *GetApiArrayEvent) error {
|
|
e.Collected()["organisation_id"] = 2
|
|
return nil
|
|
})
|
|
got, err := bus.Collect(context.Background(), &GetApiArrayEvent{User: &models.User{}})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got["organisation_id"] != 2 {
|
|
t.Fatalf("later listener lost: %#v", got["organisation_id"])
|
|
}
|
|
if got["kept"] != "a" {
|
|
t.Fatalf("non-colliding key dropped: %#v", got)
|
|
}
|
|
}
|
|
|
|
func TestRegisterEventFires(t *testing.T) {
|
|
bus := festival.New()
|
|
var seen *models.User
|
|
bus.Listen[*RegisterEvent]("golem15.user", func(_ context.Context, e *RegisterEvent) error {
|
|
seen = e.User
|
|
return nil
|
|
})
|
|
user := &models.User{ID: 4, Email: "evt@example.test"}
|
|
if err := bus.Fire(context.Background(), &RegisterEvent{User: user}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if seen == nil || seen.Email != user.Email {
|
|
t.Fatalf("event user = %#v", seen)
|
|
}
|
|
}
|
|
|
|
func TestCreatedEventFires(t *testing.T) {
|
|
if CreatedEventName != "user.Created" {
|
|
t.Fatalf("CreatedEventName = %q, want user.Created", CreatedEventName)
|
|
}
|
|
bus := festival.New()
|
|
var seen *models.User
|
|
bus.Listen[*CreatedEvent]("golem15.user", func(_ context.Context, e *CreatedEvent) error {
|
|
seen = e.User
|
|
return nil
|
|
})
|
|
user := &models.User{ID: 9, Email: "created@example.test"}
|
|
if err := bus.Fire(context.Background(), &CreatedEvent{User: user}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if seen == nil || seen.Email != user.Email {
|
|
t.Fatalf("created event user = %#v", seen)
|
|
}
|
|
}
|
|
|
|
func TestDeletingEventFires(t *testing.T) {
|
|
if DeletingEventName != "user.Deleting" {
|
|
t.Fatalf("DeletingEventName = %q, want user.Deleting", DeletingEventName)
|
|
}
|
|
bus := festival.New()
|
|
var seen *models.User
|
|
bus.Listen[*DeletingEvent]("golem15.user", func(_ context.Context, e *DeletingEvent) error {
|
|
seen = e.User
|
|
return nil
|
|
})
|
|
user := &models.User{ID: 9, Email: "gone@example.test"}
|
|
if err := bus.Fire(context.Background(), &DeletingEvent{User: user}); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if seen == nil || seen.Email != user.Email {
|
|
t.Fatalf("deleting event user = %#v", seen)
|
|
}
|
|
}
|