@@ -58,6 +58,52 @@ func (s *TemplateSuite) TestCreate() {
58
58
assert .Len (s .T (), reqTemplate .RepositoryUUIDS , 2 )
59
59
}
60
60
61
+ func (s * TemplateSuite ) TestCreateDeleteCreateSameName () {
62
+ templateDao := templateDaoImpl {db : s .tx }
63
+
64
+ orgID := orgIDTest
65
+ err := seeds .SeedRepositoryConfigurations (s .tx , 2 , seeds.SeedOptions {OrgID : orgID })
66
+ assert .NoError (s .T (), err )
67
+
68
+ var repoConfigs []models.RepositoryConfiguration
69
+ err = s .tx .Where ("org_id = ?" , orgID ).Find (& repoConfigs ).Error
70
+ assert .NoError (s .T (), err )
71
+
72
+ timeNow := time .Now ()
73
+ reqTemplate := api.TemplateRequest {
74
+ Name : pointy .String ("template test" ),
75
+ Description : pointy .String ("template test description" ),
76
+ RepositoryUUIDS : []string {repoConfigs [0 ].UUID , repoConfigs [1 ].UUID },
77
+ Arch : pointy .String (config .AARCH64 ),
78
+ Version : pointy .String (config .El8 ),
79
+ Date : & timeNow ,
80
+ OrgID : & orgID ,
81
+ }
82
+
83
+ respTemplate , err := templateDao .Create (reqTemplate )
84
+ assert .NoError (s .T (), err )
85
+ assert .Equal (s .T (), orgID , respTemplate .OrgID )
86
+ assert .Len (s .T (), reqTemplate .RepositoryUUIDS , 2 )
87
+
88
+ // As a template with this name exists, we expect this to error.
89
+ _ , expectedErr := templateDao .Create (reqTemplate )
90
+ assert .Error (s .T (), expectedErr , "Template with this name already belongs to organization" )
91
+
92
+ // Delete the template
93
+ err = templateDao .SoftDelete (respTemplate .OrgID , respTemplate .UUID )
94
+ assert .NoError (s .T (), err )
95
+
96
+ // We should now be able to recreate the template with the same name without issue
97
+ respTemplate , err = templateDao .Create (reqTemplate )
98
+ assert .NoError (s .T (), err )
99
+ assert .Equal (s .T (), orgID , respTemplate .OrgID )
100
+ assert .Equal (s .T (), * reqTemplate .Description , respTemplate .Description )
101
+ assert .Equal (s .T (), timeNow .Round (time .Millisecond ), respTemplate .Date .Round (time .Millisecond ))
102
+ assert .Equal (s .T (), * reqTemplate .Arch , respTemplate .Arch )
103
+ assert .Equal (s .T (), * reqTemplate .Version , respTemplate .Version )
104
+ assert .Len (s .T (), reqTemplate .RepositoryUUIDS , 2 )
105
+ }
106
+
61
107
func (s * TemplateSuite ) TestFetch () {
62
108
templateDao := templateDaoImpl {db : s .tx }
63
109
0 commit comments