userver: userver/cache/data_provider_mock.hpp Source File
Loading...
Searching...
No Matches
data_provider_mock.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/cache/data_provider_mock.hpp
4/// @brief Mock implementation of DataProvider
5
6#include <userver/cache/data_provider.hpp>
7
8USERVER_NAMESPACE_BEGIN
9
10namespace cache {
11
12/// @brief Mock implementation of DataProvider for testing purposes
13/// @tparam T The type of data being provided
14///
15/// DataProviderMock is a mock implementation of the DataProvider interface
16/// that stores static data and returns shared readable pointers to it.
17/// It's designed for use in unit tests where you want to provide
18/// controlled data to components that depend on DataProvider.
19template <typename T>
20class DataProviderMock : public DataProvider<T> {
21public:
22 using DataProvider<T>::DataType;
23
24 explicit DataProviderMock(DataType data)
25 : data_{std::make_shared<DataType>(std::move(data))}
26 {}
27 explicit DataProviderMock(std::shared_ptr<DataType> data)
28 : data_{std::move(data)}
29 {}
30
31 utils::SharedReadablePtr<DataType> Get() const final {
32 return utils::SharedReadablePtr<DataType>(data_.ReadCopy());
33 };
34
35private:
36 rcu::Variable<std::shared_ptr<const DataType>> data_;
37};
38
39} // namespace cache
40
41USERVER_NAMESPACE_END