From 67a5573310cf23726e3c2ef4651221c6dc150075 Mon Sep 17 00:00:00 2001 From: Lucas Queiroz Date: Mon, 5 Oct 2020 01:07:54 -0300 Subject: [PATCH] [#13004] Add Timestamp to Tag list API (#13026) * Add Timestamp to Tag list API * Add unit test for ToCommitMeta * Rename timestamp to created * Reformat files --- modules/convert/git_commit.go | 5 ++-- modules/convert/git_commit_test.go | 42 ++++++++++++++++++++++++++++++ modules/structs/repo_commit.go | 2 ++ templates/swagger/v1_json.tmpl | 15 +++++++++++ 4 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 modules/convert/git_commit_test.go diff --git a/modules/convert/git_commit.go b/modules/convert/git_commit.go index 55cbb3af8..86d6dae96 100644 --- a/modules/convert/git_commit.go +++ b/modules/convert/git_commit.go @@ -28,8 +28,9 @@ func ToCommitUser(sig *git.Signature) *api.CommitUser { // ToCommitMeta convert a git.Tag to an api.CommitMeta func ToCommitMeta(repo *models.Repository, tag *git.Tag) *api.CommitMeta { return &api.CommitMeta{ - SHA: tag.Object.String(), - URL: util.URLJoin(repo.APIURL(), "git/commits", tag.ID.String()), + SHA: tag.Object.String(), + URL: util.URLJoin(repo.APIURL(), "git/commits", tag.ID.String()), + Created: tag.Tagger.When, } } diff --git a/modules/convert/git_commit_test.go b/modules/convert/git_commit_test.go new file mode 100644 index 000000000..2158d0d77 --- /dev/null +++ b/modules/convert/git_commit_test.go @@ -0,0 +1,42 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package convert + +import ( + "testing" + "time" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/git" + api "code.gitea.io/gitea/modules/structs" + "code.gitea.io/gitea/modules/util" + + "github.com/go-git/go-git/v5/plumbing/object" + "github.com/stretchr/testify/assert" +) + +func TestToCommitMeta(t *testing.T) { + assert.NoError(t, models.PrepareTestDatabase()) + headRepo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository) + sha1, _ := git.NewIDFromString("0000000000000000000000000000000000000000") + signature := &object.Signature{Name: "Test Signature", Email: "test@email.com", When: time.Unix(0, 0)} + tag := &git.Tag{ + Name: "Test Tag", + ID: sha1, + Object: sha1, + Type: "Test Type", + Tagger: signature, + Message: "Test Message", + } + + commitMeta := ToCommitMeta(headRepo, tag) + + assert.NotNil(t, commitMeta) + assert.EqualValues(t, &api.CommitMeta{ + SHA: "0000000000000000000000000000000000000000", + URL: util.URLJoin(headRepo.APIURL(), "git/commits", "0000000000000000000000000000000000000000"), + Created: time.Unix(0, 0), + }, commitMeta) +} diff --git a/modules/structs/repo_commit.go b/modules/structs/repo_commit.go index 088ccdf5a..b9607b185 100644 --- a/modules/structs/repo_commit.go +++ b/modules/structs/repo_commit.go @@ -20,6 +20,8 @@ type Identity struct { type CommitMeta struct { URL string `json:"url"` SHA string `json:"sha"` + // swagger:strfmt date-time + Created time.Time `json:"created"` } // CommitUser contains information of a user in the context of a commit. diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index e54f40d67..837705682 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -11297,6 +11297,11 @@ "committer": { "$ref": "#/definitions/User" }, + "created": { + "type": "string", + "format": "date-time", + "x-go-name": "Created" + }, "html_url": { "type": "string", "x-go-name": "HTMLURL" @@ -11340,6 +11345,11 @@ "type": "object", "title": "CommitMeta contains meta information of a commit in terms of API.", "properties": { + "created": { + "type": "string", + "format": "date-time", + "x-go-name": "Created" + }, "sha": { "type": "string", "x-go-name": "SHA" @@ -13065,6 +13075,11 @@ "committer": { "$ref": "#/definitions/CommitUser" }, + "created": { + "type": "string", + "format": "date-time", + "x-go-name": "Created" + }, "html_url": { "type": "string", "x-go-name": "HTMLURL"