mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
feat: Add diff and Dockerfile support for template version page (#5339)
This commit is contained in:
@ -1743,6 +1743,13 @@ func (q *fakeQuerier) GetPreviousTemplateVersion(_ context.Context, arg database
|
||||
if templateVersion.ID == currentTemplateVersion.ID {
|
||||
continue
|
||||
}
|
||||
if templateVersion.OrganizationID != arg.OrganizationID {
|
||||
continue
|
||||
}
|
||||
if templateVersion.TemplateID != currentTemplateVersion.TemplateID {
|
||||
continue
|
||||
}
|
||||
|
||||
if templateVersion.CreatedAt.Before(currentTemplateVersion.CreatedAt) {
|
||||
previousTemplateVersions = append(previousTemplateVersions, templateVersion)
|
||||
}
|
||||
|
@ -3532,6 +3532,8 @@ WHERE
|
||||
FROM template_versions AS tv
|
||||
WHERE tv.organization_id = $1 AND tv.name = $2 AND tv.template_id = $3
|
||||
)
|
||||
AND organization_id = $1
|
||||
AND template_id = $3
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 1
|
||||
`
|
||||
|
@ -122,5 +122,7 @@ WHERE
|
||||
FROM template_versions AS tv
|
||||
WHERE tv.organization_id = $1 AND tv.name = $2 AND tv.template_id = $3
|
||||
)
|
||||
AND organization_id = $1
|
||||
AND template_id = $3
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 1;
|
||||
|
@ -970,13 +970,24 @@ func TestPreviousTemplateVersion(t *testing.T) {
|
||||
t.Parallel()
|
||||
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
|
||||
user := coderdtest.CreateFirstUser(t, client)
|
||||
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
|
||||
|
||||
// Create two templates to be sure it is not returning a previous version
|
||||
// from another template
|
||||
templateAVersion1 := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
|
||||
coderdtest.CreateTemplate(t, client, user.OrganizationID, templateAVersion1.ID)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, templateAVersion1.ID)
|
||||
// Create two versions for the template B to be sure if we try to get the
|
||||
// previous version of the first version it will returns a 404
|
||||
templateBVersion1 := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
|
||||
templateB := coderdtest.CreateTemplate(t, client, user.OrganizationID, templateBVersion1.ID)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, templateBVersion1.ID)
|
||||
templateBVersion2 := coderdtest.UpdateTemplateVersion(t, client, user.OrganizationID, nil, templateB.ID)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, templateBVersion2.ID)
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
|
||||
defer cancel()
|
||||
|
||||
_, err := client.PreviousTemplateVersion(ctx, user.OrganizationID, version.Name)
|
||||
_, err := client.PreviousTemplateVersion(ctx, user.OrganizationID, templateBVersion1.Name)
|
||||
var apiErr *codersdk.Error
|
||||
require.ErrorAs(t, err, &apiErr)
|
||||
require.Equal(t, http.StatusNotFound, apiErr.StatusCode())
|
||||
@ -986,17 +997,25 @@ func TestPreviousTemplateVersion(t *testing.T) {
|
||||
t.Parallel()
|
||||
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
|
||||
user := coderdtest.CreateFirstUser(t, client)
|
||||
previousVersion := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, previousVersion.ID)
|
||||
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, previousVersion.ID)
|
||||
latestVersion := coderdtest.UpdateTemplateVersion(t, client, user.OrganizationID, nil, template.ID)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, latestVersion.ID)
|
||||
|
||||
// Create two templates to be sure it is not returning a previous version
|
||||
// from another template
|
||||
templateAVersion1 := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
|
||||
coderdtest.CreateTemplate(t, client, user.OrganizationID, templateAVersion1.ID)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, templateAVersion1.ID)
|
||||
// Create two versions for the template B so we can try to get the previous
|
||||
// version of version 2
|
||||
templateBVersion1 := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
|
||||
templateB := coderdtest.CreateTemplate(t, client, user.OrganizationID, templateBVersion1.ID)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, templateBVersion1.ID)
|
||||
templateBVersion2 := coderdtest.UpdateTemplateVersion(t, client, user.OrganizationID, nil, templateB.ID)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, templateBVersion2.ID)
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
|
||||
defer cancel()
|
||||
|
||||
result, err := client.PreviousTemplateVersion(ctx, user.OrganizationID, latestVersion.Name)
|
||||
result, err := client.PreviousTemplateVersion(ctx, user.OrganizationID, templateBVersion2.Name)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, previousVersion.ID, result.ID)
|
||||
require.Equal(t, templateBVersion1.ID, result.ID)
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user