Skip to content

Commit 02e2105

Browse files
committed
Add tests
Signed-off-by: Maksym Pavlenko <[email protected]>
1 parent d499214 commit 02e2105

File tree

3 files changed

+53
-10
lines changed

3 files changed

+53
-10
lines changed

go.sum

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,13 @@ github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw
3838
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
3939
github.com/gilliek/go-opml v1.0.0 h1:X8xVjtySRXU/x6KvaiXkn7OV3a4DHqxY8Rpv6U/JvCY=
4040
github.com/gilliek/go-opml v1.0.0/go.mod h1:fOxmtlzyBvUjU6bjpdjyxCGlWz+pgtAHrHf/xRZl3lk=
41-
<<<<<<< HEAD
4241
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
4342
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
4443
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
4544
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
4645
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
47-
=======
4846
github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c=
4947
github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
50-
>>>>>>> da8d2ab (feat: add Twitch support)
5148
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
5249
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
5350
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=

pkg/builder/twitch.go

Lines changed: 2 additions & 7 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)
@@ -92,7 +89,7 @@ func (t *TwitchBuilder) Build(_ctx context.Context, cfg *feed.Config) (*model.Fe
9289

9390
feed.Episodes = append(feed.Episodes, &model.Episode{
9491
ID: video.ID,
95-
Title: fmt.Sprintf("%s (%s)", video.Title, date),
92+
Title: fmt.Sprintf("%s (%s)", video.Title, date.Format("2006-01-02 15:04 UTC")),
9693
Description: video.Description,
9794
Thumbnail: thumbnailUrl,
9895
Duration: durationSeconds,
@@ -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: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+
}

0 commit comments

Comments
 (0)