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

53
stbf-test/pom.xml Normal file
View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>stbf-parent</artifactId>
<groupId>ru.penkrat.stbf</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>stbf-test</artifactId>
<name>stbf-test</name>
<dependencies>
<dependency>
<groupId>ru.penkrat.stbf</groupId>
<artifactId>stbf-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>ru.penkrat.stbf</groupId>
<artifactId>stbf-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

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"));
}
}