Skip to content
This repository has been archived by the owner on Jun 29, 2024. It is now read-only.

Commit

Permalink
fix tests with test domain factories
Browse files Browse the repository at this point in the history
  • Loading branch information
wsekta committed Jan 3, 2024
1 parent 800c6d3 commit 58746fc
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 85 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@

#include "faker-cxx/Datatype.h"
#include "faker-cxx/Date.h"
#include "faker-cxx/Image.h"
#include "faker-cxx/Internet.h"
#include "faker-cxx/Lorem.h"
#include "faker-cxx/String.h"
#include "fmt/format.h"
#include "nlohmann/json.hpp"
#include "server/tests/factories/channelTestFactory/ChannelTestFactory.h"
#include "server/tests/factories/groupTestFactory/GroupTestFactory.h"
#include "server/tests/factories/messageTestFactory/MessageTestFactory.h"
#include "server/tests/factories/userTestFactory/UserTestFactory.h"

using namespace server::api;
using namespace ::testing;
using namespace server::tests;

namespace
{
Expand All @@ -27,44 +29,21 @@ const auto invalidTokenMessageResponse = common::messages::Message{
class GetMessagesFromChannelMessageHandlerTest : public Test
{
public:
// TODO: move it to common test utils
server::domain::User createUser()
{
const auto userId = faker::String::uuid();
const auto userNickname = faker::String::alphanumeric(10);
const auto userEmail = faker::Internet::email();
const auto userPassword = faker::String::alphanumeric(10);
const auto userCreatedAt = faker::Date::recentDate();
const auto userUpdatedAt = faker::Date::recentDate();
const bool userActive = faker::Datatype::boolean();
const bool userEmailVerified = faker::Datatype::boolean();
const auto verificationCode = faker::String::numeric(6);
const auto avatarUrl = faker::Image::imageUrl();

return {userId, userEmail, userPassword, userNickname, userActive, userEmailVerified,
verificationCode, userCreatedAt, userUpdatedAt, avatarUrl};
}

server::domain::Message createMessage()
{
const auto messageId = faker::String::uuid();
const auto messageContent = faker::Lorem::sentence();
const auto messageSender = std::make_shared<server::domain::User>(createUser());
const std::shared_ptr<server::domain::Channel> messageChannel = nullptr;
const std::shared_ptr<server::domain::Group> messageGroup = nullptr;
const auto messageCreatedAt = faker::Date::recentDate();
const auto messageUpdatedAt = faker::Date::recentDate();
return server::domain::Message{messageId, messageContent, messageSender, messageChannel,
messageGroup, messageCreatedAt, messageUpdatedAt};
}

UserTestFactory userFactory;
ChannelTestFactory channelFactory;
MessageTestFactory messageFactory;
GroupTestFactory groupFactory;
const std::string token = faker::String::alphanumeric(40);
const std::string channelId = faker::String::uuid();
const std::string senderId = faker::String::uuid();
const server::application::VerifyTokenResult verifyTokenResult{senderId};
const server::domain::Message message1 = createMessage();
const server::domain::Message message2 = createMessage();
const std::vector<server::domain::Message> messages{message1, message2};
const std::shared_ptr<server::domain::Message> message1 = messageFactory.createDomainMessage(
userFactory.createDomainUser(), channelFactory.createDomainChannel(userFactory.createDomainUser()),
groupFactory.createDomainGroup());
const std::shared_ptr<server::domain::Message> message2 = messageFactory.createDomainMessage(
userFactory.createDomainUser(), channelFactory.createDomainChannel(userFactory.createDomainUser()),
groupFactory.createDomainGroup());
const std::vector<server::domain::Message> messages{*message1, *message2};
const unsigned totalCount = 2;

const nlohmann::json validPayloadJson{
Expand All @@ -74,10 +53,10 @@ class GetMessagesFromChannelMessageHandlerTest : public Test

const std::string validMessageResponsePayload =
R"({"data":{"messages":[)" +
fmt::format(R"({{"id":"{}","senderName":"{}","sentAt":"{}","text":"{}"}},)", message1.getId(),
message1.getSender()->getNickname(), message1.getCreatedAt(), message1.getContent()) +
fmt::format(R"({{"id":"{}","senderName":"{}","sentAt":"{}","text":"{}"}})", message2.getId(),
message2.getSender()->getNickname(), message2.getCreatedAt(), message2.getContent()) +
fmt::format(R"({{"id":"{}","senderName":"{}","sentAt":"{}","text":"{}"}},)", message1->getId(),
message1->getSender()->getNickname(), message1->getCreatedAt(), message1->getContent()) +
fmt::format(R"({{"id":"{}","senderName":"{}","sentAt":"{}","text":"{}"}})", message2->getId(),
message2->getSender()->getNickname(), message2->getCreatedAt(), message2->getContent()) +
R"(],"totalCount":2}})";
const common::messages::Message validMessageResponse{common::messages::MessageId::GetChannelMessagesResponse,
common::bytes::Bytes{validMessageResponsePayload}};
Expand Down Expand Up @@ -129,7 +108,7 @@ TEST_F(GetMessagesFromChannelMessageHandlerTest, handleMessage_shouldReturnValid
ASSERT_EQ(messageResponse, validMessageResponse);
}

TEST_F(GetMessagesFromChannelMessageHandlerTest, handleMessage_shouldReturnValidMessageResponseWithOneMessage)
TEST_F(GetMessagesFromChannelMessageHandlerTest, handleMessage_shouldReturnErrorMessageResponse)
{
EXPECT_CALL(*tokenServiceMock, verifyToken(token)).WillOnce(Return(verifyTokenResult));
EXPECT_CALL(*findChannelMessagesQueryHandlerMock, execute(_))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ namespace server::api
GetMessagesFromGroupMessageHandler::GetMessagesFromGroupMessageHandler(
std::shared_ptr<application::TokenService> tokenServiceInit,
std::unique_ptr<application::FindGroupMessagesQueryHandler> findGroupMessagesQueryHandlerInit)
: tokenService{std::move(tokenServiceInit)}, findGroupMessagesQueryHandler{std::move(findGroupMessagesQueryHandler)}
: tokenService{std::move(tokenServiceInit)},
findGroupMessagesQueryHandler{std::move(findGroupMessagesQueryHandlerInit)}
{
}

Expand Down Expand Up @@ -49,7 +50,7 @@ GetMessagesFromGroupMessageHandler::handleMessage(const common::messages::Messag
{
nlohmann::json responsePayload{{"error", e.what()}};

return {common::messages::MessageId::GetChannelMessagesResponse, common::bytes::Bytes{responsePayload.dump()}};
return {common::messages::MessageId::GetPrivateMessagesResponse, common::bytes::Bytes{responsePayload.dump()}};
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@

#include "faker-cxx/Datatype.h"
#include "faker-cxx/Date.h"
#include "faker-cxx/Internet.h"
#include "faker-cxx/Lorem.h"
#include "faker-cxx/String.h"
#include "nlohmann/json.hpp"
#include "server/tests/factories/channelTestFactory/ChannelTestFactory.h"
#include "server/tests/factories/groupTestFactory/GroupTestFactory.h"
#include "server/tests/factories/messageTestFactory/MessageTestFactory.h"
#include "server/tests/factories/userTestFactory/UserTestFactory.h"

using namespace server::api;
using namespace ::testing;
using namespace server::tests;

namespace
{
Expand All @@ -26,42 +29,21 @@ const auto invalidTokenMessageResponse = common::messages::Message{
class GetMessagesFromGroupMessageHandlerTest : public Test
{
public:
// TODO: move it to common test utils
server::domain::User createUser()
{
const auto userId = faker::String::uuid();
const auto userNickname = faker::String::alphanumeric(10);
const auto userEmail = faker::Internet::email();
const auto userPassword = faker::String::alphanumeric(10);
const auto userCreatedAt = faker::Date::recentDate();
const auto userUpdatedAt = faker::Date::recentDate();
const bool userActive = faker::Datatype::boolean();
const bool userEmailVerified = faker::Datatype::boolean();
const auto verificationCode = faker::String::numeric(6);
return {userId, userEmail, userPassword, userNickname, userActive, userEmailVerified,
verificationCode, userCreatedAt, userUpdatedAt};
}

server::domain::Message createMessage()
{
const auto messageId = faker::String::uuid();
const auto messageContent = faker::Lorem::sentence();
const auto messageSender = std::make_shared<server::domain::User>(createUser());
const std::shared_ptr<server::domain::Channel> messageChannel = nullptr;
const std::shared_ptr<server::domain::Group> messageGroup = nullptr;
const auto messageCreatedAt = faker::Date::recentDate();
const auto messageUpdatedAt = faker::Date::recentDate();
return server::domain::Message{messageId, messageContent, messageSender, messageChannel,
messageGroup, messageCreatedAt, messageUpdatedAt};
}

UserTestFactory userFactory;
ChannelTestFactory channelFactory;
MessageTestFactory messageFactory;
GroupTestFactory groupFactory;
const std::string token = faker::String::alphanumeric(40);
const std::string groupId = faker::String::uuid();
const std::string senderId = faker::String::uuid();
const server::application::VerifyTokenResult verifyTokenResult{senderId};
const server::domain::Message message1 = createMessage();
const server::domain::Message message2 = createMessage();
const std::vector<server::domain::Message> messages{message1, message2};
const std::shared_ptr<server::domain::Message> message1 = messageFactory.createDomainMessage(
userFactory.createDomainUser(), channelFactory.createDomainChannel(userFactory.createDomainUser()),
groupFactory.createDomainGroup());
const std::shared_ptr<server::domain::Message> message2 = messageFactory.createDomainMessage(
userFactory.createDomainUser(), channelFactory.createDomainChannel(userFactory.createDomainUser()),
groupFactory.createDomainGroup());
const std::vector<server::domain::Message> messages{*message1, *message2};
const unsigned totalCount = 2;

const nlohmann::json validPayloadJson{{"data", nlohmann::json{{"groupId", groupId}, {"limit", 10}, {"offset", 0}}},
Expand All @@ -71,10 +53,10 @@ class GetMessagesFromGroupMessageHandlerTest : public Test

const std::string validMessageResponsePayload =
R"({"data":{"messages":[)" +
std::format(R"({{"id":"{}","senderName":"{}","sentAt":"{}","text":"{}"}},)", message1.getId(),
message1.getSender()->getNickname(), message1.getCreatedAt(), message1.getContent()) +
std::format(R"({{"id":"{}","senderName":"{}","sentAt":"{}","text":"{}"}})", message2.getId(),
message2.getSender()->getNickname(), message2.getCreatedAt(), message2.getContent()) +
std::format(R"({{"id":"{}","senderName":"{}","sentAt":"{}","text":"{}"}},)", message1->getId(),
message1->getSender()->getNickname(), message1->getCreatedAt(), message1->getContent()) +
std::format(R"({{"id":"{}","senderName":"{}","sentAt":"{}","text":"{}"}})", message2->getId(),
message2->getSender()->getNickname(), message2->getCreatedAt(), message2->getContent()) +
R"(],"totalCount":2}})";
const common::messages::Message validMessageResponse{common::messages::MessageId::GetPrivateMessagesResponse,
common::bytes::Bytes{validMessageResponsePayload}};
Expand Down Expand Up @@ -121,12 +103,12 @@ TEST_F(GetMessagesFromGroupMessageHandlerTest, handleMessage_shouldReturnValidMe
const auto messageResponse = getMessagesFromGroupMessageHandler.handleMessage(validMessage);

const auto validMessageResponse =
common::messages::Message{common::messages::MessageId::GetChannelMessagesResponse,
common::messages::Message{common::messages::MessageId::GetPrivateMessagesResponse,
common::bytes::Bytes{R"({"data":{"messages":[],"totalCount":0}})"}};
ASSERT_EQ(messageResponse, validMessageResponse);
}

TEST_F(GetMessagesFromGroupMessageHandlerTest, handleMessage_shouldReturnValidMessageResponseWithOneMessage)
TEST_F(GetMessagesFromGroupMessageHandlerTest, handleMessage_shouldReturnErrorMessageResponse)
{
EXPECT_CALL(*tokenServiceMock, verifyToken(token)).WillOnce(Return(verifyTokenResult));
EXPECT_CALL(*findGroupMessagesQueryHandlerMock, execute(_))
Expand All @@ -135,7 +117,7 @@ TEST_F(GetMessagesFromGroupMessageHandlerTest, handleMessage_shouldReturnValidMe
const auto messageResponse = getMessagesFromGroupMessageHandler.handleMessage(validMessage);

const auto validMessageResponse =
common::messages::Message{common::messages::MessageId::GetChannelMessagesResponse,
common::messages::Message{common::messages::MessageId::GetPrivateMessagesResponse,
common::bytes::Bytes{R"({"error":"findChannelMessagesQueryHandlerError"})"}};
ASSERT_EQ(messageResponse, validMessageResponse);
}

0 comments on commit 58746fc

Please sign in to comment.