mirror of
https://github.com/logos-co/logos-cpp-sdk.git
synced 2026-08-31 01:31:10 +00:00
103 lines
2.7 KiB
C++
103 lines
2.7 KiB
C++
#include <gtest/gtest.h>
|
|
#include "logos_mock.h"
|
|
|
|
class LogosMockSetupTest : public ::testing::Test {
|
|
protected:
|
|
void SetUp() override
|
|
{
|
|
// Ensure we start in Remote mode
|
|
LogosModeConfig::setMode(LogosMode::Remote);
|
|
MockStore::instance().reset();
|
|
TokenManager::instance().clearAllTokens();
|
|
}
|
|
void TearDown() override
|
|
{
|
|
LogosModeConfig::setMode(LogosMode::Remote);
|
|
}
|
|
};
|
|
|
|
TEST_F(LogosMockSetupTest, SwitchesToMockMode)
|
|
{
|
|
{
|
|
LogosMockSetup mock;
|
|
EXPECT_TRUE(LogosModeConfig::isMock());
|
|
}
|
|
// After destruction, mode is restored
|
|
EXPECT_TRUE(LogosModeConfig::isRemote());
|
|
}
|
|
|
|
TEST_F(LogosMockSetupTest, RestoresPreviousMode)
|
|
{
|
|
LogosModeConfig::setMode(LogosMode::Local);
|
|
{
|
|
LogosMockSetup mock;
|
|
EXPECT_TRUE(LogosModeConfig::isMock());
|
|
}
|
|
EXPECT_TRUE(LogosModeConfig::isLocal());
|
|
// Restore for teardown
|
|
LogosModeConfig::setMode(LogosMode::Remote);
|
|
}
|
|
|
|
TEST_F(LogosMockSetupTest, ResetsStoreOnConstruction)
|
|
{
|
|
MockStore::instance().when("mod", "fn").thenReturn(QVariant(1));
|
|
MockStore::instance().recordAndReturn("mod", "fn", {});
|
|
|
|
LogosMockSetup mock;
|
|
|
|
// Previous expectations and calls cleared
|
|
EXPECT_FALSE(MockStore::instance().wasCalled("mod", "fn"));
|
|
QVariant r = MockStore::instance().recordAndReturn("mod", "fn", {});
|
|
EXPECT_FALSE(r.isValid());
|
|
}
|
|
|
|
TEST_F(LogosMockSetupTest, ClearsTokensOnConstruction)
|
|
{
|
|
TokenManager::instance().saveToken("stale", "token");
|
|
|
|
LogosMockSetup mock;
|
|
|
|
EXPECT_FALSE(TokenManager::instance().hasToken("stale"));
|
|
}
|
|
|
|
TEST_F(LogosMockSetupTest, WhenPreSeedsToken)
|
|
{
|
|
LogosMockSetup mock;
|
|
mock.when("my_module", "doStuff").thenReturn(QVariant("ok"));
|
|
|
|
EXPECT_TRUE(TokenManager::instance().hasToken("my_module"));
|
|
}
|
|
|
|
TEST_F(LogosMockSetupTest, WhenSetsExpectation)
|
|
{
|
|
LogosMockSetup mock;
|
|
mock.when("mod", "fn").thenReturn(QVariant(99));
|
|
|
|
QVariant r = MockStore::instance().recordAndReturn("mod", "fn", {});
|
|
EXPECT_EQ(r.toInt(), 99);
|
|
}
|
|
|
|
TEST_F(LogosMockSetupTest, VerificationDelegates)
|
|
{
|
|
LogosMockSetup mock;
|
|
mock.when("mod", "fn").thenReturn(QVariant(1));
|
|
|
|
MockStore::instance().recordAndReturn("mod", "fn", {QVariant("arg")});
|
|
|
|
EXPECT_TRUE(mock.wasCalled("mod", "fn"));
|
|
EXPECT_TRUE(mock.wasCalledWith("mod", "fn", {QVariant("arg")}));
|
|
EXPECT_EQ(mock.callCount("mod", "fn"), 1);
|
|
EXPECT_EQ(mock.lastArgs("mod", "fn").size(), 1);
|
|
}
|
|
|
|
TEST_F(LogosMockSetupTest, ResetsStoreOnDestruction)
|
|
{
|
|
{
|
|
LogosMockSetup mock;
|
|
mock.when("mod", "fn").thenReturn(QVariant(1));
|
|
MockStore::instance().recordAndReturn("mod", "fn", {});
|
|
}
|
|
// After destruction, store is clean
|
|
EXPECT_FALSE(MockStore::instance().wasCalled("mod", "fn"));
|
|
}
|