11import { formatUserMessageForGeneration } from "./formatUserMessageForGeneration" ;
22import { ConversationCustomData , logger } from "mongodb-rag-core" ;
3+ import { ORIGIN_RULES } from "mongodb-chatbot-server" ;
34
45beforeAll ( ( ) => {
56 logger . error = jest . fn ( ) ;
@@ -8,16 +9,19 @@ beforeAll(() => {
89describe ( "formatUserMessageForGeneration" , ( ) => {
910 const userMessageText = "Hello, world!" ;
1011 const reqId = "test-request-id" ;
12+ const testMongoDbPageUrl = "https://mongodb.com" ;
13+ const resultMongoDbPageUrl = "mongodb.com" ;
1114
1215 it ( "formats front matter correctly for mongodb.com origin" , ( ) => {
13- const origin = "https://mongodb.com" ;
1416 const result = formatUserMessageForGeneration ( {
1517 userMessageText,
1618 reqId,
17- customData : { origin } satisfies ConversationCustomData ,
19+ customData : {
20+ origin : testMongoDbPageUrl ,
21+ } satisfies ConversationCustomData ,
1822 } ) ;
1923 expect ( result ) . toEqual ( `---
20- pageUrl: ${ origin }
24+ pageUrl: ${ resultMongoDbPageUrl }
2125---
2226
2327${ userMessageText } `) ;
@@ -31,7 +35,40 @@ ${userMessageText}`);
3135 customData : { origin } satisfies ConversationCustomData ,
3236 } ) ;
3337 expect ( result ) . toEqual ( `---
34- pageUrl: ${ origin }
38+ pageUrl: learn.mongodb.com
39+ ---
40+
41+ ${ userMessageText } `) ;
42+ } ) ;
43+
44+ it ( "normalizes a URL with trailing backslash" , ( ) => {
45+ const origin = testMongoDbPageUrl + "/docs/pageName/" ;
46+ const result = formatUserMessageForGeneration ( {
47+ userMessageText,
48+ reqId,
49+ customData : {
50+ origin,
51+ } satisfies ConversationCustomData ,
52+ } ) ;
53+ expect ( result ) . toEqual ( `---
54+ pageUrl: ${ resultMongoDbPageUrl + "/docs/pageName" }
55+ ---
56+
57+ ${ userMessageText } `) ;
58+ } ) ;
59+
60+ it ( "normalizes a URL with query" , ( ) => {
61+ const origin =
62+ "https://learn.mongodb.com/courses/mongodb-for-sql-experts?param1=value1¶m2=value2" ;
63+ const result = formatUserMessageForGeneration ( {
64+ userMessageText,
65+ reqId,
66+ customData : {
67+ origin,
68+ } satisfies ConversationCustomData ,
69+ } ) ;
70+ expect ( result ) . toEqual ( `---
71+ pageUrl: learn.mongodb.com/courses/mongodb-for-sql-experts
3572---
3673
3774${ userMessageText } `) ;
@@ -67,7 +104,7 @@ ${userMessageText}`);
67104 } satisfies ConversationCustomData ,
68105 } ) ;
69106 expect ( result ) . toEqual ( `---
70- client: MongoDB VS Code plugin
107+ client: MongoDB VS Code extension
71108---
72109
73110${ userMessageText } `) ;
@@ -92,6 +129,25 @@ client: ${expectedClientLabel}
92129${ userMessageText } `) ;
93130 } ) ;
94131
132+ it ( "does not add client front matter for unlabelled mongodb originCodes" , ( ) => {
133+ const unlabelledOriginCodes : string [ ] = [ ] ;
134+ ORIGIN_RULES . reduce ( ( acc , rule ) => {
135+ if ( ! rule . label ) unlabelledOriginCodes . push ( rule . code ) ;
136+ return acc ;
137+ } , unlabelledOriginCodes ) ;
138+
139+ unlabelledOriginCodes . forEach ( ( originCode ) => {
140+ const result = formatUserMessageForGeneration ( {
141+ userMessageText,
142+ reqId,
143+ customData : {
144+ originCode,
145+ } satisfies ConversationCustomData ,
146+ } ) ;
147+ expect ( result ) . toEqual ( userMessageText ) ;
148+ } ) ;
149+ } ) ;
150+
95151 it ( "logs a warning and does not add pageUrl if origin is malformed" , ( ) => {
96152 const malformedOrigin = "http://not a url" ;
97153 const result = formatUserMessageForGeneration ( {
@@ -119,19 +175,18 @@ ${userMessageText}`);
119175 } ) ;
120176
121177 it ( "adds both pageUrl and client front matter if both are present" , ( ) => {
122- const origin = "https://mongodb.com" ;
123178 const originCode = "VSCODE" ;
124- const expectedClientLabel = "MongoDB VS Code plugin " ;
179+ const expectedClientLabel = "MongoDB VS Code extension " ;
125180 const result = formatUserMessageForGeneration ( {
126181 userMessageText,
127182 reqId,
128183 customData : {
129- origin,
184+ origin : testMongoDbPageUrl ,
130185 originCode,
131186 } satisfies ConversationCustomData ,
132187 } ) ;
133188 expect ( result ) . toEqual ( `---
134- pageUrl: ${ origin }
189+ pageUrl: ${ resultMongoDbPageUrl }
135190client: ${ expectedClientLabel }
136191---
137192
0 commit comments