Our `InsertWorkspaceAgentDevcontainers` query should ideally be `[]uuid.NullUUID` but unfortunately sqlc infers it as `[]uuid.UUID`. To ensure we don't insert a `uuid.Nil`, the query inserts NULL when passed with `uuid.Nil`. This test ensures we keep this behavior without regression.
(t *testing.T)
| 10693 | // sqlc infers it as `[]uuid.UUID`. To ensure we don't insert a `uuid.Nil`, the query inserts NULL when |
| 10694 | // passed with `uuid.Nil`. This test ensures we keep this behavior without regression. |
| 10695 | func TestInsertWorkspaceAgentDevcontainers(t *testing.T) { |
| 10696 | t.Parallel() |
| 10697 | |
| 10698 | testCases := []struct { |
| 10699 | name string |
| 10700 | validSubagent []bool |
| 10701 | }{ |
| 10702 | {"BothValid", []bool{true, true}}, |
| 10703 | {"FirstValidSecondInvalid", []bool{true, false}}, |
| 10704 | {"FirstInvalidSecondValid", []bool{false, true}}, |
| 10705 | {"BothInvalid", []bool{false, false}}, |
| 10706 | } |
| 10707 | |
| 10708 | for _, tc := range testCases { |
| 10709 | t.Run(tc.name, func(t *testing.T) { |
| 10710 | t.Parallel() |
| 10711 | |
| 10712 | var ( |
| 10713 | db, _ = dbtestutil.NewDB(t) |
| 10714 | org = dbgen.Organization(t, db, database.Organization{}) |
| 10715 | job = dbgen.ProvisionerJob(t, db, nil, database.ProvisionerJob{ |
| 10716 | Type: database.ProvisionerJobTypeTemplateVersionImport, |
| 10717 | OrganizationID: org.ID, |
| 10718 | }) |
| 10719 | resource = dbgen.WorkspaceResource(t, db, database.WorkspaceResource{JobID: job.ID}) |
| 10720 | agent = dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{ResourceID: resource.ID}) |
| 10721 | ) |
| 10722 | |
| 10723 | ids := make([]uuid.UUID, len(tc.validSubagent)) |
| 10724 | names := make([]string, len(tc.validSubagent)) |
| 10725 | workspaceFolders := make([]string, len(tc.validSubagent)) |
| 10726 | configPaths := make([]string, len(tc.validSubagent)) |
| 10727 | subagentIDs := make([]uuid.UUID, len(tc.validSubagent)) |
| 10728 | |
| 10729 | for i, valid := range tc.validSubagent { |
| 10730 | ids[i] = uuid.New() |
| 10731 | names[i] = fmt.Sprintf("test-devcontainer-%d", i) |
| 10732 | workspaceFolders[i] = fmt.Sprintf("/workspace%d", i) |
| 10733 | configPaths[i] = fmt.Sprintf("/workspace%d/.devcontainer/devcontainer.json", i) |
| 10734 | |
| 10735 | if valid { |
| 10736 | subagentIDs[i] = dbgen.WorkspaceAgent(t, db, database.WorkspaceAgent{ |
| 10737 | ResourceID: resource.ID, |
| 10738 | ParentID: uuid.NullUUID{UUID: agent.ID, Valid: true}, |
| 10739 | }).ID |
| 10740 | } else { |
| 10741 | subagentIDs[i] = uuid.Nil |
| 10742 | } |
| 10743 | } |
| 10744 | |
| 10745 | ctx := testutil.Context(t, testutil.WaitShort) |
| 10746 | |
| 10747 | // Given: We insert multiple devcontainer records. |
| 10748 | devcontainers, err := db.InsertWorkspaceAgentDevcontainers(ctx, database.InsertWorkspaceAgentDevcontainersParams{ |
| 10749 | WorkspaceAgentID: agent.ID, |
| 10750 | CreatedAt: dbtime.Now(), |
| 10751 | ID: ids, |
| 10752 | Name: names, |
nothing calls this directly
no test coverage detected