initial commit

This commit is contained in:
2021-08-10 23:22:25 +03:00
commit 18465ada30
42 changed files with 1647 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
package ru.penkrat.stbf.test;
import java.util.Optional;
import java.util.Random;
import lombok.Builder;
import lombok.Getter;
import ru.penkrat.stbf.api.BotRequest;
@Builder
class BotRequestImpl implements BotRequest {
private String messageText;
private String phoneNumber;
private String callbackData;
private String callbackMessageText;
@Getter
@Builder.Default
private Long chatId = new Random().nextLong();
@Override
public Optional<String> getMessageText() {
return Optional.ofNullable(messageText);
}
@Override
public Optional<String> getPhoneNumber() {
return Optional.ofNullable(phoneNumber);
}
@Override
public Optional<String> getCallbackData() {
return Optional.ofNullable(callbackData);
}
@Override
public Optional<String> getCallbackMessageText() {
return Optional.ofNullable(callbackMessageText);
}
}

View File

@@ -0,0 +1,43 @@
package ru.penkrat.stbf.test;
import ru.penkrat.stbf.api.BotResponse;
import ru.penkrat.stbf.api.Screen;
class BotResponseImpl implements BotResponse {
private Result result;
public BotResponseImpl(Result result) {
this.result = result;
}
@Override
public void send(Screen screen) {
result.addScreen(screen);
}
@Override
public void sendFile(String filename, byte[] data) {
// TODO Auto-generated method stub
}
@Override
public void editMessage(String text) {
// TODO Auto-generated method stub
}
@Override
public void deleteMessage() {
// TODO Auto-generated method stub
}
@Override
public void edit(Screen screen) {
// TODO Auto-generated method stub
}
}

View File

@@ -0,0 +1,23 @@
package ru.penkrat.stbf.test;
import java.util.ArrayList;
import java.util.List;
import ru.penkrat.stbf.api.Screen;
public class Result {
private final List<Screen> screens = new ArrayList<>();
public String text() {
if (screens.isEmpty()) {
return null;
}
return screens.get(0).getText();
}
public void addScreen(Screen screen) {
screens.add(screen);
}
}

View File

@@ -0,0 +1,43 @@
package ru.penkrat.stbf.test;
import lombok.RequiredArgsConstructor;
import ru.penkrat.stbf.api.BotCommandChain;
import ru.penkrat.stbf.api.BotRequest;
import ru.penkrat.stbf.api.Command;
import ru.penkrat.stbf.api.CommandChain;
import ru.penkrat.stbf.test.BotRequestImpl;
import ru.penkrat.stbf.test.BotResponseImpl;
@RequiredArgsConstructor
public class TestBot {
public static TestBot from(Command... commands) {
BotCommandChain bcc = new BotCommandChain();
for (int i = 0; i < commands.length; i++) {
bcc.add(commands[i]);
}
return new TestBot(bcc);
}
private final CommandChain commandChain;
public Result whenText(String input) {
return process(BotRequestImpl.builder().messageText(input).build());
}
public Result whenPhoneNumber(String input) {
return process(BotRequestImpl.builder().phoneNumber(input).build());
}
public Result whenCallback(String data) {
return process(BotRequestImpl.builder().callbackData(data).build());
}
private Result process(BotRequest botRequest) {
Result result = new Result();
commandChain.processCommand(botRequest, new BotResponseImpl(result));
return result;
}
}

View File

@@ -0,0 +1,23 @@
package ru.penkrat.stbf;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import org.junit.Test;
import ru.penkrat.stbf.api.Command;
import ru.penkrat.stbf.common.command.SimpleCommand;
import ru.penkrat.stbf.test.Result;
import ru.penkrat.stbf.test.TestBot;
public class BotTest {
private Command start = new SimpleCommand("/start", "Hello, world");
@Test
public void shouldAnswerWithHello() {
Result result = TestBot.from(start).whenText("/start");
assertThat(result.text(), containsString("Hello, world"));
}
}