44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
package usecase_test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"testing"
|
|
|
|
"source.toby3d.me/toby3d/hub/internal/common"
|
|
"source.toby3d.me/toby3d/hub/internal/domain"
|
|
topicmemoryrepo "source.toby3d.me/toby3d/hub/internal/topic/repository/memory"
|
|
"source.toby3d.me/toby3d/hub/internal/topic/usecase"
|
|
)
|
|
|
|
func TestTopicUseCase_Publish(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
topic := domain.TestTopic(t)
|
|
topics := topicmemoryrepo.NewMemoryTopicRepository()
|
|
srv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
|
w.Header().Set(common.HeaderContentType, topic.ContentType)
|
|
fmt.Fprint(w, topic.Content)
|
|
}))
|
|
t.Cleanup(srv.Close)
|
|
|
|
topic.Self, _ = url.Parse(srv.URL + "/")
|
|
|
|
ok, err := usecase.NewTopicUseCase(topics, srv.Client()).
|
|
Publish(context.Background(), topic.Self)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if !ok {
|
|
t.Errorf("want %t, got %t", true, ok)
|
|
}
|
|
|
|
if _, err := topics.Get(context.Background(), topic.Self); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|