mirror of
https://github.com/Shchoholiev/shopping-assistant-api.git
synced 2025-04-11 01:18:50 +00:00
changed the logic in the service and added some changes to the tests
This commit is contained in:
parent
51aca2e270
commit
98377dbf9d
@ -55,28 +55,13 @@ public class ProductService : IProductService
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (countOfMessage==1)
|
|
||||||
{
|
|
||||||
yield return new ServerSentEvent
|
|
||||||
{
|
|
||||||
Event = SearchEventType.Message,
|
|
||||||
Data = previousMessages.Items.FirstOrDefault()?.Text
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if(countOfMessage>1)
|
|
||||||
{
|
|
||||||
var messagesForOpenAI = new List<OpenAiMessage>();
|
var messagesForOpenAI = new List<OpenAiMessage>();
|
||||||
messagesForOpenAI.Add(new OpenAiMessage()
|
|
||||||
{
|
|
||||||
Role = OpenAiRoleExtensions.RequestConvert(OpenAiRole.System),
|
|
||||||
Content = promptForGpt
|
|
||||||
});
|
|
||||||
|
|
||||||
foreach (var item in previousMessages.Items)
|
foreach (var item in previousMessages.Items)
|
||||||
{
|
{
|
||||||
messagesForOpenAI.Add(
|
messagesForOpenAI
|
||||||
new OpenAiMessage()
|
.Add(new OpenAiMessage()
|
||||||
{
|
{
|
||||||
Role = item.Role.ToLower(),
|
Role = item.Role.ToLower(),
|
||||||
Content = item.Text
|
Content = item.Text
|
||||||
@ -170,7 +155,6 @@ public class ProductService : IProductService
|
|||||||
ImagesUrls = new []{"", ""},
|
ImagesUrls = new []{"", ""},
|
||||||
WasOpened = false
|
WasOpened = false
|
||||||
}, cancellationToken);
|
}, cancellationToken);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
productBuffer.Name += data;
|
productBuffer.Name += data;
|
||||||
@ -179,7 +163,6 @@ public class ProductService : IProductService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private SearchEventType DetermineDataType(string dataTypeHolder)
|
private SearchEventType DetermineDataType(string dataTypeHolder)
|
||||||
{
|
{
|
||||||
|
@ -220,13 +220,8 @@ public class DbInitializer
|
|||||||
},
|
},
|
||||||
new Message
|
new Message
|
||||||
{
|
{
|
||||||
Text = "You are a Shopping Assistant that helps people find product recommendations. Ask user additional questions if more context needed." +
|
Text = "What are you looking for?",
|
||||||
"\nYou must return data with one of the prefixes:" +
|
Role = "assistant",
|
||||||
"\n[Question] - return question" +
|
|
||||||
"\n[Suggestions] - return semicolon separated suggestion how to answer to a question" +
|
|
||||||
"\n[Message] - return text" +
|
|
||||||
"\n[Products] - return semicolon separated product names",
|
|
||||||
Role = "system",
|
|
||||||
WishlistId = wishlistId4,
|
WishlistId = wishlistId4,
|
||||||
CreatedById = user2.Id,
|
CreatedById = user2.Id,
|
||||||
CreatedDateUtc = DateTime.UtcNow
|
CreatedDateUtc = DateTime.UtcNow
|
||||||
@ -234,15 +229,7 @@ public class DbInitializer
|
|||||||
new Message
|
new Message
|
||||||
{
|
{
|
||||||
Text = "What are you looking for?",
|
Text = "What are you looking for?",
|
||||||
Role = "system",
|
Role = "assistant",
|
||||||
WishlistId = wishlistId4,
|
|
||||||
CreatedById = user2.Id,
|
|
||||||
CreatedDateUtc = DateTime.UtcNow
|
|
||||||
},
|
|
||||||
new Message
|
|
||||||
{
|
|
||||||
Text = "What are you looking for?",
|
|
||||||
Role = "system",
|
|
||||||
WishlistId = wishlistId3,
|
WishlistId = wishlistId3,
|
||||||
CreatedById = user2.Id,
|
CreatedById = user2.Id,
|
||||||
CreatedDateUtc = DateTime.UtcNow
|
CreatedDateUtc = DateTime.UtcNow
|
||||||
|
@ -57,7 +57,7 @@ public class ProductsTests : TestsBase
|
|||||||
if (eventName == "event: Message")
|
if (eventName == "event: Message")
|
||||||
{
|
{
|
||||||
foundMessageEvent = true;
|
foundMessageEvent = true;
|
||||||
Assert.Equal("\"What are you looking for?\"", eventData);
|
Assert.NotNull(eventData);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,8 @@ public class ProductTests
|
|||||||
" 3070TI", " ;", " GTX", " 4070TI", " ;", " ?"
|
" 3070TI", " ;", " GTX", " 4070TI", " ;", " ?"
|
||||||
};
|
};
|
||||||
|
|
||||||
var expectedMessages = new List<string> { "What are you looking for?" };
|
var expectedMessages = new List<string> { " What", " u", " want", " ?" };
|
||||||
|
var expectedSuggestion = new List<string> { " USB-C", " Keyboard ultra", " USB-C" };
|
||||||
|
|
||||||
// Mock the GetChatCompletionStream method to provide the expected SSE data
|
// Mock the GetChatCompletionStream method to provide the expected SSE data
|
||||||
_openAiServiceMock.Setup(x => x.GetChatCompletionStream(It.IsAny<ChatCompletionRequest>(), cancellationToken))
|
_openAiServiceMock.Setup(x => x.GetChatCompletionStream(It.IsAny<ChatCompletionRequest>(), cancellationToken))
|
||||||
@ -63,10 +64,10 @@ public class ProductTests
|
|||||||
|
|
||||||
_wishListServiceMock
|
_wishListServiceMock
|
||||||
.Setup(m => m.GetMessagesPageFromPersonalWishlistAsync(
|
.Setup(m => m.GetMessagesPageFromPersonalWishlistAsync(
|
||||||
It.IsAny<string>(), // Очікуваний параметр wishlistId
|
It.IsAny<string>(),
|
||||||
It.IsAny<int>(), // Очікуваний параметр pageNumber
|
It.IsAny<int>(),
|
||||||
It.IsAny<int>(), // Очікуваний параметр pageSize
|
It.IsAny<int>(),
|
||||||
It.IsAny<CancellationToken>()) // Очікуваний параметр cancellationToken
|
It.IsAny<CancellationToken>())
|
||||||
)
|
)
|
||||||
.ReturnsAsync(new PagedList<MessageDto>(
|
.ReturnsAsync(new PagedList<MessageDto>(
|
||||||
new List<MessageDto>
|
new List<MessageDto>
|
||||||
@ -78,7 +79,6 @@ public class ProductTests
|
|||||||
CreatedById = "User2",
|
CreatedById = "User2",
|
||||||
Role = "User"
|
Role = "User"
|
||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
1,
|
1,
|
||||||
1,
|
1,
|
||||||
@ -105,6 +105,7 @@ public class ProductTests
|
|||||||
// Check if the actual SSE events match the expected SSE events
|
// Check if the actual SSE events match the expected SSE events
|
||||||
Assert.NotNull(actualSseEvents);
|
Assert.NotNull(actualSseEvents);
|
||||||
Assert.Equal(expectedMessages, receivedMessages);
|
Assert.Equal(expectedMessages, receivedMessages);
|
||||||
|
Assert.Equal(expectedSuggestion, receivedSuggestions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user