some small fixes in 2022-02 spring-00

This commit is contained in:
stvort
2022-03-07 20:47:47 +04:00
parent a15b619903
commit f1be5149f7
5 changed files with 18 additions and 14 deletions
@@ -6,7 +6,9 @@ import java.util.List;
import java.util.Scanner;
import java.util.stream.IntStream;
// Вынос печати меню, чтения пункта меню и выполнения команд в методы
// Вынос печати меню, чтения пункта меню и выполнения команд в методы.
// - Убрали один уровень вложенности
// - Отделили что делает приложение от того, как оно это делает
public class Main {
private static final int MENU_OPTION_SHOW_ALL_NOTES = 1;
@@ -3,7 +3,7 @@ package ru.otus;
import ru.otus.config.AppSettings;
import ru.otus.services.*;
// +AppSettings
// +AppSettings, +ApplicationStopService, IOService стал Streams, методы MenuCommandsProcessor очистились от IOService
public class Main {
public static void main(String[] args) {
var appSettings = new AppSettings(true, "dd.mm.YYYY HH:mm:ss");
@@ -11,6 +11,7 @@ import java.util.List;
// OCP + ISP (AppSettings + IOService) + тесты
public class Main {
public static void main(String[] args) {
var appSettings = new AppSettings(true, "dd.mm.YYYY HH:mm:ss");
var ioService = new IOServiceStreams(System.out, System.in);
@@ -18,22 +19,23 @@ public class Main {
var notesService = new NotesServiceImpl();
var noteConverter = new NoteConverterImpl(appSettings);
var menuOptions = List.of(
new MenuOption(1, "Вывести все заметки"),
new MenuOption(2, "Добавить заметку"),
new MenuOption(3, "Изменить заметку"),
new MenuOption(4, "Удалить заметку"),
new MenuOption(5, "Выйти")
var showAllNotesMenuOption = new MenuOption(1, "Вывести все заметки");
var addNewNoteMenuOption = new MenuOption(2, "Добавить заметку");
var updateNoteMenuOption = new MenuOption(3, "Изменить заметку");
var deleteNoteMenuOption = new MenuOption(4, "Удалить заметку");
var stopApplicationMenuOption = new MenuOption(5, "Выйти");
var menuOptions = List.of(showAllNotesMenuOption, addNewNoteMenuOption,
updateNoteMenuOption, deleteNoteMenuOption, stopApplicationMenuOption
);
var menuOptionsRegistry = new MenuOptionsRegistryImpl(menuOptions);
var processors = List.of(
new ShowAllNotesSingleCommandProcessor(ioService, notesService, noteConverter, menuOptions.get(0)),
new AddNewNoteSingleCommandProcessor(ioService, notesService, menuOptions.get(1)),
new UpdateNoteSingleCommandProcessor(ioService, notesService, menuOptions.get(2)),
new DeleteNoteSingleCommandProcessor(ioService, notesService, menuOptions.get(3)),
new StopApplicationSingleCommandProcessor(applicationStopService, menuOptions.get(4))
new ShowAllNotesSingleCommandProcessor(ioService, notesService, noteConverter, showAllNotesMenuOption),
new AddNewNoteSingleCommandProcessor(ioService, notesService, addNewNoteMenuOption),
new UpdateNoteSingleCommandProcessor(ioService, notesService, updateNoteMenuOption),
new DeleteNoteSingleCommandProcessor(ioService, notesService, deleteNoteMenuOption),
new StopApplicationSingleCommandProcessor(applicationStopService, stopApplicationMenuOption)
);
var menuCommandsProcessor = new MenuCommandsProcessorImpl(processors);
@@ -30,6 +30,7 @@ class MenuOptionsRegistryImplTest {
.containsExactlyInAnyOrderElementsOf(options);
}
// Обратить внимание на работу с Optional
@DisplayName("должен корректно возвращать опцию меню по ее идентификатору ")
@Test
void shouldReturnExpectedMenuOptionById() {
@@ -49,7 +49,6 @@ class AddNewNoteSingleCommandProcessorTest {
verify(notesService).save(captor.capture());
var actualNote = captor.getValue();
assertThat(actualNote).extracting(Note::getText).isEqualTo(expectedNoteText);
}
@DisplayName("должен возвращает ожидаемый тип обрабатываемой команды")