Skip to content

Commit 4932617

Browse files
committed
Add unit test and dbmem implementation
1 parent af54eb0 commit 4932617

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

coderd/database/dbmem/dbmem.go

+17
Original file line numberDiff line numberDiff line change
@@ -7534,6 +7534,23 @@ func (q *FakeQuerier) GetAuthorizedWorkspaces(ctx context.Context, arg database.
75347534
}
75357535
}
75367536

7537+
if arg.UsingActive.Valid {
7538+
build, err := q.getLatestWorkspaceBuildByWorkspaceIDNoLock(ctx, workspace.ID)
7539+
if err != nil {
7540+
return nil, xerrors.Errorf("get latest build: %w", err)
7541+
}
7542+
7543+
template, err := q.getTemplateByIDNoLock(ctx, workspace.TemplateID)
7544+
if err != nil {
7545+
return nil, xerrors.Errorf("get template: %w", err)
7546+
}
7547+
7548+
updated := build.TemplateVersionID == template.ActiveVersionID
7549+
if arg.UsingActive.Bool != updated {
7550+
continue
7551+
}
7552+
}
7553+
75377554
if !arg.Deleted && workspace.Deleted {
75387555
continue
75397556
}

coderd/workspaces_test.go

+50
Original file line numberDiff line numberDiff line change
@@ -1632,6 +1632,56 @@ func TestWorkspaceFilterManual(t *testing.T) {
16321632
require.Len(t, afterRes.Workspaces, 1)
16331633
require.Equal(t, after.ID, afterRes.Workspaces[0].ID)
16341634
})
1635+
t.Run("Updated", func(t *testing.T) {
1636+
t.Parallel()
1637+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
1638+
user := coderdtest.CreateFirstUser(t, client)
1639+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
1640+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
1641+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1642+
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
1643+
1644+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1645+
defer cancel()
1646+
1647+
// Workspace is up-to-date
1648+
res, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{
1649+
FilterQuery: "updated:true",
1650+
})
1651+
require.NoError(t, err)
1652+
require.Len(t, res.Workspaces, 1)
1653+
require.Equal(t, workspace.ID, res.Workspaces[0].ID)
1654+
1655+
res, err = client.Workspaces(ctx, codersdk.WorkspaceFilter{
1656+
FilterQuery: "updated:false",
1657+
})
1658+
require.NoError(t, err)
1659+
require.Len(t, res.Workspaces, 0)
1660+
1661+
// Now make it out of date
1662+
newTv := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil, func(request *codersdk.CreateTemplateVersionRequest) {
1663+
request.TemplateID = template.ID
1664+
})
1665+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
1666+
err = client.UpdateActiveTemplateVersion(ctx, template.ID, codersdk.UpdateActiveTemplateVersion{
1667+
newTv.ID,
1668+
})
1669+
require.NoError(t, err)
1670+
1671+
// Check the query again
1672+
res, err = client.Workspaces(ctx, codersdk.WorkspaceFilter{
1673+
FilterQuery: "updated:true",
1674+
})
1675+
require.NoError(t, err)
1676+
require.Len(t, res.Workspaces, 0)
1677+
1678+
res, err = client.Workspaces(ctx, codersdk.WorkspaceFilter{
1679+
FilterQuery: "updated:false",
1680+
})
1681+
require.NoError(t, err)
1682+
require.Len(t, res.Workspaces, 1)
1683+
require.Equal(t, workspace.ID, res.Workspaces[0].ID)
1684+
})
16351685
}
16361686

16371687
func TestOffsetLimit(t *testing.T) {

0 commit comments

Comments
 (0)