@@ -862,8 +862,8 @@ func TestPatchTemplateMeta(t *testing.T) {
862
862
req := codersdk.UpdateTemplateMeta {
863
863
Name : "new-template-name" ,
864
864
DisplayName : "Displayed Name 456" ,
865
- Description : "lorem ipsum dolor sit amet et cetera" ,
866
- Icon : "/icon/new-icon.png" ,
865
+ Description : ptr . Ref ( "lorem ipsum dolor sit amet et cetera" ) ,
866
+ Icon : ptr . Ref ( "/icon/new-icon.png" ) ,
867
867
DefaultTTLMillis : 12 * time .Hour .Milliseconds (),
868
868
ActivityBumpMillis : 3 * time .Hour .Milliseconds (),
869
869
AllowUserCancelWorkspaceJobs : false ,
@@ -879,8 +879,8 @@ func TestPatchTemplateMeta(t *testing.T) {
879
879
assert .Greater (t , updated .UpdatedAt , template .UpdatedAt )
880
880
assert .Equal (t , req .Name , updated .Name )
881
881
assert .Equal (t , req .DisplayName , updated .DisplayName )
882
- assert .Equal (t , req .Description , updated .Description )
883
- assert .Equal (t , req .Icon , updated .Icon )
882
+ assert .Equal (t , * req .Description , updated .Description )
883
+ assert .Equal (t , * req .Icon , updated .Icon )
884
884
assert .Equal (t , req .DefaultTTLMillis , updated .DefaultTTLMillis )
885
885
assert .Equal (t , req .ActivityBumpMillis , updated .ActivityBumpMillis )
886
886
assert .False (t , req .AllowUserCancelWorkspaceJobs )
@@ -891,8 +891,8 @@ func TestPatchTemplateMeta(t *testing.T) {
891
891
assert .Greater (t , updated .UpdatedAt , template .UpdatedAt )
892
892
assert .Equal (t , req .Name , updated .Name )
893
893
assert .Equal (t , req .DisplayName , updated .DisplayName )
894
- assert .Equal (t , req .Description , updated .Description )
895
- assert .Equal (t , req .Icon , updated .Icon )
894
+ assert .Equal (t , * req .Description , updated .Description )
895
+ assert .Equal (t , * req .Icon , updated .Icon )
896
896
assert .Equal (t , req .DefaultTTLMillis , updated .DefaultTTLMillis )
897
897
assert .Equal (t , req .ActivityBumpMillis , updated .ActivityBumpMillis )
898
898
assert .False (t , req .AllowUserCancelWorkspaceJobs )
@@ -1128,8 +1128,8 @@ func TestPatchTemplateMeta(t *testing.T) {
1128
1128
got , err := client .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
1129
1129
Name : template .Name ,
1130
1130
DisplayName : template .DisplayName ,
1131
- Description : template .Description ,
1132
- Icon : template .Icon ,
1131
+ Description : & template .Description ,
1132
+ Icon : & template .Icon ,
1133
1133
DefaultTTLMillis : 0 ,
1134
1134
AutostopRequirement : & template .AutostopRequirement ,
1135
1135
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
@@ -1163,8 +1163,8 @@ func TestPatchTemplateMeta(t *testing.T) {
1163
1163
got , err := client .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
1164
1164
Name : template .Name ,
1165
1165
DisplayName : template .DisplayName ,
1166
- Description : template .Description ,
1167
- Icon : template .Icon ,
1166
+ Description : & template .Description ,
1167
+ Icon : & template .Icon ,
1168
1168
DefaultTTLMillis : template .DefaultTTLMillis ,
1169
1169
AutostopRequirement : & template .AutostopRequirement ,
1170
1170
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
@@ -1224,8 +1224,8 @@ func TestPatchTemplateMeta(t *testing.T) {
1224
1224
got , err := client .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
1225
1225
Name : template .Name ,
1226
1226
DisplayName : template .DisplayName ,
1227
- Description : template .Description ,
1228
- Icon : template .Icon ,
1227
+ Description : & template .Description ,
1228
+ Icon : & template .Icon ,
1229
1229
DefaultTTLMillis : template .DefaultTTLMillis ,
1230
1230
AutostopRequirement : & template .AutostopRequirement ,
1231
1231
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
@@ -1255,8 +1255,8 @@ func TestPatchTemplateMeta(t *testing.T) {
1255
1255
got , err := client .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
1256
1256
Name : template .Name ,
1257
1257
DisplayName : template .DisplayName ,
1258
- Description : template .Description ,
1259
- Icon : template .Icon ,
1258
+ Description : & template .Description ,
1259
+ Icon : & template .Icon ,
1260
1260
// Increase the default TTL to avoid error "not modified".
1261
1261
DefaultTTLMillis : template .DefaultTTLMillis + 1 ,
1262
1262
AutostopRequirement : & template .AutostopRequirement ,
@@ -1286,8 +1286,8 @@ func TestPatchTemplateMeta(t *testing.T) {
1286
1286
1287
1287
req := codersdk.UpdateTemplateMeta {
1288
1288
Name : template .Name ,
1289
- Description : template .Description ,
1290
- Icon : template .Icon ,
1289
+ Description : & template .Description ,
1290
+ Icon : & template .Icon ,
1291
1291
DefaultTTLMillis : template .DefaultTTLMillis ,
1292
1292
ActivityBumpMillis : template .ActivityBumpMillis ,
1293
1293
AutostopRequirement : nil ,
@@ -1347,7 +1347,7 @@ func TestPatchTemplateMeta(t *testing.T) {
1347
1347
ctr .Icon = "/icon/code.png"
1348
1348
})
1349
1349
req := codersdk.UpdateTemplateMeta {
1350
- Icon : "" ,
1350
+ Icon : ptr . Ref ( "" ) ,
1351
1351
}
1352
1352
1353
1353
ctx := testutil .Context (t , testutil .WaitLong )
@@ -1403,8 +1403,8 @@ func TestPatchTemplateMeta(t *testing.T) {
1403
1403
req := codersdk.UpdateTemplateMeta {
1404
1404
Name : template .Name ,
1405
1405
DisplayName : template .DisplayName ,
1406
- Description : template .Description ,
1407
- Icon : template .Icon ,
1406
+ Description : & template .Description ,
1407
+ Icon : & template .Icon ,
1408
1408
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
1409
1409
DefaultTTLMillis : time .Hour .Milliseconds (),
1410
1410
AutostopRequirement : & codersdk.TemplateAutostopRequirement {
@@ -1480,8 +1480,8 @@ func TestPatchTemplateMeta(t *testing.T) {
1480
1480
req := codersdk.UpdateTemplateMeta {
1481
1481
Name : template .Name ,
1482
1482
DisplayName : template .DisplayName ,
1483
- Description : template .Description ,
1484
- Icon : template .Icon ,
1483
+ Description : & template .Description ,
1484
+ Icon : & template .Icon ,
1485
1485
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
1486
1486
DefaultTTLMillis : time .Hour .Milliseconds (),
1487
1487
AutostopRequirement : & codersdk.TemplateAutostopRequirement {
@@ -1517,8 +1517,8 @@ func TestPatchTemplateMeta(t *testing.T) {
1517
1517
req := codersdk.UpdateTemplateMeta {
1518
1518
Name : template .Name ,
1519
1519
DisplayName : template .DisplayName ,
1520
- Description : template .Description ,
1521
- Icon : template .Icon ,
1520
+ Description : & template .Description ,
1521
+ Icon : & template .Icon ,
1522
1522
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
1523
1523
DefaultTTLMillis : time .Hour .Milliseconds (),
1524
1524
AutostopRequirement : & codersdk.TemplateAutostopRequirement {
@@ -1578,6 +1578,69 @@ func TestPatchTemplateMeta(t *testing.T) {
1578
1578
require .NoError (t , err )
1579
1579
assert .False (t , updated .UseClassicParameterFlow , "expected false" )
1580
1580
})
1581
+
1582
+ t .Run ("SupportEmptyOrDefault" , func (t * testing.T ) {
1583
+ t .Parallel ()
1584
+
1585
+ client := coderdtest .New (t , nil )
1586
+ user := coderdtest .CreateFirstUser (t , client )
1587
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , nil )
1588
+
1589
+ description := "test-description"
1590
+ icon := "/icon/icon.png"
1591
+ defaultTTLMillis := 10 * time .Hour .Milliseconds ()
1592
+
1593
+ template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID , func (ctr * codersdk.CreateTemplateRequest ) {
1594
+ ctr .Description = description
1595
+ ctr .Icon = icon
1596
+ ctr .DefaultTTLMillis = ptr .Ref (defaultTTLMillis )
1597
+ })
1598
+
1599
+ restoreReq := codersdk.UpdateTemplateMeta {
1600
+ Description : & description ,
1601
+ Icon : & icon ,
1602
+ DefaultTTLMillis : defaultTTLMillis ,
1603
+ }
1604
+
1605
+ type expected struct {
1606
+ description string
1607
+ icon string
1608
+ defaultTTLMillis int64
1609
+ }
1610
+
1611
+ type testCase struct {
1612
+ name string
1613
+ req codersdk.UpdateTemplateMeta
1614
+ expected expected
1615
+ }
1616
+
1617
+ tests := []testCase {
1618
+ {name : "Only update default_ttl_ms" , req : codersdk.UpdateTemplateMeta {DefaultTTLMillis : 99 * time .Hour .Milliseconds ()}, expected : expected {description : template .Description , icon : template .Icon , defaultTTLMillis : 99 * time .Hour .Milliseconds ()}},
1619
+ {name : "Clear description" , req : codersdk.UpdateTemplateMeta {Description : ptr .Ref ("" )}, expected : expected {description : "" , icon : template .Icon , defaultTTLMillis : 0 }},
1620
+ {name : "Clear icon" , req : codersdk.UpdateTemplateMeta {Icon : ptr .Ref ("" )}, expected : expected {description : template .Description , icon : "" , defaultTTLMillis : 0 }},
1621
+ {name : "Nil description defaults to template description" , req : codersdk.UpdateTemplateMeta {Description : nil }, expected : expected {description : template .Description , icon : template .Icon , defaultTTLMillis : 0 }},
1622
+ {name : "Nil icon defaults to template icon" , req : codersdk.UpdateTemplateMeta {Icon : nil }, expected : expected {description : template .Description , icon : template .Icon , defaultTTLMillis : 0 }},
1623
+ }
1624
+
1625
+ // It is unfortunate we need to sleep, but the test can fail if the
1626
+ // updatedAt is too close together.
1627
+ time .Sleep (time .Millisecond * 5 )
1628
+
1629
+ for _ , tc := range tests {
1630
+ t .Run (tc .name , func (t * testing.T ) {
1631
+ ctx := testutil .Context (t , testutil .WaitLong )
1632
+ updated , err := client .UpdateTemplateMeta (ctx , template .ID , tc .req )
1633
+ require .NoError (t , err )
1634
+ assert .Equal (t , tc .expected .description , updated .Description )
1635
+ assert .Equal (t , tc .expected .icon , updated .Icon )
1636
+ assert .Equal (t , tc .expected .defaultTTLMillis , updated .DefaultTTLMillis )
1637
+
1638
+ // Restore template after each test case
1639
+ _ , err = client .UpdateTemplateMeta (ctx , template .ID , restoreReq )
1640
+ require .NoError (t , err )
1641
+ })
1642
+ }
1643
+ })
1581
1644
}
1582
1645
1583
1646
func TestDeleteTemplate (t * testing.T ) {
0 commit comments