Add tests for submitting/editing a post

Signed-off-by: Vartan Benohanian <vartanbeno@gmail.com>
This commit is contained in:
Vartan Benohanian
2020-07-22 21:54:19 -04:00
parent cb8d5d19d0
commit d398d8231f
3 changed files with 255 additions and 0 deletions
+137
View File
@@ -94,6 +94,41 @@ var expectedComments = []*Comment{
},
}
var expectedSubmittedPost = &Submitted{
ID: "hw6l6a",
FullID: "t3_hw6l6a",
URL: "https://www.reddit.com/r/test/comments/hw6l6a/test_title/",
}
var expectedEditedPost = &Post{
ID: "hw6l6a",
FullID: "t3_hw6l6a",
Created: &Timestamp{time.Date(2020, 7, 23, 1, 24, 55, 0, time.UTC)},
Edited: &Timestamp{time.Date(2020, 7, 23, 1, 42, 44, 0, time.UTC)},
Permalink: "https://www.reddit.com/r/test/comments/hw6l6a/test_title/",
URL: "https://www.reddit.com/r/test/comments/hw6l6a/test_title/",
Title: "Test Title",
Body: "this is edited",
Likes: Bool(true),
Score: 1,
UpvoteRatio: 1,
NumberOfComments: 0,
SubredditID: "t5_2qh23",
SubredditName: "test",
SubredditNamePrefixed: "r/test",
AuthorID: "t2_164ab8",
AuthorName: "v_95",
Spoiler: true,
IsSelfPost: true,
}
func TestPostService_Get(t *testing.T) {
setup()
defer teardown()
@@ -112,6 +147,108 @@ func TestPostService_Get(t *testing.T) {
assert.Equal(t, expectedComments, comments)
}
func TestPostService_SubmitText(t *testing.T) {
setup()
defer teardown()
blob, err := readFileContents("testdata/post/submit.json")
assert.NoError(t, err)
mux.HandleFunc("/api/submit", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("kind", "self")
form.Set("sr", "test")
form.Set("title", "Test Title")
form.Set("text", "Test Text")
form.Set("spoiler", "true")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.Form)
fmt.Fprint(w, blob)
})
submittedPost, _, err := client.Post.SubmitText(ctx, SubmitTextOptions{
Subreddit: "test",
Title: "Test Title",
Text: "Test Text",
Spoiler: true,
})
assert.NoError(t, err)
assert.Equal(t, expectedSubmittedPost, submittedPost)
}
func TestPostService_SubmitLink(t *testing.T) {
setup()
defer teardown()
blob, err := readFileContents("testdata/post/submit.json")
assert.NoError(t, err)
mux.HandleFunc("/api/submit", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("kind", "link")
form.Set("sr", "test")
form.Set("title", "Test Title")
form.Set("url", "https://www.example.com")
form.Set("sendreplies", "false")
form.Set("resubmit", "true")
form.Set("nsfw", "true")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.Form)
fmt.Fprint(w, blob)
})
submittedPost, _, err := client.Post.SubmitLink(ctx, SubmitLinkOptions{
Subreddit: "test",
Title: "Test Title",
URL: "https://www.example.com",
SendReplies: Bool(false),
Resubmit: true,
NSFW: true,
})
assert.NoError(t, err)
assert.Equal(t, expectedSubmittedPost, submittedPost)
}
func TestPostService_Edit(t *testing.T) {
setup()
defer teardown()
blob, err := readFileContents("testdata/post/edit.json")
assert.NoError(t, err)
mux.HandleFunc("/api/editusertext", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("return_rtjson", "true")
form.Set("thing_id", "t3_test")
form.Set("text", "test edit")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.Form)
fmt.Fprint(w, blob)
})
editedPost, _, err := client.Post.Edit(ctx, "t3_test", "test edit")
assert.NoError(t, err)
assert.Equal(t, expectedEditedPost, editedPost)
}
func TestPostService_Hide(t *testing.T) {
setup()
defer teardown()