Skip to content

Commit 38bdabf

Browse files
committed
fix: Add nil/default support to template displayName
1 parent 7c1317e commit 38bdabf

File tree

6 files changed

+43
-26
lines changed

6 files changed

+43
-26
lines changed

cli/templateedit.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ func (r *RootCmd) templateEdit() *serpent.Command {
169169

170170
req := codersdk.UpdateTemplateMeta{
171171
Name: name,
172-
DisplayName: displayName,
172+
DisplayName: &displayName,
173173
Description: &description,
174174
Icon: &icon,
175175
DefaultTTLMillis: defaultTTL.Milliseconds(),

coderd/templates.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -771,14 +771,15 @@ func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) {
771771
classicTemplateFlow = *req.UseClassicParameterFlow
772772
}
773773

774+
displayName := ptr.NilToDefault(req.DisplayName, template.DisplayName)
774775
description := ptr.NilToDefault(req.Description, template.Description)
775776
icon := ptr.NilToDefault(req.Icon, template.Icon)
776777

777778
var updated database.Template
778779
err = api.Database.InTx(func(tx database.Store) error {
779780
if req.Name == template.Name &&
780781
description == template.Description &&
781-
req.DisplayName == template.DisplayName &&
782+
displayName == template.DisplayName &&
782783
icon == template.Icon &&
783784
req.AllowUserAutostart == template.AllowUserAutostart &&
784785
req.AllowUserAutostop == template.AllowUserAutostop &&
@@ -830,7 +831,7 @@ func (api *API) patchTemplateMeta(rw http.ResponseWriter, r *http.Request) {
830831
ID: template.ID,
831832
UpdatedAt: dbtime.Now(),
832833
Name: name,
833-
DisplayName: req.DisplayName,
834+
DisplayName: displayName,
834835
Description: description,
835836
Icon: icon,
836837
AllowUserCancelWorkspaceJobs: req.AllowUserCancelWorkspaceJobs,

coderd/templates_test.go

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -901,7 +901,7 @@ func TestPatchTemplateMeta(t *testing.T) {
901901

902902
req := codersdk.UpdateTemplateMeta{
903903
Name: "new-template-name",
904-
DisplayName: "Displayed Name 456",
904+
DisplayName: ptr.Ref("Displayed Name 456"),
905905
Description: ptr.Ref("lorem ipsum dolor sit amet et cetera"),
906906
Icon: ptr.Ref("/icon/new-icon.png"),
907907
DefaultTTLMillis: 12 * time.Hour.Milliseconds(),
@@ -1167,7 +1167,7 @@ func TestPatchTemplateMeta(t *testing.T) {
11671167

11681168
got, err := client.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
11691169
Name: template.Name,
1170-
DisplayName: template.DisplayName,
1170+
DisplayName: &template.DisplayName,
11711171
Description: &template.Description,
11721172
Icon: &template.Icon,
11731173
DefaultTTLMillis: 0,
@@ -1202,7 +1202,7 @@ func TestPatchTemplateMeta(t *testing.T) {
12021202

12031203
got, err := client.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
12041204
Name: template.Name,
1205-
DisplayName: template.DisplayName,
1205+
DisplayName: &template.DisplayName,
12061206
Description: &template.Description,
12071207
Icon: &template.Icon,
12081208
DefaultTTLMillis: template.DefaultTTLMillis,
@@ -1263,7 +1263,7 @@ func TestPatchTemplateMeta(t *testing.T) {
12631263
allowAutostop.Store(false)
12641264
got, err := client.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
12651265
Name: template.Name,
1266-
DisplayName: template.DisplayName,
1266+
DisplayName: &template.DisplayName,
12671267
Description: &template.Description,
12681268
Icon: &template.Icon,
12691269
DefaultTTLMillis: template.DefaultTTLMillis,
@@ -1294,7 +1294,7 @@ func TestPatchTemplateMeta(t *testing.T) {
12941294

12951295
got, err := client.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
12961296
Name: template.Name,
1297-
DisplayName: template.DisplayName,
1297+
DisplayName: &template.DisplayName,
12981298
Description: &template.Description,
12991299
Icon: &template.Icon,
13001300
// Increase the default TTL to avoid error "not modified".
@@ -1442,7 +1442,7 @@ func TestPatchTemplateMeta(t *testing.T) {
14421442
require.EqualValues(t, 1, template.AutostopRequirement.Weeks)
14431443
req := codersdk.UpdateTemplateMeta{
14441444
Name: template.Name,
1445-
DisplayName: template.DisplayName,
1445+
DisplayName: &template.DisplayName,
14461446
Description: &template.Description,
14471447
Icon: &template.Icon,
14481448
AllowUserCancelWorkspaceJobs: template.AllowUserCancelWorkspaceJobs,
@@ -1519,7 +1519,7 @@ func TestPatchTemplateMeta(t *testing.T) {
15191519
require.EqualValues(t, 2, template.AutostopRequirement.Weeks)
15201520
req := codersdk.UpdateTemplateMeta{
15211521
Name: template.Name,
1522-
DisplayName: template.DisplayName,
1522+
DisplayName: &template.DisplayName,
15231523
Description: &template.Description,
15241524
Icon: &template.Icon,
15251525
AllowUserCancelWorkspaceJobs: template.AllowUserCancelWorkspaceJobs,
@@ -1556,7 +1556,7 @@ func TestPatchTemplateMeta(t *testing.T) {
15561556
require.EqualValues(t, 1, template.AutostopRequirement.Weeks)
15571557
req := codersdk.UpdateTemplateMeta{
15581558
Name: template.Name,
1559-
DisplayName: template.DisplayName,
1559+
DisplayName: &template.DisplayName,
15601560
Description: &template.Description,
15611561
Icon: &template.Icon,
15621562
AllowUserCancelWorkspaceJobs: template.AllowUserCancelWorkspaceJobs,
@@ -1626,25 +1626,30 @@ func TestPatchTemplateMeta(t *testing.T) {
16261626
user := coderdtest.CreateFirstUser(t, client)
16271627
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
16281628

1629+
displayName := "Test Display Name"
16291630
description := "test-description"
16301631
icon := "/icon/icon.png"
16311632
defaultTTLMillis := 10 * time.Hour.Milliseconds()
16321633

16331634
reference := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID, func(ctr *codersdk.CreateTemplateRequest) {
1635+
ctr.DisplayName = displayName
16341636
ctr.Description = description
16351637
ctr.Icon = icon
16361638
ctr.DefaultTTLMillis = ptr.Ref(defaultTTLMillis)
16371639
})
1640+
require.Equal(t, displayName, reference.DisplayName)
16381641
require.Equal(t, description, reference.Description)
16391642
require.Equal(t, icon, reference.Icon)
16401643

16411644
restoreReq := codersdk.UpdateTemplateMeta{
1645+
DisplayName: &displayName,
16421646
Description: &description,
16431647
Icon: &icon,
16441648
DefaultTTLMillis: defaultTTLMillis,
16451649
}
16461650

16471651
type expected struct {
1652+
displayName string
16481653
description string
16491654
icon string
16501655
defaultTTLMillis int64
@@ -1660,27 +1665,37 @@ func TestPatchTemplateMeta(t *testing.T) {
16601665
{
16611666
name: "Only update default_ttl_ms",
16621667
req: codersdk.UpdateTemplateMeta{DefaultTTLMillis: 99 * time.Hour.Milliseconds()},
1663-
expected: expected{description: reference.Description, icon: reference.Icon, defaultTTLMillis: 99 * time.Hour.Milliseconds()},
1668+
expected: expected{displayName: reference.DisplayName, description: reference.Description, icon: reference.Icon, defaultTTLMillis: 99 * time.Hour.Milliseconds()},
1669+
},
1670+
{
1671+
name: "Clear display name",
1672+
req: codersdk.UpdateTemplateMeta{DisplayName: ptr.Ref("")},
1673+
expected: expected{displayName: "", description: reference.Description, icon: reference.Icon, defaultTTLMillis: 0},
16641674
},
16651675
{
16661676
name: "Clear description",
16671677
req: codersdk.UpdateTemplateMeta{Description: ptr.Ref("")},
1668-
expected: expected{description: "", icon: reference.Icon, defaultTTLMillis: 0},
1678+
expected: expected{displayName: reference.DisplayName, description: "", icon: reference.Icon, defaultTTLMillis: 0},
16691679
},
16701680
{
16711681
name: "Clear icon",
16721682
req: codersdk.UpdateTemplateMeta{Icon: ptr.Ref("")},
1673-
expected: expected{description: reference.Description, icon: "", defaultTTLMillis: 0},
1683+
expected: expected{displayName: reference.DisplayName, description: reference.Description, icon: "", defaultTTLMillis: 0},
1684+
},
1685+
{
1686+
name: "Nil display name defaults to reference display name",
1687+
req: codersdk.UpdateTemplateMeta{DisplayName: nil},
1688+
expected: expected{displayName: reference.DisplayName, description: reference.Description, icon: reference.Icon, defaultTTLMillis: 0},
16741689
},
16751690
{
16761691
name: "Nil description defaults to reference description",
16771692
req: codersdk.UpdateTemplateMeta{Description: nil},
1678-
expected: expected{description: reference.Description, icon: reference.Icon, defaultTTLMillis: 0},
1693+
expected: expected{displayName: reference.DisplayName, description: reference.Description, icon: reference.Icon, defaultTTLMillis: 0},
16791694
},
16801695
{
16811696
name: "Nil icon defaults to reference icon",
16821697
req: codersdk.UpdateTemplateMeta{Icon: nil},
1683-
expected: expected{description: reference.Description, icon: reference.Icon, defaultTTLMillis: 0},
1698+
expected: expected{displayName: reference.DisplayName, description: reference.Description, icon: reference.Icon, defaultTTLMillis: 0},
16841699
},
16851700
}
16861701

@@ -1696,6 +1711,7 @@ func TestPatchTemplateMeta(t *testing.T) {
16961711
ctx := testutil.Context(t, testutil.WaitLong)
16971712
updated, err := client.UpdateTemplateMeta(ctx, reference.ID, tc.req)
16981713
require.NoError(t, err)
1714+
assert.Equal(t, tc.expected.displayName, updated.DisplayName)
16991715
assert.Equal(t, tc.expected.description, updated.Description)
17001716
assert.Equal(t, tc.expected.icon, updated.Icon)
17011717
assert.Equal(t, tc.expected.defaultTTLMillis, updated.DefaultTTLMillis)

codersdk/templates.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ type ACLAvailable struct {
209209

210210
type UpdateTemplateMeta struct {
211211
Name string `json:"name,omitempty" validate:"omitempty,template_name"`
212-
DisplayName string `json:"display_name,omitempty" validate:"omitempty,template_display_name"`
212+
DisplayName *string `json:"display_name,omitempty" validate:"omitempty,template_display_name"`
213213
Description *string `json:"description,omitempty"`
214214
Icon *string `json:"icon,omitempty"`
215215
DefaultTTLMillis int64 `json:"default_ttl_ms,omitempty"`

enterprise/cli/templateedit_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ func TestTemplateEdit(t *testing.T) {
219219

220220
template, err := ownerClient.UpdateTemplateMeta(ctx, dbtemplate.ID, codersdk.UpdateTemplateMeta{
221221
Name: expectedName,
222-
DisplayName: expectedDisplayName,
222+
DisplayName: &expectedDisplayName,
223223
Description: &expectedDescription,
224224
Icon: &expectedIcon,
225225
DefaultTTLMillis: expectedDefaultTTLMillis,
@@ -267,7 +267,7 @@ func TestTemplateEdit(t *testing.T) {
267267

268268
template, err = ownerClient.UpdateTemplateMeta(ctx, dbtemplate.ID, codersdk.UpdateTemplateMeta{
269269
Name: expectedName,
270-
DisplayName: expectedDisplayName,
270+
DisplayName: &expectedDisplayName,
271271
Description: &expectedDescription,
272272
Icon: &expectedIcon,
273273
DefaultTTLMillis: expectedDefaultTTLMillis,

enterprise/coderd/templates_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ func TestTemplates(t *testing.T) {
259259
ctx := testutil.Context(t, testutil.WaitLong)
260260
updated, err := anotherClient.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
261261
Name: template.Name,
262-
DisplayName: template.DisplayName,
262+
DisplayName: &template.DisplayName,
263263
Description: &template.Description,
264264
Icon: &template.Icon,
265265
AutostartRequirement: &codersdk.TemplateAutostartRequirement{
@@ -276,7 +276,7 @@ func TestTemplates(t *testing.T) {
276276
// Ensure a missing field is a noop
277277
updated, err = anotherClient.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
278278
Name: template.Name,
279-
DisplayName: template.DisplayName,
279+
DisplayName: &template.DisplayName,
280280
Description: &template.Description,
281281
Icon: ptr.Ref(template.Icon + "something"),
282282
})
@@ -313,7 +313,7 @@ func TestTemplates(t *testing.T) {
313313
ctx := testutil.Context(t, testutil.WaitLong)
314314
_, err := anotherClient.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
315315
Name: template.Name,
316-
DisplayName: template.DisplayName,
316+
DisplayName: &template.DisplayName,
317317
Description: &template.Description,
318318
Icon: &template.Icon,
319319
AutostartRequirement: &codersdk.TemplateAutostartRequirement{
@@ -349,7 +349,7 @@ func TestTemplates(t *testing.T) {
349349
ctx := context.Background()
350350
updated, err := anotherClient.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
351351
Name: template.Name,
352-
DisplayName: template.DisplayName,
352+
DisplayName: &template.DisplayName,
353353
Description: &template.Description,
354354
Icon: &template.Icon,
355355
AllowUserCancelWorkspaceJobs: template.AllowUserCancelWorkspaceJobs,
@@ -403,7 +403,7 @@ func TestTemplates(t *testing.T) {
403403

404404
updated, err := anotherClient.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
405405
Name: template.Name,
406-
DisplayName: template.DisplayName,
406+
DisplayName: &template.DisplayName,
407407
Description: &template.Description,
408408
Icon: &template.Icon,
409409
AllowUserCancelWorkspaceJobs: template.AllowUserCancelWorkspaceJobs,
@@ -472,7 +472,7 @@ func TestTemplates(t *testing.T) {
472472
t.Run(c.Name, func(t *testing.T) {
473473
_, err := anotherClient.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
474474
Name: template.Name,
475-
DisplayName: template.DisplayName,
475+
DisplayName: &template.DisplayName,
476476
Description: &template.Description,
477477
Icon: &template.Icon,
478478
AllowUserCancelWorkspaceJobs: template.AllowUserCancelWorkspaceJobs,
@@ -1004,7 +1004,7 @@ func TestTemplateACL(t *testing.T) {
10041004
require.Equal(t, 1, len(acl.Groups))
10051005
_, err = client.UpdateTemplateMeta(ctx, template.ID, codersdk.UpdateTemplateMeta{
10061006
Name: template.Name,
1007-
DisplayName: template.DisplayName,
1007+
DisplayName: &template.DisplayName,
10081008
Description: &template.Description,
10091009
Icon: &template.Icon,
10101010
AllowUserCancelWorkspaceJobs: template.AllowUserCancelWorkspaceJobs,

0 commit comments

Comments
 (0)