@@ -901,9 +901,9 @@ func TestPatchTemplateMeta(t *testing.T) {
901
901
902
902
req := codersdk.UpdateTemplateMeta {
903
903
Name : "new-template-name" ,
904
- DisplayName : "Displayed Name 456" ,
905
- Description : "lorem ipsum dolor sit amet et cetera" ,
906
- Icon : "/icon/new-icon.png" ,
904
+ DisplayName : ptr . Ref ( "Displayed Name 456" ) ,
905
+ Description : ptr . Ref ( "lorem ipsum dolor sit amet et cetera" ) ,
906
+ Icon : ptr . Ref ( "/icon/new-icon.png" ) ,
907
907
DefaultTTLMillis : 12 * time .Hour .Milliseconds (),
908
908
ActivityBumpMillis : 3 * time .Hour .Milliseconds (),
909
909
AllowUserCancelWorkspaceJobs : false ,
@@ -918,9 +918,9 @@ func TestPatchTemplateMeta(t *testing.T) {
918
918
require .NoError (t , err )
919
919
assert .Greater (t , updated .UpdatedAt , template .UpdatedAt )
920
920
assert .Equal (t , req .Name , updated .Name )
921
- assert .Equal (t , req .DisplayName , updated .DisplayName )
922
- assert .Equal (t , req .Description , updated .Description )
923
- assert .Equal (t , req .Icon , updated .Icon )
921
+ assert .Equal (t , * req .DisplayName , updated .DisplayName )
922
+ assert .Equal (t , * req .Description , updated .Description )
923
+ assert .Equal (t , * req .Icon , updated .Icon )
924
924
assert .Equal (t , req .DefaultTTLMillis , updated .DefaultTTLMillis )
925
925
assert .Equal (t , req .ActivityBumpMillis , updated .ActivityBumpMillis )
926
926
assert .False (t , req .AllowUserCancelWorkspaceJobs )
@@ -930,9 +930,9 @@ func TestPatchTemplateMeta(t *testing.T) {
930
930
require .NoError (t , err )
931
931
assert .Greater (t , updated .UpdatedAt , template .UpdatedAt )
932
932
assert .Equal (t , req .Name , updated .Name )
933
- assert .Equal (t , req .DisplayName , updated .DisplayName )
934
- assert .Equal (t , req .Description , updated .Description )
935
- assert .Equal (t , req .Icon , updated .Icon )
933
+ assert .Equal (t , * req .DisplayName , updated .DisplayName )
934
+ assert .Equal (t , * req .Description , updated .Description )
935
+ assert .Equal (t , * req .Icon , updated .Icon )
936
936
assert .Equal (t , req .DefaultTTLMillis , updated .DefaultTTLMillis )
937
937
assert .Equal (t , req .ActivityBumpMillis , updated .ActivityBumpMillis )
938
938
assert .False (t , req .AllowUserCancelWorkspaceJobs )
@@ -1167,9 +1167,9 @@ func TestPatchTemplateMeta(t *testing.T) {
1167
1167
1168
1168
got , err := client .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
1169
1169
Name : template .Name ,
1170
- DisplayName : template .DisplayName ,
1171
- Description : template .Description ,
1172
- Icon : template .Icon ,
1170
+ DisplayName : & template .DisplayName ,
1171
+ Description : & template .Description ,
1172
+ Icon : & template .Icon ,
1173
1173
DefaultTTLMillis : 0 ,
1174
1174
AutostopRequirement : & template .AutostopRequirement ,
1175
1175
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
@@ -1202,9 +1202,9 @@ func TestPatchTemplateMeta(t *testing.T) {
1202
1202
1203
1203
got , err := client .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
1204
1204
Name : template .Name ,
1205
- DisplayName : template .DisplayName ,
1206
- Description : template .Description ,
1207
- Icon : template .Icon ,
1205
+ DisplayName : & template .DisplayName ,
1206
+ Description : & template .Description ,
1207
+ Icon : & template .Icon ,
1208
1208
DefaultTTLMillis : template .DefaultTTLMillis ,
1209
1209
AutostopRequirement : & template .AutostopRequirement ,
1210
1210
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
@@ -1263,9 +1263,9 @@ func TestPatchTemplateMeta(t *testing.T) {
1263
1263
allowAutostop .Store (false )
1264
1264
got , err := client .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
1265
1265
Name : template .Name ,
1266
- DisplayName : template .DisplayName ,
1267
- Description : template .Description ,
1268
- Icon : template .Icon ,
1266
+ DisplayName : & template .DisplayName ,
1267
+ Description : & template .Description ,
1268
+ Icon : & template .Icon ,
1269
1269
DefaultTTLMillis : template .DefaultTTLMillis ,
1270
1270
AutostopRequirement : & template .AutostopRequirement ,
1271
1271
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
@@ -1294,9 +1294,9 @@ func TestPatchTemplateMeta(t *testing.T) {
1294
1294
1295
1295
got , err := client .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
1296
1296
Name : template .Name ,
1297
- DisplayName : template .DisplayName ,
1298
- Description : template .Description ,
1299
- Icon : template .Icon ,
1297
+ DisplayName : & template .DisplayName ,
1298
+ Description : & template .Description ,
1299
+ Icon : & template .Icon ,
1300
1300
// Increase the default TTL to avoid error "not modified".
1301
1301
DefaultTTLMillis : template .DefaultTTLMillis + 1 ,
1302
1302
AutostopRequirement : & template .AutostopRequirement ,
@@ -1326,8 +1326,8 @@ func TestPatchTemplateMeta(t *testing.T) {
1326
1326
1327
1327
req := codersdk.UpdateTemplateMeta {
1328
1328
Name : template .Name ,
1329
- Description : template .Description ,
1330
- Icon : template .Icon ,
1329
+ Description : & template .Description ,
1330
+ Icon : & template .Icon ,
1331
1331
DefaultTTLMillis : template .DefaultTTLMillis ,
1332
1332
ActivityBumpMillis : template .ActivityBumpMillis ,
1333
1333
AutostopRequirement : nil ,
@@ -1387,7 +1387,7 @@ func TestPatchTemplateMeta(t *testing.T) {
1387
1387
ctr .Icon = "/icon/code.png"
1388
1388
})
1389
1389
req := codersdk.UpdateTemplateMeta {
1390
- Icon : "" ,
1390
+ Icon : ptr . Ref ( "" ) ,
1391
1391
}
1392
1392
1393
1393
ctx := testutil .Context (t , testutil .WaitLong )
@@ -1442,9 +1442,9 @@ func TestPatchTemplateMeta(t *testing.T) {
1442
1442
require .EqualValues (t , 1 , template .AutostopRequirement .Weeks )
1443
1443
req := codersdk.UpdateTemplateMeta {
1444
1444
Name : template .Name ,
1445
- DisplayName : template .DisplayName ,
1446
- Description : template .Description ,
1447
- Icon : template .Icon ,
1445
+ DisplayName : & template .DisplayName ,
1446
+ Description : & template .Description ,
1447
+ Icon : & template .Icon ,
1448
1448
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
1449
1449
DefaultTTLMillis : time .Hour .Milliseconds (),
1450
1450
AutostopRequirement : & codersdk.TemplateAutostopRequirement {
@@ -1519,9 +1519,9 @@ func TestPatchTemplateMeta(t *testing.T) {
1519
1519
require .EqualValues (t , 2 , template .AutostopRequirement .Weeks )
1520
1520
req := codersdk.UpdateTemplateMeta {
1521
1521
Name : template .Name ,
1522
- DisplayName : template .DisplayName ,
1523
- Description : template .Description ,
1524
- Icon : template .Icon ,
1522
+ DisplayName : & template .DisplayName ,
1523
+ Description : & template .Description ,
1524
+ Icon : & template .Icon ,
1525
1525
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
1526
1526
DefaultTTLMillis : time .Hour .Milliseconds (),
1527
1527
AutostopRequirement : & codersdk.TemplateAutostopRequirement {
@@ -1556,9 +1556,9 @@ func TestPatchTemplateMeta(t *testing.T) {
1556
1556
require .EqualValues (t , 1 , template .AutostopRequirement .Weeks )
1557
1557
req := codersdk.UpdateTemplateMeta {
1558
1558
Name : template .Name ,
1559
- DisplayName : template .DisplayName ,
1560
- Description : template .Description ,
1561
- Icon : template .Icon ,
1559
+ DisplayName : & template .DisplayName ,
1560
+ Description : & template .Description ,
1561
+ Icon : & template .Icon ,
1562
1562
AllowUserCancelWorkspaceJobs : template .AllowUserCancelWorkspaceJobs ,
1563
1563
DefaultTTLMillis : time .Hour .Milliseconds (),
1564
1564
AutostopRequirement : & codersdk.TemplateAutostopRequirement {
@@ -1618,6 +1618,106 @@ func TestPatchTemplateMeta(t *testing.T) {
1618
1618
require .NoError (t , err )
1619
1619
assert .False (t , updated .UseClassicParameterFlow , "expected false" )
1620
1620
})
1621
+
1622
+ t .Run ("SupportEmptyOrDefaultFields" , func (t * testing.T ) {
1623
+ t .Parallel ()
1624
+
1625
+ client := coderdtest .New (t , nil )
1626
+ user := coderdtest .CreateFirstUser (t , client )
1627
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , nil )
1628
+
1629
+ displayName := "Test Display Name"
1630
+ description := "test-description"
1631
+ icon := "/icon/icon.png"
1632
+ defaultTTLMillis := 10 * time .Hour .Milliseconds ()
1633
+
1634
+ reference := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID , func (ctr * codersdk.CreateTemplateRequest ) {
1635
+ ctr .DisplayName = displayName
1636
+ ctr .Description = description
1637
+ ctr .Icon = icon
1638
+ ctr .DefaultTTLMillis = ptr .Ref (defaultTTLMillis )
1639
+ })
1640
+ require .Equal (t , displayName , reference .DisplayName )
1641
+ require .Equal (t , description , reference .Description )
1642
+ require .Equal (t , icon , reference .Icon )
1643
+
1644
+ restoreReq := codersdk.UpdateTemplateMeta {
1645
+ DisplayName : & displayName ,
1646
+ Description : & description ,
1647
+ Icon : & icon ,
1648
+ DefaultTTLMillis : defaultTTLMillis ,
1649
+ }
1650
+
1651
+ type expected struct {
1652
+ displayName string
1653
+ description string
1654
+ icon string
1655
+ defaultTTLMillis int64
1656
+ }
1657
+
1658
+ type testCase struct {
1659
+ name string
1660
+ req codersdk.UpdateTemplateMeta
1661
+ expected expected
1662
+ }
1663
+
1664
+ tests := []testCase {
1665
+ {
1666
+ name : "Only update default_ttl_ms" ,
1667
+ req : codersdk.UpdateTemplateMeta {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 },
1674
+ },
1675
+ {
1676
+ name : "Clear description" ,
1677
+ req : codersdk.UpdateTemplateMeta {Description : ptr .Ref ("" )},
1678
+ expected : expected {displayName : reference .DisplayName , description : "" , icon : reference .Icon , defaultTTLMillis : 0 },
1679
+ },
1680
+ {
1681
+ name : "Clear icon" ,
1682
+ req : codersdk.UpdateTemplateMeta {Icon : ptr .Ref ("" )},
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 },
1689
+ },
1690
+ {
1691
+ name : "Nil description defaults to reference description" ,
1692
+ req : codersdk.UpdateTemplateMeta {Description : nil },
1693
+ expected : expected {displayName : reference .DisplayName , description : reference .Description , icon : reference .Icon , defaultTTLMillis : 0 },
1694
+ },
1695
+ {
1696
+ name : "Nil icon defaults to reference icon" ,
1697
+ req : codersdk.UpdateTemplateMeta {Icon : nil },
1698
+ expected : expected {displayName : reference .DisplayName , description : reference .Description , icon : reference .Icon , defaultTTLMillis : 0 },
1699
+ },
1700
+ }
1701
+
1702
+ for _ , tc := range tests {
1703
+ //nolint:tparallel,paralleltest
1704
+ t .Run (tc .name , func (t * testing.T ) {
1705
+ defer func () {
1706
+ ctx := testutil .Context (t , testutil .WaitLong )
1707
+ // Restore reference after each test case
1708
+ _ , err := client .UpdateTemplateMeta (ctx , reference .ID , restoreReq )
1709
+ require .NoError (t , err )
1710
+ }()
1711
+ ctx := testutil .Context (t , testutil .WaitLong )
1712
+ updated , err := client .UpdateTemplateMeta (ctx , reference .ID , tc .req )
1713
+ require .NoError (t , err )
1714
+ assert .Equal (t , tc .expected .displayName , updated .DisplayName )
1715
+ assert .Equal (t , tc .expected .description , updated .Description )
1716
+ assert .Equal (t , tc .expected .icon , updated .Icon )
1717
+ assert .Equal (t , tc .expected .defaultTTLMillis , updated .DefaultTTLMillis )
1718
+ })
1719
+ }
1720
+ })
1621
1721
}
1622
1722
1623
1723
func TestDeleteTemplate (t * testing.T ) {
0 commit comments