Add methods to set suggested comment sort for posts

Signed-off-by: Vartan Benohanian <vartanbeno@gmail.com>
This commit is contained in:
Vartan Benohanian 2020-07-16 18:33:43 -04:00
parent 6b99e3957a
commit 930d294e70
2 changed files with 262 additions and 0 deletions

64
post.go
View File

@ -310,3 +310,67 @@ func (s *PostService) UnpinFromProfile(ctx context.Context, id string) (*Respons
return s.client.Do(ctx, req, nil)
}
// setSuggestedSort sets the suggested comment sort for the post.
// sort must be one of: confidence (i.e. best), top, new, controversial, old, random, qa, live
func (s *PostService) setSuggestedSort(ctx context.Context, id string, sort string) (*Response, error) {
path := "api/set_suggested_sort"
form := url.Values{}
form.Set("api_type", "json")
form.Set("id", id)
form.Set("sort", sort)
req, err := s.client.NewRequestWithForm(http.MethodPost, path, form)
if err != nil {
return nil, err
}
return s.client.Do(ctx, req, nil)
}
// SetSuggestedSortBest sets the suggested comment sort for the post to best.
func (s *PostService) SetSuggestedSortBest(ctx context.Context, id string) (*Response, error) {
return s.setSuggestedSort(ctx, id, "confidence")
}
// SetSuggestedSortTop sets the suggested comment sort for the post to top.
func (s *PostService) SetSuggestedSortTop(ctx context.Context, id string) (*Response, error) {
return s.setSuggestedSort(ctx, id, "top")
}
// SetSuggestedSortNew sets the suggested comment sort for the post to new.
func (s *PostService) SetSuggestedSortNew(ctx context.Context, id string) (*Response, error) {
return s.setSuggestedSort(ctx, id, "new")
}
// SetSuggestedSortControversial sets the suggested comment sort for the post to controversial.
func (s *PostService) SetSuggestedSortControversial(ctx context.Context, id string) (*Response, error) {
return s.setSuggestedSort(ctx, id, "controversial")
}
// SetSuggestedSortOld sorts the comments on the posts randomly.
func (s *PostService) SetSuggestedSortOld(ctx context.Context, id string) (*Response, error) {
return s.setSuggestedSort(ctx, id, "old")
}
// SetSuggestedSortRandom sets the suggested comment sort for the post to random.
func (s *PostService) SetSuggestedSortRandom(ctx context.Context, id string) (*Response, error) {
return s.setSuggestedSort(ctx, id, "random")
}
// SetSuggestedSortAMA sets the suggested comment sort for the post to a Q&A styled fashion.
func (s *PostService) SetSuggestedSortAMA(ctx context.Context, id string) (*Response, error) {
return s.setSuggestedSort(ctx, id, "qa")
}
// SetSuggestedSortLive sets the suggested comment sort for the post to stream new comments as they're posted.
// As of now, this is still in beta, so it's not a fully developed feature yet. It just sets the sort as "new" for now.
func (s *PostService) SetSuggestedSortLive(ctx context.Context, id string) (*Response, error) {
return s.setSuggestedSort(ctx, id, "live")
}
// ClearSuggestedSort clears the suggested comment sort for the post.
func (s *PostService) ClearSuggestedSort(ctx context.Context, id string) (*Response, error) {
return s.setSuggestedSort(ctx, id, "")
}

View File

@ -224,3 +224,201 @@ func TestPostService_UnpinFromProfile(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, res.StatusCode)
}
func TestPostService_SetSuggestedSortBest(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/set_suggested_sort", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("id", "t3_test")
form.Set("sort", "confidence")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.PostForm)
})
res, err := client.Post.SetSuggestedSortBest(ctx, "t3_test")
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, res.StatusCode)
}
func TestPostService_SetSuggestedSortTop(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/set_suggested_sort", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("id", "t3_test")
form.Set("sort", "top")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.PostForm)
})
res, err := client.Post.SetSuggestedSortTop(ctx, "t3_test")
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, res.StatusCode)
}
func TestPostService_SetSuggestedSortNew(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/set_suggested_sort", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("id", "t3_test")
form.Set("sort", "new")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.PostForm)
})
res, err := client.Post.SetSuggestedSortNew(ctx, "t3_test")
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, res.StatusCode)
}
func TestPostService_SetSuggestedSortControversial(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/set_suggested_sort", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("id", "t3_test")
form.Set("sort", "controversial")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.PostForm)
})
res, err := client.Post.SetSuggestedSortControversial(ctx, "t3_test")
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, res.StatusCode)
}
func TestPostService_SetSuggestedSortOld(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/set_suggested_sort", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("id", "t3_test")
form.Set("sort", "old")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.PostForm)
})
res, err := client.Post.SetSuggestedSortOld(ctx, "t3_test")
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, res.StatusCode)
}
func TestPostService_SetSuggestedSortRandom(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/set_suggested_sort", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("id", "t3_test")
form.Set("sort", "random")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.PostForm)
})
res, err := client.Post.SetSuggestedSortRandom(ctx, "t3_test")
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, res.StatusCode)
}
func TestPostService_SetSuggestedSortAMA(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/set_suggested_sort", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("id", "t3_test")
form.Set("sort", "qa")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.PostForm)
})
res, err := client.Post.SetSuggestedSortAMA(ctx, "t3_test")
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, res.StatusCode)
}
func TestPostService_SetSuggestedSortLive(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/set_suggested_sort", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("id", "t3_test")
form.Set("sort", "live")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.PostForm)
})
res, err := client.Post.SetSuggestedSortLive(ctx, "t3_test")
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, res.StatusCode)
}
func TestPostService_ClearSuggestedSort(t *testing.T) {
setup()
defer teardown()
mux.HandleFunc("/api/set_suggested_sort", func(w http.ResponseWriter, r *http.Request) {
assert.Equal(t, http.MethodPost, r.Method)
form := url.Values{}
form.Set("api_type", "json")
form.Set("id", "t3_test")
form.Set("sort", "")
err := r.ParseForm()
assert.NoError(t, err)
assert.Equal(t, form, r.PostForm)
})
res, err := client.Post.ClearSuggestedSort(ctx, "t3_test")
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, res.StatusCode)
}