@@ -21,16 +21,22 @@ vi.mock("@/lib/messages/filterMessageContentForMemories", () => ({
2121 default : vi . fn ( ( msg : unknown ) => msg ) ,
2222} ) ) ;
2323
24+ vi . mock ( "@/lib/supabase/rooms/selectRoom" , ( ) => ( {
25+ default : vi . fn ( ) ,
26+ } ) ) ;
27+
2428import { generateUUID } from "@/lib/uuid/generateUUID" ;
2529import { createNewRoom } from "@/lib/chat/createNewRoom" ;
2630import insertMemories from "@/lib/supabase/memories/insertMemories" ;
2731import filterMessageContentForMemories from "@/lib/messages/filterMessageContentForMemories" ;
32+ import selectRoom from "@/lib/supabase/rooms/selectRoom" ;
2833import { setupConversation } from "../setupConversation" ;
2934
3035const mockGenerateUUID = vi . mocked ( generateUUID ) ;
3136const mockCreateNewRoom = vi . mocked ( createNewRoom ) ;
3237const mockInsertMemories = vi . mocked ( insertMemories ) ;
3338const mockFilterMessageContentForMemories = vi . mocked ( filterMessageContentForMemories ) ;
39+ const mockSelectRoom = vi . mocked ( selectRoom ) ;
3440
3541/**
3642 * Helper to create a UIMessage for testing.
@@ -53,6 +59,8 @@ describe("setupConversation", () => {
5359 mockGenerateUUID . mockReturnValue ( "generated-uuid" ) ;
5460 mockCreateNewRoom . mockResolvedValue ( undefined ) ;
5561 mockInsertMemories . mockResolvedValue ( null ) ;
62+ // By default, selectRoom returns an existing room when roomId is provided
63+ mockSelectRoom . mockResolvedValue ( { id : "existing-room-id" } as never ) ;
5664 } ) ;
5765
5866 describe ( "room creation" , ( ) => {
@@ -72,7 +80,8 @@ describe("setupConversation", () => {
7280 } ) ;
7381 } ) ;
7482
75- it ( "does NOT create a room when roomId is provided" , async ( ) => {
83+ it ( "does NOT create a room when roomId is provided and room exists" , async ( ) => {
84+ mockSelectRoom . mockResolvedValue ( { id : "existing-room-id" } as never ) ;
7685 const promptMessage = createUIMessage ( "Hello" ) ;
7786
7887 await setupConversation ( {
@@ -81,9 +90,29 @@ describe("setupConversation", () => {
8190 promptMessage,
8291 } ) ;
8392
93+ expect ( mockSelectRoom ) . toHaveBeenCalledWith ( "existing-room-id" ) ;
8494 expect ( mockCreateNewRoom ) . not . toHaveBeenCalled ( ) ;
8595 } ) ;
8696
97+ it ( "creates a room when roomId is provided but room does NOT exist" , async ( ) => {
98+ mockSelectRoom . mockResolvedValue ( null ) ;
99+ const promptMessage = createUIMessage ( "Hello" ) ;
100+
101+ await setupConversation ( {
102+ accountId : "account-123" ,
103+ roomId : "non-existent-room-id" ,
104+ promptMessage,
105+ } ) ;
106+
107+ expect ( mockSelectRoom ) . toHaveBeenCalledWith ( "non-existent-room-id" ) ;
108+ expect ( mockCreateNewRoom ) . toHaveBeenCalledWith ( {
109+ accountId : "account-123" ,
110+ roomId : "non-existent-room-id" ,
111+ artistId : undefined ,
112+ lastMessage : promptMessage ,
113+ } ) ;
114+ } ) ;
115+
87116 it ( "passes artistId to createNewRoom when provided" , async ( ) => {
88117 const promptMessage = createUIMessage ( "Hello" ) ;
89118
0 commit comments