rint("Hello, World!")
if __name__ == "__main__":
main()
def main():
p)");
ASSERT_EQ(spy.count(), 1);
auto message = spy.takeFirst().at(0).value();
QJsonObject response = message.toJsonObject();
EXPECT_EQ(response["id"].toString(), "completion-1");
EXPECT_TRUE(response.contains("result"));
QJsonObject result = response["result"].toObject();
EXPECT_TRUE(result.contains("completions"));
EXPECT_FALSE(result["isIncomplete"].toBool());
QJsonArray completions = result["completions"].toArray();
ASSERT_EQ(completions.size(), 1);
EXPECT_EQ(completions[0].toObject()["text"].toString(), "test completion");
}
TEST_F(LLMClientInterfaceTest, completionChat)
{
ON_CALL(m_promptProvider, getTemplateByName(_)).WillByDefault(Return(m_chatTemplate.get()));
m_documentReader.setDocumentInfo(
R"(
def main():
print("Hello, World!")
if __name__ == "__main__":
main()
)",
"/path/to/file.py",
"text/python");
m_completeSettings.smartProcessInstuctText.setValue(true);
m_requestHandler->setFakeCompletion(
"Here's the code: ```cpp\nint main() {\n return 0;\n}\n```");
QSignalSpy spy(m_client.get(), &LanguageClient::BaseClientInterface::messageReceived);
QJsonObject request = createCompletionRequest();
m_client->sendData(QJsonDocument(request).toJson());
ASSERT_EQ(m_requestHandler->receivedRequests().size(), 1);
QJsonObject requestJson = m_requestHandler->receivedRequests().at(0).providerRequest;
auto messagesJson = requestJson["messages"].toArray();
ASSERT_EQ(messagesJson.size(), 1);
ASSERT_EQ(messagesJson.at(0).toObject()["content"].toString(), R"(user message template prefix:
def main():
p
suffix:
rint("Hello, World!")
if __name__ == "__main__":
main()
)");
ASSERT_EQ(spy.count(), 1);
auto message = spy.takeFirst().at(0).value();
QJsonObject response = message.toJsonObject();
QJsonArray completions = response["result"].toObject()["completions"].toArray();
ASSERT_EQ(completions.size(), 1);
QString processedText = completions[0].toObject()["text"].toString();
EXPECT_TRUE(processedText.contains("# Here's the code:"));
EXPECT_TRUE(processedText.contains("int main()"));
}
TEST_F(LLMClientInterfaceTest, cancelRequest)
{
QSignalSpy cancelSpy(m_requestHandler.get(), &LLMCore::RequestHandlerBase::requestCancelled);
QJsonObject cancelRequest = createCancelRequest("completion-1");
m_client->sendData(QJsonDocument(cancelRequest).toJson());
ASSERT_EQ(cancelSpy.count(), 1);
EXPECT_EQ(cancelSpy.takeFirst().at(0).toString(), "completion-1");
}
TEST_F(LLMClientInterfaceTest, ServerDeviceTemplate)
{
EXPECT_EQ(m_client->serverDeviceTemplate().toFSPathString(), "QodeAssist");
}
} // namespace QodeAssist