Рефакторинг и исправление тестов

This commit is contained in:
Mark Struchkov 2019-08-22 13:11:50 +03:00
parent c605a711a6
commit c8dedeb4d5
8 changed files with 46 additions and 43 deletions

View File

@ -55,10 +55,14 @@ public class AutoResponder<U extends Unit> {
!unitPointer.isPresent() || newScenario(unitPointer.get()) ? startUnits : unitPointer.get().getUnit().getNextUnits(), !unitPointer.isPresent() || newScenario(unitPointer.get()) ? startUnits : unitPointer.get().getUnit().getNextUnits(),
message message
); );
unitOpt.ifPresent(unit -> { if (unitOpt.isPresent()) {
unitPointer.orElseGet(() -> unitPointerService.create(personId)); U unit = unitOpt.get();
if (unitPointer.isPresent()) {
unitPointerService.edit(personId, unit); unitPointerService.edit(personId, unit);
}); } else {
unitPointerService.add(new UnitPointer(personId, unit));
}
}
return unitOpt.isPresent() ? unitOpt : Optional.ofNullable(defaultUnit); return unitOpt.isPresent() ? unitOpt : Optional.ofNullable(defaultUnit);
} }

View File

@ -1,10 +0,0 @@
package org.sadtech.autoresponder.exception;
/**
* Исключение, которое выбрасывается, если юнит не найден.
*
* @author upagge [07/07/2019]
*/
public class NotFoundUnitException extends RuntimeException {
}

View File

