Add tests for submitting/editing a post
Signed-off-by: Vartan Benohanian <vartanbeno@gmail.com>
This commit is contained in:
parent
cb8d5d19d0
commit
d398d8231f
3 changed files with 255 additions and 0 deletions
137
post_test.go
137
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) {
|
func TestPostService_Get(t *testing.T) {
|
||||||
setup()
|
setup()
|
||||||
defer teardown()
|
defer teardown()
|
||||||
|
@ -112,6 +147,108 @@ func TestPostService_Get(t *testing.T) {
|
||||||
assert.Equal(t, expectedComments, comments)
|
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) {
|
func TestPostService_Hide(t *testing.T) {
|
||||||
setup()
|
setup()
|
||||||
defer teardown()
|
defer teardown()
|
||||||
|
|
107
testdata/post/edit.json
vendored
Normal file
107
testdata/post/edit.json
vendored
Normal file
|
@ -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": "<!-- SC_OFF --><div class=\"md\"><p>this is edited</p>\n</div><!-- SC_ON -->",
|
||||||
|
"content_categories": null,
|
||||||
|
"selftext": "this is edited",
|
||||||
|
"likes": true,
|
||||||
|
"suggested_sort": null,
|
||||||
|
"user_reports": [],
|
||||||
|
"saved": false,
|
||||||
|
"banned_at_utc": null,
|
||||||
|
"mod_reason_title": null,
|
||||||
|
"gilded": 0,
|
||||||
|
"archived": false,
|
||||||
|
"clicked": false,
|
||||||
|
"no_follow": false,
|
||||||
|
"title": "Test Title",
|
||||||
|
"link_flair_richtext": [],
|
||||||
|
"is_crosspostable": true,
|
||||||
|
"pinned": false,
|
||||||
|
"subreddit_name_prefixed": "r/test",
|
||||||
|
"over_18": false,
|
||||||
|
"hidden": false,
|
||||||
|
"pwls": 6,
|
||||||
|
"all_awardings": [],
|
||||||
|
"subreddit_id": "t5_2qh23",
|
||||||
|
"awarders": [],
|
||||||
|
"link_flair_css_class": null,
|
||||||
|
"discussion_type": null,
|
||||||
|
"downs": 0,
|
||||||
|
"removal_reason": null,
|
||||||
|
"can_gild": false,
|
||||||
|
"thumbnail_height": null,
|
||||||
|
"top_awarded_type": null,
|
||||||
|
"hide_score": false,
|
||||||
|
"spoiler": true,
|
||||||
|
"locked": false,
|
||||||
|
"name": "t3_hw6l6a",
|
||||||
|
"author_flair_text": null,
|
||||||
|
"quarantine": false,
|
||||||
|
"rte_mode": "markdown",
|
||||||
|
"link_flair_text_color": "dark",
|
||||||
|
"upvote_ratio": 1.0,
|
||||||
|
"author_flair_background_color": null,
|
||||||
|
"link_flair_type": "text",
|
||||||
|
"visited": false,
|
||||||
|
"removed_by": null,
|
||||||
|
"mod_note": null,
|
||||||
|
"distinguished": null,
|
||||||
|
"total_awards_received": 0,
|
||||||
|
"wls": 6,
|
||||||
|
"mod_reason_by": null,
|
||||||
|
"media_embed": {},
|
||||||
|
"thumbnail_width": null,
|
||||||
|
"author_flair_template_id": null,
|
||||||
|
"is_original_content": false,
|
||||||
|
"author_fullname": "t2_164ab8",
|
||||||
|
"link_flair_background_color": "",
|
||||||
|
"secure_media": null,
|
||||||
|
"is_reddit_media_domain": false,
|
||||||
|
"id": "hw6l6a",
|
||||||
|
"is_robot_indexable": true,
|
||||||
|
"is_meta": false,
|
||||||
|
"category": null,
|
||||||
|
"secure_media_embed": {},
|
||||||
|
"report_reasons": null,
|
||||||
|
"author": "v_95",
|
||||||
|
"num_crossposts": 0,
|
||||||
|
"num_comments": 0,
|
||||||
|
"can_mod_post": false,
|
||||||
|
"send_replies": true,
|
||||||
|
"score": 1,
|
||||||
|
"approved_by": null,
|
||||||
|
"author_premium": false,
|
||||||
|
"thumbnail": "spoiler",
|
||||||
|
"edited": 1595468564.0,
|
||||||
|
"author_flair_css_class": null,
|
||||||
|
"contest_mode": false,
|
||||||
|
"view_count": null,
|
||||||
|
"author_flair_richtext": [],
|
||||||
|
"author_patreon_flair": false,
|
||||||
|
"gildings": {},
|
||||||
|
"subreddit_type": "public",
|
||||||
|
"is_self": true,
|
||||||
|
"author_flair_text_color": null,
|
||||||
|
"permalink": "/r/test/comments/hw6l6a/test_title/",
|
||||||
|
"num_reports": null,
|
||||||
|
"parent_whitelist_status": "all_ads",
|
||||||
|
"stickied": false,
|
||||||
|
"created": 1595496295.0,
|
||||||
|
"url": "https://www.reddit.com/r/test/comments/hw6l6a/test_title/",
|
||||||
|
"whitelist_status": "all_ads",
|
||||||
|
"media_only": false,
|
||||||
|
"subreddit_subscribers": 8128,
|
||||||
|
"created_utc": 1595467495.0,
|
||||||
|
"link_flair_text": null,
|
||||||
|
"ups": 1,
|
||||||
|
"media": null,
|
||||||
|
"mod_reports": [],
|
||||||
|
"treatment_tags": [],
|
||||||
|
"is_video": false
|
||||||
|
}
|
11
testdata/post/submit.json
vendored
Normal file
11
testdata/post/submit.json
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"json": {
|
||||||
|
"errors": [],
|
||||||
|
"data": {
|
||||||
|
"url": "https://www.reddit.com/r/test/comments/hw6l6a/test_title/",
|
||||||
|
"drafts_count": 0,
|
||||||
|
"id": "hw6l6a",
|
||||||
|
"name": "t3_hw6l6a"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue