Add wiki page revision retrieval
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
15265e4599
commit
3cb64ca7f9
2 changed files with 52 additions and 0 deletions
15
wiki.go
15
wiki.go
|
|
@ -3,6 +3,7 @@ package forge
|
|||
import (
|
||||
"context"
|
||||
"iter"
|
||||
"strconv"
|
||||
|
||||
"dappco.re/go/core/forge/types"
|
||||
)
|
||||
|
|
@ -58,6 +59,20 @@ func (s *WikiService) GetPage(ctx context.Context, owner, repo, pageName string)
|
|||
return &out, nil
|
||||
}
|
||||
|
||||
// GetPageRevisions returns the revision history for a wiki page.
|
||||
// Page is optional; pass a value greater than zero to request a specific page of results.
|
||||
func (s *WikiService) GetPageRevisions(ctx context.Context, owner, repo, pageName string, page int) (*types.WikiCommitList, error) {
|
||||
path := ResolvePath("/api/v1/repos/{owner}/{repo}/wiki/revisions/{pageName}", pathParams("owner", owner, "repo", repo, "pageName", pageName))
|
||||
if page > 0 {
|
||||
path += "?page=" + strconv.Itoa(page)
|
||||
}
|
||||
var out types.WikiCommitList
|
||||
if err := s.client.Get(ctx, path, &out); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &out, nil
|
||||
}
|
||||
|
||||
// CreatePage creates a new wiki page.
|
||||
func (s *WikiService) CreatePage(ctx context.Context, owner, repo string, opts *types.CreateWikiPageOptions) (*types.WikiPage, error) {
|
||||
path := ResolvePath("/api/v1/repos/{owner}/{repo}/wiki/new", pathParams("owner", owner, "repo", repo))
|
||||
|
|
|
|||
37
wiki_test.go
37
wiki_test.go
|
|
@ -105,6 +105,43 @@ func TestWikiService_GetPage_Good(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestWikiService_GetPageRevisions_Good(t *testing.T) {
|
||||
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodGet {
|
||||
t.Errorf("expected GET, got %s", r.Method)
|
||||
}
|
||||
if r.URL.Path != "/api/v1/repos/core/go-forge/wiki/revisions/Home" {
|
||||
t.Errorf("wrong path: %s", r.URL.Path)
|
||||
}
|
||||
if got := r.URL.Query().Get("page"); got != "2" {
|
||||
t.Errorf("got page=%q, want %q", got, "2")
|
||||
}
|
||||
json.NewEncoder(w).Encode(types.WikiCommitList{
|
||||
Count: 2,
|
||||
WikiCommits: []*types.WikiCommit{
|
||||
{ID: "abc123", Message: "Initial import"},
|
||||
{ID: "def456", Message: "Updated home page"},
|
||||
},
|
||||
})
|
||||
}))
|
||||
defer srv.Close()
|
||||
|
||||
f := NewForge(srv.URL, "tok")
|
||||
revisions, err := f.Wiki.GetPageRevisions(context.Background(), "core", "go-forge", "Home", 2)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if revisions.Count != 2 {
|
||||
t.Fatalf("got count=%d, want 2", revisions.Count)
|
||||
}
|
||||
if len(revisions.WikiCommits) != 2 {
|
||||
t.Fatalf("got %d revisions, want 2", len(revisions.WikiCommits))
|
||||
}
|
||||
if revisions.WikiCommits[0].ID != "abc123" || revisions.WikiCommits[1].Message != "Updated home page" {
|
||||
t.Fatalf("got %#v", revisions.WikiCommits)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWikiService_CreatePage_Good(t *testing.T) {
|
||||
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodPost {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue