chore: remove dbfake.WorkspaceBuild in favor of builder pattern (#10814)

I'd like to convert dbfake into a builder pattern to prevent a proliferation of XXXWithYYY methods.  This is one step of the way by removing the Non-builder function.
This commit is contained in:
Spike Curtis 2023-11-22 13:04:58 +04:00 committed by GitHub
parent b73d9d788b
commit b25e5dc90b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 37 additions and 46 deletions

View File

@ -69,7 +69,7 @@ func TestWorkspaceAgent(t *testing.T) {
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Name: "somename",
Type: "someinstance",
Agents: []*proto.Agent{{
@ -77,7 +77,7 @@ func TestWorkspaceAgent(t *testing.T) {
InstanceId: instanceID,
},
}},
})
}).Do()
inv, _ := clitest.New(t, "agent", "--auth", "azure-instance-identity", "--agent-url", client.URL.String())
inv = inv.WithContext(
@ -112,7 +112,7 @@ func TestWorkspaceAgent(t *testing.T) {
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Name: "somename",
Type: "someinstance",
Agents: []*proto.Agent{{
@ -120,7 +120,7 @@ func TestWorkspaceAgent(t *testing.T) {
InstanceId: instanceID,
},
}},
})
}).Do()
inv, _ := clitest.New(t, "agent", "--auth", "aws-instance-identity", "--agent-url", client.URL.String())
inv = inv.WithContext(
@ -156,7 +156,7 @@ func TestWorkspaceAgent(t *testing.T) {
OrganizationID: owner.OrganizationID,
OwnerID: memberUser.ID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Name: "somename",
Type: "someinstance",
Agents: []*proto.Agent{{
@ -164,7 +164,7 @@ func TestWorkspaceAgent(t *testing.T) {
InstanceId: instanceID,
},
}},
})
}).Do()
inv, cfg := clitest.New(t, "agent", "--auth", "google-instance-identity", "--agent-url", client.URL.String())
clitest.SetupConfig(t, member, cfg)

View File

@ -696,7 +696,7 @@ func TestConfigSSH_Hostnames(t *testing.T) {
OrganizationID: owner.OrganizationID,
OwnerID: memberUser.ID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, resources...)
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(resources...).Do()
sshConfigFile := sshConfigFileName(t)
inv, root := clitest.New(t, "config-ssh", "--ssh-config-file", sshConfigFile)

View File

