를 만들어 준다")
void testRequestInputOrder() {
//given
String readLine = "[감자칩-2],[사이다-1]";
System.setIn(new ByteArrayInputStream(readLine.getBytes()));
//when
Listclass InputHandlerTest {
private static InputHandler inputHandler;
@AfterEach
void set() {
Console.close();
}
@BeforeAll
static void setUp() {
inputHandler = new InputHandler(new InputValidator(),new InputView());
}
@Test
@DisplayName("InputHandler는 주문을 바탕으로 List<OrderDto>를 만들어 준다")
void testRequestInputOrder() {
//given
String readLine = "[감자칩-2],[사이다-1]";
System.setIn(new ByteArrayInputStream(readLine.getBytes()));
//when
List<OrderDto> orders = inputHandler.requestInputOrder();
//then
OrderDto potatoChip = new OrderDto("감자칩",2);
OrderDto cider = new OrderDto("사이다",1);
List<OrderDto> answer = List.of(potatoChip,cider);
assertThat(orders).isEqualTo(answer);
}
}
class InputValidatorTest {
private static InputValidator inputvalidator;
@BeforeAll
static void setUp() {
inputvalidator = new InputValidator();
}
@Test
@DisplayName("주문으로 null값을 입력할 수 없다")
void nullOrderNotAllowed() {
String nullString = null;
assertThatThrownBy(() -> {
inputvalidator.validateProductOrder(nullString);
}).hasMessageContaining(InputErrors.INVALID_AMOUNT_OR_NAME.getMessage());
}
@ParameterizedTest
@DisplayName("주문으로 공백을 받을 수 없다")
@ValueSource(strings = {"", " ", " ", "\\n", "\\t"})
void blankOrderNotAllowed(String input) {
assertThatThrownBy(() -> {
inputvalidator.validateProductOrder(input);
}).hasMessageContaining(InputErrors.INVALID_AMOUNT_OR_NAME.getMessage());
}
}
class WorkerTest {
@ParameterizedTest
@DisplayName("이름이 5글자를 넘어가면 에러가 생긴다")
@ValueSource(strings = {"정말정말정말긴이름","이름이다섯글자이상"})
void invalidWorkerName(String input) {
assertThatThrownBy(() -> {
Worker worker = new Worker(input);
}).hasMessageContaining(String.format(Errors.WORKER_NAME_LENGTH.getMessage(),5));
}
}