Skip to content

Commit 6bb7c71

Browse files
committed
Add basic tests
Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
1 parent 2bc0a27 commit 6bb7c71

File tree

2 files changed

+53
-6
lines changed

2 files changed

+53
-6
lines changed

pkg/builder/twitch.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ func (t *TwitchBuilder) Build(_ctx context.Context, cfg *feed.Config) (*model.Fe
3333
}
3434

3535
if info.LinkType == model.TypeUser {
36-
3736
users, err := t.client.GetUsers(&helix.UsersParams{
3837
Logins: []string{info.ItemID},
3938
})
@@ -51,7 +50,7 @@ func (t *TwitchBuilder) Build(_ctx context.Context, cfg *feed.Config) (*model.Fe
5150

5251
isStreaming := false
5352
streamID := ""
54-
streams, err := t.client.GetStreams(&helix.StreamsParams{
53+
streams, _ := t.client.GetStreams(&helix.StreamsParams{
5554
UserIDs: []string{user.ID},
5655
})
5756
if len(streams.Data.Streams) > 0 {
@@ -72,10 +71,8 @@ func (t *TwitchBuilder) Build(_ctx context.Context, cfg *feed.Config) (*model.Fe
7271

7372
var added = 0
7473
for _, video := range videos.Data.Videos {
75-
7674
// Do not add the video of an ongoing stream because it will be incomplete
7775
if !isStreaming || video.StreamID != streamID {
78-
7976
date, err := time.Parse(time.RFC3339, video.PublishedAt)
8077
if err != nil {
8178
return nil, errors.Wrapf(err, "cannot parse PublishedAt time: %s", video.PublishedAt)
@@ -107,11 +104,9 @@ func (t *TwitchBuilder) Build(_ctx context.Context, cfg *feed.Config) (*model.Fe
107104
return feed, nil
108105
}
109106
}
110-
111107
}
112108

113109
return feed, nil
114-
115110
}
116111

117112
return nil, errors.New("unsupported feed type")

pkg/builder/twitch_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package builder
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
8+
"github.com/mxpv/podsync/pkg/model"
9+
)
10+
11+
func TestParseURL_TwitchUser(t *testing.T) {
12+
info, err := ParseURL("https://www.twitch.tv/samueletienne")
13+
require.NoError(t, err)
14+
require.Equal(t, model.TypeUser, info.LinkType)
15+
require.Equal(t, model.ProviderTwitch, info.Provider)
16+
require.Equal(t, "samueletienne", info.ItemID)
17+
18+
info, err = ParseURL("https://twitch.tv/testuser")
19+
require.NoError(t, err)
20+
require.Equal(t, model.TypeUser, info.LinkType)
21+
require.Equal(t, model.ProviderTwitch, info.Provider)
22+
require.Equal(t, "testuser", info.ItemID)
23+
}
24+
25+
func TestParseURL_TwitchInvalidLink(t *testing.T) {
26+
_, err := ParseURL("https://www.twitch.tv/")
27+
require.Error(t, err)
28+
require.Contains(t, err.Error(), "invalid id")
29+
30+
_, err = ParseURL("https://www.twitch.tv//")
31+
require.Error(t, err)
32+
require.Contains(t, err.Error(), "invald twitch user path")
33+
34+
_, err = ParseURL("https://www.twitch.tv/user/extra/path")
35+
require.Error(t, err)
36+
require.Contains(t, err.Error(), "invald twitch user path")
37+
}
38+
39+
func TestNewTwitchBuilder_InvalidKey(t *testing.T) {
40+
_, err := NewTwitchBuilder("invalid_key")
41+
require.Error(t, err)
42+
require.Contains(t, err.Error(), "invalid twitch key")
43+
44+
_, err = NewTwitchBuilder("only_one_part")
45+
require.Error(t, err)
46+
require.Contains(t, err.Error(), "invalid twitch key")
47+
48+
_, err = NewTwitchBuilder("")
49+
require.Error(t, err)
50+
require.Contains(t, err.Error(), "invalid twitch key")
51+
}
52+

0 commit comments

Comments
 (0)