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) } }