add test cases for status.go
target methods: - GetStatusCard() - GetStatusContext() - GetTimelineHashtag() - DeleteStatus() - Search()pull/26/head
parent
fe02b9e6af
commit
b573bd5eb7
185
status_test.go
185
status_test.go
|
@ -66,6 +66,75 @@ func TestGetStatus(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetStatusCard(t *testing.T) {
|
||||||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.URL.Path != "/api/v1/statuses/1234567/card" {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Fprintln(w, `{"Title": "zzz"}`)
|
||||||
|
return
|
||||||
|
}))
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
|
client := NewClient(&Config{
|
||||||
|
Server: ts.URL,
|
||||||
|
ClientID: "foo",
|
||||||
|
ClientSecret: "bar",
|
||||||
|
AccessToken: "zoo",
|
||||||
|
})
|
||||||
|
_, err := client.GetStatusCard(context.Background(), 123)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("should be fail: %v", err)
|
||||||
|
}
|
||||||
|
card, err := client.GetStatusCard(context.Background(), 1234567)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("should not be fail: %v", err)
|
||||||
|
}
|
||||||
|
if card.Title != "zzz" {
|
||||||
|
t.Fatalf("want %q but %q", "zzz", card.Title)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetStatusContext(t *testing.T) {
|
||||||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.URL.Path != "/api/v1/statuses/1234567/context" {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Fprintln(w, `{"ancestors": [{"Content": "zzz"},{"Content": "bbb"}]}`)
|
||||||
|
return
|
||||||
|
}))
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
|
client := NewClient(&Config{
|
||||||
|
Server: ts.URL,
|
||||||
|
ClientID: "foo",
|
||||||
|
ClientSecret: "bar",
|
||||||
|
AccessToken: "zoo",
|
||||||
|
})
|
||||||
|
_, err := client.GetStatusContext(context.Background(), 123)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("should be fail: %v", err)
|
||||||
|
}
|
||||||
|
context, err := client.GetStatusContext(context.Background(), 1234567)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("should not be fail: %v", err)
|
||||||
|
}
|
||||||
|
if len(context.Ancestors) != 2 {
|
||||||
|
t.Fatalf("Ancestors should have 2 entries but %q", len(context.Ancestors))
|
||||||
|
}
|
||||||
|
if context.Ancestors[0].Content != "zzz" {
|
||||||
|
t.Fatalf("want %q but %q", "zzz", context.Ancestors[0].Content)
|
||||||
|
}
|
||||||
|
if context.Ancestors[1].Content != "bbb" {
|
||||||
|
t.Fatalf("want %q but %q", "bbb", context.Ancestors[1].Content)
|
||||||
|
}
|
||||||
|
if len(context.Descendants) > 0 {
|
||||||
|
t.Fatalf("Descendants should not be included")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestGetRebloggedBy(t *testing.T) {
|
func TestGetRebloggedBy(t *testing.T) {
|
||||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
if r.URL.Path != "/api/v1/statuses/1234567/reblogged_by" {
|
if r.URL.Path != "/api/v1/statuses/1234567/reblogged_by" {
|
||||||
|
@ -258,6 +327,122 @@ func TestUnfavourite(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetTimelineHashtag(t *testing.T) {
|
||||||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.URL.Path != "/api/v1/timelines/tag/zzz" {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Fprintln(w, `[{"Content": "zzz"},{"Content": "yyy"}]`)
|
||||||
|
return
|
||||||
|
}))
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
|
client := NewClient(&Config{
|
||||||
|
Server: ts.URL,
|
||||||
|
ClientID: "foo",
|
||||||
|
ClientSecret: "bar",
|
||||||
|
AccessToken: "zoo",
|
||||||
|
})
|
||||||
|
_, err := client.GetTimelineHashtag(context.Background(), "notfound")
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("should be fail: %v", err)
|
||||||
|
}
|
||||||
|
tags, err := client.GetTimelineHashtag(context.Background(), "zzz")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("should not be fail: %v", err)
|
||||||
|
}
|
||||||
|
if len(tags) != 2 {
|
||||||
|
t.Fatalf("should have %q entries but %q", "2", len(tags))
|
||||||
|
}
|
||||||
|
if tags[0].Content != "zzz" {
|
||||||
|
t.Fatalf("want %q but %q", "zzz", tags[0].Content)
|
||||||
|
}
|
||||||
|
if tags[1].Content != "yyy" {
|
||||||
|
t.Fatalf("want %q but %q", "zzz", tags[1].Content)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteStatus(t *testing.T) {
|
||||||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.URL.Path != "/api/v1/statuses/1234567" {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if r.Method != "DELETE" {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusMethodNotAllowed)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}))
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
|
client := NewClient(&Config{
|
||||||
|
Server: ts.URL,
|
||||||
|
ClientID: "foo",
|
||||||
|
ClientSecret: "bar",
|
||||||
|
AccessToken: "zoo",
|
||||||
|
})
|
||||||
|
err := client.DeleteStatus(context.Background(), 123)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("should be fail: %v", err)
|
||||||
|
}
|
||||||
|
err = client.DeleteStatus(context.Background(), 1234567)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("should not be fail: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSearch(t *testing.T) {
|
||||||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.URL.Path != "/api/v1/search" {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if r.RequestURI != "/api/v1/search?q=q&resolve=false" {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintln(w, `
|
||||||
|
{"accounts":[{"Username": "zzz"},{"Username": "yyy"}],
|
||||||
|
"statuses":[{"Content": "aaa"}],
|
||||||
|
"hashtags":["tag","tag2","tag3"]
|
||||||
|
}`)
|
||||||
|
return
|
||||||
|
}))
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
|
client := NewClient(&Config{
|
||||||
|
Server: ts.URL,
|
||||||
|
ClientID: "foo",
|
||||||
|
ClientSecret: "bar",
|
||||||
|
AccessToken: "zoo",
|
||||||
|
})
|
||||||
|
ret, err := client.Search(context.Background(), "q", false)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("should not be fail: %v", err)
|
||||||
|
}
|
||||||
|
if len(ret.Accounts) != 2 {
|
||||||
|
t.Fatalf("Accounts have %q entries, but %q", "2", len(ret.Accounts))
|
||||||
|
}
|
||||||
|
if ret.Accounts[0].Username != "zzz" {
|
||||||
|
t.Fatalf("Accounts Username should %q , but %q", "zzz", ret.Accounts[0].Username)
|
||||||
|
}
|
||||||
|
if len(ret.Statuses) != 1 {
|
||||||
|
t.Fatalf("Statuses have %q entries, but %q", "1", len(ret.Statuses))
|
||||||
|
}
|
||||||
|
if ret.Statuses[0].Content != "aaa" {
|
||||||
|
t.Fatalf("Statuses Content should %q , but %q", "aaa", ret.Statuses[0].Content)
|
||||||
|
}
|
||||||
|
if len(ret.Hashtags) != 3 {
|
||||||
|
t.Fatalf("Hashtags have %q entries, but %q", "3", len(ret.Hashtags))
|
||||||
|
}
|
||||||
|
if ret.Hashtags[2] != "tag3" {
|
||||||
|
t.Fatalf("Hashtags[2] should %q , but %q", "tag3", ret.Hashtags[2])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestUploadMedia(t *testing.T) {
|
func TestUploadMedia(t *testing.T) {
|
||||||
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
if r.URL.Path != "/api/v1/media" {
|
if r.URL.Path != "/api/v1/media" {
|
||||||
|
|
Loading…
Reference in New Issue