(t *testing.T)
| 6786 | } |
| 6787 | |
| 6788 | func TestChatMessageWithFileReferences(t *testing.T) { |
| 6789 | t.Parallel() |
| 6790 | |
| 6791 | // createChat is a helper that creates a chat so we can post messages to it. |
| 6792 | createChatForTest := func(t *testing.T, client *codersdk.ExperimentalClient, orgID uuid.UUID) codersdk.Chat { |
| 6793 | t.Helper() |
| 6794 | ctx := testutil.Context(t, testutil.WaitLong) |
| 6795 | chat, err := client.CreateChat(ctx, codersdk.CreateChatRequest{ |
| 6796 | OrganizationID: orgID, |
| 6797 | Content: []codersdk.ChatInputPart{{ |
| 6798 | Type: codersdk.ChatInputPartTypeText, |
| 6799 | Text: "initial message", |
| 6800 | }}, |
| 6801 | }) |
| 6802 | require.NoError(t, err) |
| 6803 | return chat |
| 6804 | } |
| 6805 | |
| 6806 | t.Run("FileReferenceOnly", func(t *testing.T) { |
| 6807 | t.Parallel() |
| 6808 | |
| 6809 | ctx := testutil.Context(t, testutil.WaitLong) |
| 6810 | client := newChatClient(t) |
| 6811 | firstUser := coderdtest.CreateFirstUser(t, client.Client) |
| 6812 | _ = createChatModelConfig(t, client) |
| 6813 | chat := createChatForTest(t, client, firstUser.OrganizationID) |
| 6814 | |
| 6815 | created, err := client.CreateChatMessage(ctx, chat.ID, codersdk.CreateChatMessageRequest{ |
| 6816 | Content: []codersdk.ChatInputPart{{ |
| 6817 | Type: codersdk.ChatInputPartTypeFileReference, |
| 6818 | FileName: "main.go", |
| 6819 | StartLine: 10, |
| 6820 | EndLine: 15, |
| 6821 | Content: "func broken() {}", |
| 6822 | }}, |
| 6823 | }) |
| 6824 | require.NoError(t, err) |
| 6825 | |
| 6826 | // File-reference parts are stored as structured parts. |
| 6827 | checkFileRef := func(part codersdk.ChatMessagePart) bool { |
| 6828 | return part.Type == codersdk.ChatMessagePartTypeFileReference && |
| 6829 | part.FileName == "main.go" && |
| 6830 | part.StartLine == 10 && |
| 6831 | part.EndLine == 15 && |
| 6832 | part.Content == "func broken() {}" |
| 6833 | } |
| 6834 | |
| 6835 | var found bool |
| 6836 | require.Eventually(t, func() bool { |
| 6837 | messagesResult, getErr := client.GetChatMessages(ctx, chat.ID, nil) |
| 6838 | if getErr != nil { |
| 6839 | return false |
| 6840 | } |
| 6841 | for _, message := range messagesResult.Messages { |
| 6842 | if message.Role != codersdk.ChatMessageRoleUser { |
| 6843 | continue |
| 6844 | } |
| 6845 | for _, part := range message.Content { |
nothing calls this directly
no test coverage detected