diff --git a/post_test.go b/post_test.go index 759636a..5a1fd67 100644 --- a/post_test.go +++ b/post_test.go @@ -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() diff --git a/testdata/post/edit.json b/testdata/post/edit.json new file mode 100644 index 0000000..390b182 --- /dev/null +++ b/testdata/post/edit.json @@ -0,0 +1,107 @@ +{ + "removed_by_category": null, + "approved_at_utc": null, + "banned_by": null, + "author_flair_type": "text", + "domain": "self.test", + "allow_live_comments": false, + "subreddit": "test", + "selftext_html": "
this is edited
\n