@ -151,7 +151,7 @@ func TestSSH(t *testing.T) {
pty.WriteLine("echo hell'o'")
pty.ExpectMatchContext(ctx, "hello")
_ = dbfake.WorkspaceBuildBuilder(t, store, workspace).
_ = dbfake.NewWorkspaceBuildBuilder(t, store, workspace).
Seed(database.WorkspaceBuild{
Transition: database.WorkspaceTransitionStop,
BuildNumber: 2,
@ -520,7 +520,7 @@ func TestSSH(t *testing.T) {
err = session.Shell()
require.NoError(t, err)
_ = dbfake.WorkspaceBuildBuilder(t, store, workspace).
_ = dbfake.NewWorkspaceBuildBuilder(t, store, workspace).
Seed(database.WorkspaceBuild{
Transition: database.WorkspaceTransitionStop,
BuildNumber: 2,

View File

@ -59,15 +59,15 @@ func WorkspaceWithAgent(
agents = m(agents)
}
ws := Workspace(t, db, seed)
WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &sdkproto.Resource{
NewWorkspaceBuildBuilder(t, db, ws).Resource(&sdkproto.Resource{
Name: "example",
Type: "aws_instance",
Agents: agents,
})
}).Do()
return ws, authToken
}
type BuildBuilder struct {
type WorkspaceBuildBuilder struct {
t testing.TB
db database.Store
ps pubsub.Pubsub
@ -76,29 +76,29 @@ type BuildBuilder struct {
resources []*sdkproto.Resource
}
func WorkspaceBuildBuilder(t testing.TB, db database.Store, ws database.Workspace) BuildBuilder {
return BuildBuilder{t: t, db: db, ws: ws}
func NewWorkspaceBuildBuilder(t testing.TB, db database.Store, ws database.Workspace) WorkspaceBuildBuilder {
return WorkspaceBuildBuilder{t: t, db: db, ws: ws}
}
func (b BuildBuilder) Pubsub(ps pubsub.Pubsub) BuildBuilder {
func (b WorkspaceBuildBuilder) Pubsub(ps pubsub.Pubsub) WorkspaceBuildBuilder {
//nolint: revive // returns modified struct
b.ps = ps
return b
}
func (b BuildBuilder) Seed(seed database.WorkspaceBuild) BuildBuilder {
func (b WorkspaceBuildBuilder) Seed(seed database.WorkspaceBuild) WorkspaceBuildBuilder {
//nolint: revive // returns modified struct
b.seed = seed
return b
}
func (b BuildBuilder) Resource(resource *sdkproto.Resource) BuildBuilder {
func (b WorkspaceBuildBuilder) Resource(resource ...*sdkproto.Resource) WorkspaceBuildBuilder {
//nolint: revive // returns modified struct
b.resources = append(b.resources, resource)
b.resources = append(b.resources, resource...)
return b
}
func (b BuildBuilder) Do() database.WorkspaceBuild {
func (b WorkspaceBuildBuilder) Do() database.WorkspaceBuild {
b.t.Helper()
jobID := uuid.New()
b.seed.ID = uuid.New()
@ -177,15 +177,6 @@ func (b BuildBuilder) Do() database.WorkspaceBuild {
return build
}
// WorkspaceBuild inserts a build and a successful job into the database.
func WorkspaceBuild(t testing.TB, db database.Store, ws database.Workspace, seed database.WorkspaceBuild, resources ...*sdkproto.Resource) database.WorkspaceBuild {
b := WorkspaceBuildBuilder(t, db, ws).Seed(seed)
for _, r := range resources {
b = b.Resource(r)
}
return b.Do()
}
// ProvisionerJobResources inserts a series of resources into a provisioner job.
func ProvisionerJobResources(t testing.TB, db database.Store, job uuid.UUID, transition database.WorkspaceTransition, resources ...*sdkproto.Resource) {
t.Helper()

View File

@ -50,13 +50,13 @@ func TestWorkspaceAgent(t *testing.T) {
OrganizationID: user.OrganizationID,
OwnerID: anotherUser.ID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Name: "aws_instance",
Agents: []*proto.Agent{{
Id: uuid.NewString(),
Directory: tmpDir,
}},
})
}).Do()
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
defer cancel()
workspace, err := anotherClient.Workspace(ctx, ws.ID)
@ -75,13 +75,13 @@ func TestWorkspaceAgent(t *testing.T) {
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Name: "aws_instance",
Agents: []*proto.Agent{{
Id: uuid.NewString(),
Directory: tmpDir,
}},
})
}).Do()
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium)
defer cancel()
@ -107,7 +107,7 @@ func TestWorkspaceAgent(t *testing.T) {
OwnerID: user.UserID,
OrganizationID: user.OrganizationID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{{
@ -119,7 +119,7 @@ func TestWorkspaceAgent(t *testing.T) {
ConnectionTimeoutSeconds: 1,
TroubleshootingUrl: wantTroubleshootingURL,
}},
})
}).Do()
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium)
defer cancel()
@ -156,7 +156,7 @@ func TestWorkspaceAgent(t *testing.T) {
PortForwardingHelper: true,
SshHelper: true,
}
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Agents: []*proto.Agent{
{
Directory: tmpDir,
@ -166,7 +166,7 @@ func TestWorkspaceAgent(t *testing.T) {
DisplayApps: apps,
},
},
})
}).Do()
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
defer cancel()
@ -196,7 +196,7 @@ func TestWorkspaceAgent(t *testing.T) {
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Agents: []*proto.Agent{
{
Directory: tmpDir,
@ -206,7 +206,7 @@ func TestWorkspaceAgent(t *testing.T) {
DisplayApps: apps,
},
},
})
}).Do()
workspace, err = client.Workspace(ctx, ws.ID)
require.NoError(t, err)
@ -543,14 +543,14 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
OwnerID: user.UserID,
})
authToken := uuid.NewString()
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Agents: []*proto.Agent{{
Apps: apps,
Auth: &proto.Agent_Token{
Token: authToken,
},
}},
})
}).Do()
_ = agenttest.New(t, client.URL, authToken)
resources := coderdtest.AwaitWorkspaceAgents(t, client, ws.ID)
return client, uint16(coderdPort), resources[0].Agents[0].ID
@ -776,7 +776,7 @@ func TestWorkspaceAgentAppHealth(t *testing.T) {
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{{
@ -786,7 +786,7 @@ func TestWorkspaceAgentAppHealth(t *testing.T) {
},
Apps: apps,
}},
})
}).Do()
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
defer cancel()
@ -984,7 +984,7 @@ func TestWorkspaceAgent_Metadata(t *testing.T) {
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{{
@ -1016,7 +1016,7 @@ func TestWorkspaceAgent_Metadata(t *testing.T) {
Token: authToken,
},
}},
})
}).Do()
workspace, err := client.Workspace(context.Background(), ws.ID)
require.NoError(t, err)
for _, res := range workspace.LatestBuild.Resources {
@ -1167,7 +1167,7 @@ func TestWorkspaceAgent_Metadata_CatchMemoryLeak(t *testing.T) {
OrganizationID: user.OrganizationID,
OwnerID: user.UserID,
})
dbfake.WorkspaceBuild(t, db, ws, database.WorkspaceBuild{}, &proto.Resource{
dbfake.NewWorkspaceBuildBuilder(t, db, ws).Resource(&proto.Resource{
Name: "example",
Type: "aws_instance",
Agents: []*proto.Agent{{
@ -1192,7 +1192,7 @@ func TestWorkspaceAgent_Metadata_CatchMemoryLeak(t *testing.T) {
Token: authToken,
},
}},
})
}).Do()
workspace, err := client.Workspace(context.Background(), ws.ID)
require.NoError(t, err)
for _, res := range workspace.LatestBuild.Resources {