@ -25,8 +25,6 @@ public interface UnitPointerService {
Optional<UnitPointer> getByEntityId(@NonNull Integer entityId); Optional<UnitPointer> getByEntityId(@NonNull Integer entityId);
UnitPointer create(@NonNull Integer entryId);
void edit(@NonNull Integer personId, Unit unit); void edit(@NonNull Integer personId, Unit unit);

View File

@ -20,11 +20,6 @@ public class UnitPointerServiceImpl implements UnitPointerService {
return unitPointerRepository.findByEntityId(entityId); return unitPointerRepository.findByEntityId(entityId);
} }
@Override
public UnitPointer create(@NonNull Integer entryId) {
return unitPointerRepository.add(new UnitPointer(entryId));
}
@Override @Override
public void edit(@NonNull Integer personId, Unit unit) { public void edit(@NonNull Integer personId, Unit unit) {
if (check(personId)) { if (check(personId)) {

View File

@ -13,5 +13,5 @@ import java.lang.annotation.Target;
@Target(ElementType.FIELD) @Target(ElementType.FIELD)
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface Description { public @interface Description {
String value(); String value() default "";
} }

View File

@ -0,0 +1,15 @@
package org.sadtech.autoresponder.util;
/**
* Класс содержащий сообщения для ошибок и логера.
*
* @author upagge [22.08.2019]
*/
final class Message {
static final String UTILITY_CLASS = "Клас утилита";
private Message() {
throw new IllegalStateException(UTILITY_CLASS);
}
}

View File

@ -1,9 +1,12 @@
package org.sadtech.autoresponder.util; package org.sadtech.autoresponder.util;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.sadtech.autoresponder.util.Message.UTILITY_CLASS;
/** /**
* Разбивает строку на множество слов, удаляя предлоги. * Разбивает строку на множество слов, удаляя предлоги.
@ -13,13 +16,11 @@ import java.util.stream.Stream;
public class Parser { public class Parser {
@Description("Множество предлогов") @Description("Множество предлогов")
private static final Set<String> pretexts = Stream private static final Set<String> pretexts = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("в", "без", "до", "из", "к", "на", "по", "о", "от", "перед", "при", "с", "у", "за", "над", "об",
.of("в", "без", "до", "из", "к", "на", "по", "о", "от", "перед", "при", "с", "у", "за", "над", "об", "под", "про", "для")));
"под", "про", "для")
.collect(Collectors.toSet());
private Parser() { private Parser() {
throw new IllegalStateException("Utility Class"); throw new IllegalStateException(UTILITY_CLASS);
} }
/** /**

View File

@ -70,9 +70,9 @@ public class AutoResponderTest {
@Test @Test
public void simpleAnswer() { public void simpleAnswer() {
String message = autoresponder.answer(1, "привет это тестирвоание функциональности").get().getMessage(); String message = autoresponder.answer(1, "привет это тестирвоание функциональности").orElseThrow(NullPointerException::new).getMessage();
Assert.assertEquals("тест", message); Assert.assertEquals("тест", message);
String message1 = autoresponder.answer(2, "привет, еще одно тестирование").get().getMessage(); String message1 = autoresponder.answer(2, "привет, еще одно тестирование").orElseThrow(NullPointerException::new).getMessage();
Assert.assertEquals("тест", message1); Assert.assertEquals("тест", message1);
} }
@ -81,7 +81,7 @@ public class AutoResponderTest {
TestUnit defaultUnit = TestUnit.builder().message("не знаю").build(); TestUnit defaultUnit = TestUnit.builder().message("не знаю").build();
autoresponder.setDefaultUnit(defaultUnit); autoresponder.setDefaultUnit(defaultUnit);
Assert.assertEquals("не знаю", autoresponder.answer(2, "пока").get().getMessage()); Assert.assertEquals("не знаю", autoresponder.answer(2, "пока").orElseThrow(NullPointerException::new).getMessage());
} }
@Test @Test
@ -91,7 +91,7 @@ public class AutoResponderTest {
@Test @Test
public void regExpAnswer() { public void regExpAnswer() {
String message = autoresponder.answer(1, "79101234567").get().getMessage(); String message = autoresponder.answer(1, "79101234567").orElseThrow(NullPointerException::new).getMessage();
Assert.assertEquals("регулярка", message); Assert.assertEquals("регулярка", message);
} }
@ -99,9 +99,9 @@ public class AutoResponderTest {
public void priorityAnswer() { public void priorityAnswer() {
autoresponder.answer(1, "привет"); autoresponder.answer(1, "привет");
autoresponder.answer(2, "привет"); autoresponder.answer(2, "привет");
String message = autoresponder.answer(1, "как твои делишки").get().getMessage(); String message = autoresponder.answer(1, "как твои делишки").orElseThrow(NullPointerException::new).getMessage();
Assert.assertEquals("отлично", message); Assert.assertEquals("отлично", message);
String message1 = autoresponder.answer(2, "твои дела все еще хорошо?").get().getMessage(); String message1 = autoresponder.answer(2, "твои дела все еще хорошо?").orElseThrow(NullPointerException::new).getMessage();
Assert.assertEquals("хорошо", message1); Assert.assertEquals("хорошо", message1);
} }
@ -109,14 +109,14 @@ public class AutoResponderTest {
public void showRegExpVsKeyWords() { public void showRegExpVsKeyWords() {
autoresponder.answer(1, "привет"); autoresponder.answer(1, "привет");
autoresponder.answer(1, "дела"); autoresponder.answer(1, "дела");
Assert.assertEquals("регулярка", autoresponder.answer(1, "89101234567").get().getMessage()); Assert.assertEquals("регулярка", autoresponder.answer(1, "89101234567").orElseThrow(NullPointerException::new).getMessage());
} }
@Test @Test
public void matchThreshold() { public void matchThreshold() {
autoresponder.answer(1, "витамин я сьем, и арбуз получу"); autoresponder.answer(1, "витамин я сьем, и арбуз получу");
String message = "параметр себе задам: покушать витамин и арбуз, а вместе все это мультифрукт"; String message = "параметр себе задам: покушать витамин и арбуз, а вместе все это мультифрукт";
String answer = autoresponder.answer(1, message).get().getMessage(); String answer = autoresponder.answer(1, message).orElseThrow(NullPointerException::new).getMessage();
Assert.assertEquals("победа", answer); Assert.assertEquals("победа", answer);
} }
@ -124,16 +124,16 @@ public class AutoResponderTest {
public void generalAnswer() { public void generalAnswer() {
TestUnit defaultUnit = TestUnit.builder().message("не знаю").build(); TestUnit defaultUnit = TestUnit.builder().message("не знаю").build();
autoresponder.setDefaultUnit(defaultUnit); autoresponder.setDefaultUnit(defaultUnit);
String answer = autoresponder.answer(1, "привет это тестирование функциональности").get().getMessage(); String answer = autoresponder.answer(1, "привет это тестирование функциональности").orElseThrow(NullPointerException::new).getMessage();
Assert.assertEquals("тест", answer); Assert.assertEquals("тест", answer);
Assert.assertEquals("хорошо", autoresponder.answer(1, "как твои дела").get().getMessage()); Assert.assertEquals("хорошо", autoresponder.answer(1, "как твои дела").orElseThrow(NullPointerException::new).getMessage());
String answer2 = autoresponder.answer(2, "привет это тестирование функциональности").get().getMessage(); String answer2 = autoresponder.answer(2, "привет это тестирование функциональности").orElseThrow(NullPointerException::new).getMessage();
Assert.assertEquals("тест", answer2); Assert.assertEquals("тест", answer2);
Assert.assertEquals("не знаю", autoresponder.answer(1, "нет").get().getMessage()); Assert.assertEquals("не знаю", autoresponder.answer(1, "нет").orElseThrow(NullPointerException::new).getMessage());
String message = "параметр себе задам: покушать витамин и арбуз, а вместе все это мультифрукт"; String message = "параметр себе задам: покушать витамин и арбуз, а вместе все это мультифрукт";
Assert.assertEquals("победа", autoresponder.answer(3, message).get().getMessage()); Assert.assertEquals("победа", autoresponder.answer(3, message).orElseThrow(NullPointerException::new).getMessage());
Assert.assertEquals("регулярка", autoresponder.answer(1, "8912345678").get().getMessage()); Assert.assertEquals("регулярка", autoresponder.answer(1, "8912345678").orElseThrow(NullPointerException::new).getMessage());
String answer3 = autoresponder.answer(1, "привет это тестирование функциональности").get().getMessage(); String answer3 = autoresponder.answer(1, "привет это тестирование функциональности").orElseThrow(NullPointerException::new).getMessage();
Assert.assertEquals("тест", answer3); Assert.assertEquals("тест", answer3);
} }