45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package notifications
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"testing"
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"github.com/Silo-Server/silo-server/internal/cache"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestPublishCatalogItemChangedAlsoPublishesLegacyMetadataUpdated(t *testing.T) {
|
||
|
|
hub := NewHub("test", &cache.NoopEventBus{})
|
||
|
|
events, unsubscribe := hub.Subscribe()
|
||
|
|
defer unsubscribe()
|
||
|
|
|
||
|
|
err := hub.PublishCatalogItemChanged(context.Background(), MetadataUpdateEvent{
|
||
|
|
LibraryID: 12,
|
||
|
|
ContentID: "item-1",
|
||
|
|
Change: "metadata_updated",
|
||
|
|
})
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("PublishCatalogItemChanged() error = %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
got := map[Type]Envelope{}
|
||
|
|
for len(got) < 2 {
|
||
|
|
select {
|
||
|
|
case event := <-events:
|
||
|
|
got[event.Type] = event
|
||
|
|
case <-time.After(time.Second):
|
||
|
|
t.Fatalf("timed out waiting for events, got %#v", got)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
for _, eventType := range []Type{TypeCatalogItemChanged, TypeMetadataUpdated} {
|
||
|
|
event, ok := got[eventType]
|
||
|
|
if !ok {
|
||
|
|
t.Fatalf("missing event %q in %#v", eventType, got)
|
||
|
|
}
|
||
|
|
if event.LibraryID != 12 || event.ContentID != "item-1" {
|
||
|
|
t.Fatalf("event %q payload = library %d content %q", eventType, event.LibraryID, event.ContentID)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|