newsbot-api/services/input/twitch_test.go
James Tombleson 0e0058506a
Feature Flags (#11)
* added feature flags around background workers

* background workers are moved to a new package as outputs are starting to get added

* package name was updated

* updated refs to the new input package

* query and sql updates on routes

* moved the services and starting to add discord web hook

* query update
2022-06-30 14:54:58 -07:00

277 lines
5.3 KiB
Go

package input_test
import (
"log"
"testing"
"github.com/google/uuid"
"github.com/jtom38/newsbot/collector/database"
"github.com/jtom38/newsbot/collector/services/input"
)
var TwitchSourceRecord = database.Source {
ID: uuid.New(),
Name: "nintendo",
Source: "Twitch",
}
var TwitchInvalidRecord = database.Source {
ID: uuid.New(),
Name: "EvilNintendo",
Source: "Twitch",
}
func TestTwitchLogin(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil {
t.Error(err)
}
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil {
t.Error(err)
}
}
// reach out and confirms that the API returns posts made by the user.
func TestTwitchReturnsUserPosts(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil {
t.Error(err)
}
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil {
t.Error(err)
}
user, err := tc.GetUserDetails()
if err != nil {
t.Error(err)
}
posts, err := tc.GetPosts(user)
if err != nil {
t.Error(err)
}
if len(posts) == 0 {
t.Error("expected videos but got none")
}
}
func TestTwitchReturnsNothingDueToInvalidUserName(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil {
t.Error(err)
}
tc.ReplaceSourceRecord(TwitchInvalidRecord)
err = tc.Login()
if err != nil {
t.Error(err)
}
user, err := tc.GetUserDetails()
if err != nil {
t.Error(err)
}
posts, err := tc.GetPosts(user)
if err != nil {
t.Error(err)
}
if len(posts) != 0 {
t.Error("expected videos but got none")
}
}
func TestTwitchReturnsVideoAuthor(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil {
t.Error(err)
}
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil {
t.Error(err)
}
user, err := tc.GetUserDetails()
if err != nil {
t.Error(err)
}
posts, err := tc.GetPosts(user)
if err != nil {
t.Error(err)
}
if posts[0].UserName == "" {
t.Error("uable to parse username")
}
}
func TestTwitchReturnsThumbnail(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil {t.Error(err) }
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil { t.Error(err) }
user, err := tc.GetUserDetails()
if err != nil { t.Error(err) }
posts, err := tc.GetPosts(user)
if err != nil { t.Error(err) }
value, err := tc.ExtractThumbnail(posts[0])
if err != nil { t.Error(err) }
if value == "" { t.Error("uable to parse username") }
}
func TestTwitchReturnsPubDate(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil { t.Error(err) }
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil { t.Error(err) }
user, err := tc.GetUserDetails()
if err != nil { t.Error(err) }
posts, err := tc.GetPosts(user)
if err != nil { t.Error(err) }
date, err := tc.ExtractPubDate(posts[0])
log.Println(date)
if err != nil { t.Error(err) }
}
func TestTwitchReturnsDescription(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil {
t.Error(err)
}
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil {
t.Error(err)
}
user, err := tc.GetUserDetails()
if err != nil {
t.Error(err)
}
posts, err := tc.GetPosts(user)
if err != nil {
t.Error(err)
}
_, err = tc.ExtractDescription(posts[0])
if err != nil {
t.Error(err)
}
}
func TestTwitchReturnsAuthorImage(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil {t.Error(err) }
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil { t.Error(err) }
user, err := tc.GetUserDetails()
if err != nil {t.Error(err) }
_, err = tc.ExtractAuthorImage(user)
if err != nil { t.Error(err) }
}
func TestTwitchReturnsTags(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil {
t.Error(err)
}
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil {
t.Error(err)
}
user, err := tc.GetUserDetails()
if err != nil {
t.Error(err)
}
posts, err := tc.GetPosts(user)
if err != nil { t.Error(err) }
_, err = tc.ExtractTags(posts[0], user)
if err != nil { t.Error(err) }
}
func TestTwitchReturnsTitle(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil {
t.Error(err)
}
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil {
t.Error(err)
}
user, err := tc.GetUserDetails()
if err != nil {
t.Error(err)
}
posts, err := tc.GetPosts(user)
if err != nil { t.Error(err) }
res, err := tc.ExtractTitle(posts[0])
if err != nil { t.Error(err) }
if res == "" { t.Error("expected a filled string but got nil")}
}
func TestTwitchReturnsUrl(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil { t.Error(err) }
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil { t.Error(err) }
user, err := tc.GetUserDetails()
if err != nil { t.Error(err) }
posts, err := tc.GetPosts(user)
if err != nil { t.Error(err) }
res, err := tc.ExtractUrl(posts[0])
if err != nil { t.Error(err) }
if res == "" { t.Error("expected a filled string but got nil")}
}
func TestTwitchGetContent(t *testing.T) {
tc, err := input.NewTwitchClient()
if err != nil { t.Error(err) }
tc.ReplaceSourceRecord(TwitchSourceRecord)
err = tc.Login()
if err != nil { t.Error(err) }
posts, err := tc.GetContent()
if err != nil {t.Error(err) }
if len(posts) == 0 { t.Error("posts came back with 0 posts") }
if len(posts) != 20 { t.Error("expected 20 posts") }
}