11package api
22
33import (
4+ "encoding/json"
5+ "net/url"
46"testing"
7+ "time"
58
69"github.com/Castcloud/castcloud-go-server/Godeps/_workspace/src/github.com/stretchr/testify/assert"
710)
811
12+ func TestGetNewEpisodes (t * testing.T ) {
13+ r := createRouter ()
14+
15+ req := testRequest (r ,"GET" ,"/library/newepisodes?since=32503679999" ,nil )
16+ req .Header .Set ("Authorization" ,"token" )
17+ res := checkNewEpisodes (t ,req )
18+ assert .Len (t ,res .Episodes ,2 )
19+ assert .Equal (t ,Episode {
20+ ID :2 ,
21+ CastID :69 ,
22+ GUID :"since1" ,
23+ CrawlTS :32503680000 ,
24+ },res .Episodes [0 ])
25+ assert .Equal (t ,Episode {
26+ ID :3 ,
27+ CastID :69 ,
28+ GUID :"since2" ,
29+ CrawlTS :32503680001 ,
30+ },res .Episodes [1 ])
31+
32+ req .URL ,_ = url .Parse ("/library/newepisodes?since=32503680000" )
33+ res = checkNewEpisodes (t ,req )
34+ assert .Len (t ,res .Episodes ,1 )
35+ assert .Equal (t ,Episode {
36+ ID :3 ,
37+ CastID :69 ,
38+ GUID :"since2" ,
39+ CrawlTS :32503680001 ,
40+ },res .Episodes [0 ])
41+
42+ req .URL ,_ = url .Parse ("/library/newepisodes?since=32503680001" )
43+ res = checkNewEpisodes (t ,req )
44+ assert .Len (t ,res .Episodes ,0 )
45+
46+ req .URL ,_ = url .Parse ("/library/newepisodes" )
47+ res = checkNewEpisodes (t ,req )
48+ assert .True (t ,len (res .Episodes )> 2 )
49+
50+ req .URL ,_ = url .Parse ("/library/newepisodes?since=what" )
51+ resp := req .send ()
52+ assert .Equal (t ,400 ,resp .Code )
53+ }
54+
55+ func checkNewEpisodes (t * testing.T ,req testReq )newEpisodes {
56+ now := time .Now ().Unix ()
57+ res := req .send ()
58+ assert .Equal (t ,200 ,res .Code )
59+ data := newEpisodes {}
60+ err := json .Unmarshal (res .Body .Bytes (),& data )
61+ assert .Nil (t ,err )
62+ assert .True (t ,data .Timestamp >= now )
63+ return data
64+ }
65+
966func TestGetEpisodes (t * testing.T ) {
1067r := createRouter ()
1168
@@ -30,9 +87,9 @@ func TestGetEpisodes(t *testing.T) {
3087assert .Equal (t ,200 ,res .Code )
3188assert .Equal (t ,testJSON ([]Episode {}),res .Body .String ())
3289
33- // It should return500 if the ID is invalid
90+ // It should return400 if the ID is invalid
3491req .URL .Path = "/library/episodes/datcast"
35- assert .Equal (t ,500 ,req .send ().Code )
92+ assert .Equal (t ,400 ,req .send ().Code )
3693}
3794
3895func TestGetEpisode (t * testing.T ) {
@@ -50,7 +107,7 @@ func TestGetEpisode(t *testing.T) {
50107assert .Equal (t ,200 ,res .Code )
51108assert .Equal (t ,expectedJSON ,res .Body .String ())
52109
53- // It should return500 if the ID is invalid
110+ // It should return400 if the ID is invalid
54111req .URL .Path = "/library/episode/datepisode"
55- assert .Equal (t ,500 ,req .send ().Code )
112+ assert .Equal (t ,400 ,req .send ().Code )
56113}