Skip to content

Commit 742a728

Browse files
PlutokekzLukas Mahr
andauthored
feat: add get project latest version by name endpoint (#37)
Co-authored-by: Lukas Mahr <[email protected]>
1 parent 9e6a5ed commit 742a728

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

project.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"net/http"
7+
"net/url"
78
"strconv"
89

910
"github.com/google/uuid"
@@ -65,6 +66,15 @@ func (ps ProjectService) GetAll(ctx context.Context, po PageOptions) (p Page[Pro
6566
return
6667
}
6768

69+
func (ps ProjectService) Latest(ctx context.Context, name string) (p Project, err error) {
70+
req, err := ps.client.newRequest(ctx, http.MethodGet, fmt.Sprintf("/api/v1/project/latest/%s", url.PathEscape(name)))
71+
if err != nil {
72+
return
73+
}
74+
_, err = ps.client.doRequest(req, &p)
75+
return
76+
}
77+
6878
func (ps ProjectService) GetProjectsForName(ctx context.Context, name string, excludeInactive, onlyRoot bool) (p []Project, err error) {
6979
params := map[string]string{
7080
"name": name,

project_test.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,45 @@ func TestProjectService_Clone_v4_10(t *testing.T) {
4848
require.NoError(t, err)
4949
require.Empty(t, token)
5050
}
51+
func TestProjectService_Latest(t *testing.T) {
52+
client := setUpContainer(t, testContainerOptions{
53+
Version: "4.12.7",
54+
APIPermissions: []string{
55+
PermissionPortfolioManagement,
56+
PermissionViewPortfolio,
57+
},
58+
})
59+
var name = "acme-app"
60+
project, err := client.Project.Create(context.Background(), Project{
61+
Name: name,
62+
Version: "1.0.0",
63+
IsLatest: OptionalBoolOf(true),
64+
})
65+
require.NoError(t, err)
66+
latest, err := client.Project.Latest(context.Background(), name)
67+
68+
require.NoError(t, err)
69+
require.Equal(t, project.Version, latest.Version)
70+
71+
token, err := client.Project.Clone(context.Background(), ProjectCloneRequest{
72+
ProjectUUID: project.UUID,
73+
Version: "2.0.0",
74+
MakeCloneLatest: OptionalBoolOf(true),
75+
})
76+
require.NoError(t, err)
77+
require.NotEmpty(t, token)
78+
79+
for {
80+
processing, err := client.Event.IsBeingProcessed(context.Background(), token)
81+
require.NoError(t, err)
82+
if !processing {
83+
break
84+
}
85+
}
86+
87+
latest, err = client.Project.Latest(context.Background(), name)
88+
89+
require.NoError(t, err)
90+
require.Equal(t, "2.0.0", latest.Version)
91+
92+
}

0 commit comments

Comments
 (0)