log_manager_test.cxx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. //
  2. // log_manager_test.cxx
  3. // logger_test
  4. //
  5. // Created by Sam Jaffe on 4/2/19.
  6. //
  7. #include "../../../types/resource_factory/include/resource_factory/prototype_factory.hpp"
  8. #include "logger/c_logger.h"
  9. #include "logger/log_manager.h"
  10. #include "logger/logger_impl.h"
  11. #include "logger/properties.h"
  12. #include "mock_logger.h"
  13. using namespace logging;
  14. class LogManagerTest : public ::testing::Test {
  15. public:
  16. void SetUp() override;
  17. void TearDown() override;
  18. protected:
  19. std::shared_ptr<MockLoggerImpl> logger;
  20. private:
  21. impl_factory::scoped_binding binding_;
  22. };
  23. void LogManagerTest::SetUp() {
  24. auto GetMock = [this](properties const &) {
  25. return logger = std::make_shared<MockLoggerImpl>();
  26. };
  27. binding_ = impl_factory::instance().bind_scoped("Mock", GetMock);
  28. }
  29. void LogManagerTest::TearDown() {
  30. binding_.reset();
  31. }
  32. extern properties const MIN_PROPERTY_SCHEMA;
  33. extern properties const MULTIPLEX_PROPERTY_SCHEMA;
  34. TEST_F(LogManagerTest, CanInjectMock) {
  35. manager().configure(MIN_PROPERTY_SCHEMA);
  36. using ::testing::NotNull;
  37. EXPECT_THAT(logger, ::testing::NotNull());
  38. }
  39. TEST_F(LogManagerTest, CanFetchInjectedMock) {
  40. manager mgr;
  41. mgr.configure(MIN_PROPERTY_SCHEMA);
  42. using ::testing::_;
  43. using ::testing::AnyNumber;
  44. EXPECT_CALL(*logger, flush()).Times(AnyNumber());
  45. EXPECT_CALL(*logger, write(_, "TEST MESSAGE"));
  46. c_logger l = mgr.c_get();
  47. l.error("TEST MESSAGE");
  48. }
  49. TEST_F(LogManagerTest, MultiplexMockLogsToMultipleImpls) {
  50. manager mgr;
  51. mgr.configure(MULTIPLEX_PROPERTY_SCHEMA);
  52. using ::testing::_;
  53. using ::testing::AnyNumber;
  54. EXPECT_CALL(*logger, flush()).Times(AnyNumber());
  55. EXPECT_CALL(*logger, write(_, "TEST MESSAGE")).Times(2);
  56. c_logger l = mgr.c_get();
  57. l.error("TEST MESSAGE");
  58. }