SVCS - Русская документация
Загрузка...
Поиск...
Не найдено
MockHelpService.hxx
См. документацию.
1
23#pragma once
24
25#include <string>
26#include <vector>
27#include <map>
28#include <set>
29#include <functional>
30#include <memory>
31#include "MockSubject.hxx"
33
46 * @details Содержит mock реализации CLI-интерфейсов, используемых
47 * для тестирования поведения команд, систем справки и взаимодействий с пользователем.
48 * Эти моки предоставляют контролируемые ответы команд и возможности
49 * верификации для модульных тестов CLI команд.
50 */
51namespace svcs::test::cli::mocks {
52
54
74class MockHelpService {
75private:
78 * @brief Storage for the list of available commands to be returned by the mock.
79 *
80 * @russian
81 * @brief Хранилище для списка доступных команд, возвращаемых mock'ом.
82 */
83 std::vector<std::string> availableCommands_;
84
88 *
89 * @russian
90 * @brief Хранилище для предварительно настроенных описаний команд.
91 */
92 std::map<std::string, std::string> commandDescriptions_;
93
97 *
98 * @russian
99 * @brief Записывает имена команд, для которых была запрошена справка через showCommandHelp.
100 */
101 std::set<std::string> calledCommandHelp_;
102
104
110 std::shared_ptr<MockSubject> mockEventBus_;
111
119 bool wasGeneralHelpCalled_ = false;
120
121public:
127 * @russian
128 * @brief Конструктор для MockHelpService.
129 * @param mockEventBus Общий указатель на MockSubject, используемый для уведомлений.
130 */
131 explicit MockHelpService(const std::shared_ptr<MockSubject>& mockEventBus)
132 : mockEventBus_(mockEventBus) {
133 }
134
135 // --- Mock Methods Matching HelpService Interface ---
136
137
144 * @return Вектор имен команд.
145 */
146 [[nodiscard]] std::vector<std::string> getAvailableCommands() const {
147 return availableCommands_;
148 }
149
153 * @param commandName The name of the command.
154 * @return The configured description, or "No description available" if not set.
155 *
156 * @russian
157 * @brief Возвращает предварительно настроенное описание для заданной команды.
158 * @param commandName Имя команды.
159 * @return Настроенное описание или "No description available", если не установлено.
160 */
161 [[nodiscard]] std::string getCommandDescription(const std::string& commandName) const {
162 auto it = commandDescriptions_.find(commandName);
163 if (it != commandDescriptions_.end()) {
164 return it->second;
165 }
166 return "No description available";
167 }
168
170 * @english
171 * @brief Records that help was requested for the given command.
172 * @details Also emits a debug message to the mock event bus.
173 * @param commandName The name of the command whose help is requested.
174 *
175 * @russian
176 * @brief Записывает, что справка была запрошена для заданной команды.
177 * @details Также отправляет отладочное сообщение в mock шину событий.
178 * @param commandName Имя команды, для которой запрашивается справка.
179 */
180 void showCommandHelp(const std::string& commandName) {
181 calledCommandHelp_.insert(commandName);
182 if (mockEventBus_) {
183 // Создаем объект Event правильно - используем поле details
184 Event event;
186 event.details = "MockHelpService: Showing help for " + commandName;
187 event.source_name = "help";
188 mockEventBus_->notify(event);
189 }
190 }
191
201 void showGeneralHelp() {
202 wasGeneralHelpCalled_ = true;
203 if (mockEventBus_) {
204 // Создаем объект Event правильно - используем поле details
205 Event event;
207 event.details = "MockHelpService: Showing general help";
208 event.source_name = "help";
209 mockEventBus_->notify(event);
210 }
211 }
212
213 // --- Test Control Methods ---
214
224 void setAvailableCommands(const std::vector<std::string>& commands) {
225 availableCommands_ = commands;
226 }
227
239 void setCommandDescription(const std::string& commandName, const std::string& description) {
240 commandDescriptions_[commandName] = description;
241 }
242
254 [[nodiscard]] bool wasCommandHelpCalled(const std::string& commandName) const {
255 return calledCommandHelp_.find(commandName) != calledCommandHelp_.end();
256 }
257
267 [[nodiscard]] bool wasGeneralHelpCalled() const {
268 return wasGeneralHelpCalled_;
269 }
270
278 void clear() {
279 calledCommandHelp_.clear();
280 availableCommands_.clear();
281 commandDescriptions_.clear();
282 wasGeneralHelpCalled_ = false;
283 }
284};
285
286} // namespace svcs::test::cli::mocks
Определяет структуру события, используемую для уведомлений по шаблону Observer.
bool wasGeneralHelpCalled() const
Проверяет, был ли вызван showGeneralHelp().
Определения MockHelpService.hxx:170
bool wasCommandHelpCalled(const std::string &commandName) const
Проверяет, был ли вызван showCommandHelp() для конкретной команды.
Определения MockHelpService.hxx:162
void clear()
Сбрасывает внутреннее состояние mock'а (вызванные команды, списки и описания).
Определения MockHelpService.hxx:177
void setAvailableCommands(const std::vector< std::string > &commands)
Устанавливает список имен команд, возвращаемых getAvailableCommands().
Определения MockHelpService.hxx:144
void showCommandHelp(const std::string &commandName)
Записывает, что справка была запрошена для заданной команды.
Определения MockHelpService.hxx:110
void showGeneralHelp()
Записывает, что была запрошена общая справка.
Определения MockHelpService.hxx:126
std::vector< std::string > getAvailableCommands() const
Возвращает предварительно настроенный список доступных команд.
Определения MockHelpService.hxx:88
std::string getCommandDescription(const std::string &commandName) const
Возвращает предварительно настроенное описание для заданной команды.
Определения MockHelpService.hxx:97
void setCommandDescription(const std::string &commandName, const std::string &description)
Настраивает описание для конкретного имени команды.
Определения MockHelpService.hxx:153
MockHelpService(const std::shared_ptr< MockSubject > &mockEventBus)
Конструктор для MockHelpService.
Определения MockHelpService.hxx:78
Mock реализация интерфейса ISubject для целей модульного тестирования.
Mock объекты и тестовые дубли для тестирования CLI команд.
Структура, описывающая событие, опубликованное ядром VCS.
Определения Event.hxx:27
@ DEBUG_MESSAGE
Отладочное сообщение для целей разработки.
Определения Event.hxx:90
Type type
Тип произошедшего события.
Определения Event.hxx:146