mirror of https://github.com/coder/coder.git
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:
parent
b73d9d788b
commit
b25e5dc90b
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue