MCPcopy Create free account
hub / github.com/coder/coder / TestAITasks

Function TestAITasks

provisioner/terraform/resources_test.go:1686–1793  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1684}
1685
1686func TestAITasks(t *testing.T) {
1687 t.Parallel()
1688 ctx, logger := ctxAndLogger(t)
1689
1690 t.Run("Multiple tasks can be defined", func(t *testing.T) {
1691 t.Parallel()
1692
1693 // nolint:dogsled
1694 _, filename, _, _ := runtime.Caller(0)
1695
1696 dir := filepath.Join(filepath.Dir(filename), "testdata", "resources", "ai-tasks-multiple")
1697 tfPlanRaw, err := os.ReadFile(filepath.Join(dir, "ai-tasks-multiple.tfplan.json"))
1698 require.NoError(t, err)
1699 var tfPlan tfjson.Plan
1700 err = json.Unmarshal(tfPlanRaw, &tfPlan)
1701 require.NoError(t, err)
1702 tfPlanGraph, err := os.ReadFile(filepath.Join(dir, "ai-tasks-multiple.tfplan.dot"))
1703 require.NoError(t, err)
1704
1705 state, err := terraform.ConvertState(ctx, []*tfjson.StateModule{tfPlan.PlannedValues.RootModule, tfPlan.PriorState.Values.RootModule}, string(tfPlanGraph), logger)
1706 require.NotNil(t, state)
1707 require.NoError(t, err)
1708 require.True(t, state.HasAITasks)
1709 // Multiple coder_ai_tasks resources can be defined, but only 1 is allowed.
1710 // This is validated once all parameters are resolved etc as part of the workspace build, but for now we can allow it.
1711 require.Len(t, state.AITasks, 2)
1712 })
1713
1714 t.Run("Can use sidebar app ID", func(t *testing.T) {
1715 t.Parallel()
1716
1717 // nolint:dogsled
1718 _, filename, _, _ := runtime.Caller(0)
1719
1720 dir := filepath.Join(filepath.Dir(filename), "testdata", "resources", "ai-tasks-sidebar")
1721 tfPlanRaw, err := os.ReadFile(filepath.Join(dir, "ai-tasks-sidebar.tfplan.json"))
1722 require.NoError(t, err)
1723 var tfPlan tfjson.Plan
1724 err = json.Unmarshal(tfPlanRaw, &tfPlan)
1725 require.NoError(t, err)
1726 tfPlanGraph, err := os.ReadFile(filepath.Join(dir, "ai-tasks-sidebar.tfplan.dot"))
1727 require.NoError(t, err)
1728
1729 state, err := terraform.ConvertState(ctx, []*tfjson.StateModule{tfPlan.PlannedValues.RootModule, tfPlan.PriorState.Values.RootModule}, string(tfPlanGraph), logger)
1730 require.NotNil(t, state)
1731 require.NoError(t, err)
1732 require.True(t, state.HasAITasks)
1733 require.Len(t, state.AITasks, 1)
1734
1735 sidebarApp := state.AITasks[0].GetSidebarApp()
1736 require.NotNil(t, sidebarApp)
1737 require.Equal(t, "5ece4674-dd35-4f16-88c8-82e40e72e2fd", sidebarApp.GetId())
1738 require.Equal(t, "5ece4674-dd35-4f16-88c8-82e40e72e2fd", state.AITasks[0].AppId)
1739 })
1740
1741 t.Run("Can use app ID", func(t *testing.T) {
1742 t.Parallel()
1743

Callers

nothing calls this directly

Calls 10

ConvertStateFunction · 0.92
ctxAndLoggerFunction · 0.85
GetSidebarAppMethod · 0.80
RunMethod · 0.65
ReadFileMethod · 0.65
UnmarshalMethod · 0.45
LenMethod · 0.45
EqualMethod · 0.45
GetIdMethod · 0.45
EmptyMethod · 0.45

Tested by

no test coverage detected