package service_test import ( "context" "math/rand" "testing" "time" "gitea.dwysokinski.me/Kichiyaki/notificationarr/internal/domain" "gitea.dwysokinski.me/Kichiyaki/notificationarr/internal/service" "gitea.dwysokinski.me/Kichiyaki/notificationarr/internal/service/internal/mock" "github.com/google/uuid" "github.com/stretchr/testify/assert" ) func TestRadarr_Process(t *testing.T) { t.Parallel() t.Run("OK", func(t *testing.T) { t.Parallel() for _, evType := range [...]domain.RadarrEventType{ domain.RadarrEventTypeDownload, domain.RadarrEventTypeTest, } { t.Run("event type="+evType.String(), func(t *testing.T) { t.Parallel() publisher := &mock.FakePublisher{} publisher.PublishReturns(nil) payload := generateRadarrWebhookPayload(evType) err := service.NewRadarr(publisher).Process(context.Background(), payload) assert.NoError(t, err) _, title, msg := publisher.PublishArgsForCall(0) assert.Equal(t, "New movie available (Radarr)", title) assert.Equal(t, payload.Movie.Title, msg) }) } }) } func generateRadarrWebhookPayload(ev domain.RadarrEventType) domain.RadarrWebhookPayload { s := rand.NewSource(time.Now().UnixNano()) r := rand.New(s) return domain.RadarrWebhookPayload{ EventType: ev, Movie: domain.RadarrMovie{ ID: r.Int63(), Title: uuid.NewString(), ReleaseDate: "1970-01-01", }, } }