Skip to content

Commit 7347e70

Browse files
committed
Implemented back button (#).
1 parent 4680e9a commit 7347e70

File tree

3 files changed

+35
-5
lines changed

3 files changed

+35
-5
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.hextremelabs.ussd</groupId>
77
<artifactId>lib-ussd</artifactId>
8-
<version>1.1-SNAPSHOT</version>
8+
<version>1.0.1-SNAPSHOT</version>
99
<packaging>jar</packaging>
1010

1111
<parent>

src/main/java/com/hextremelabs/ussd/rpc/Endpoint.java

+24-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.hextremelabs.ussd.handler.UssdHandler;
88
import com.hextremelabs.ussd.internal.Internal;
99
import com.hextremelabs.ussd.internal.Internal.Log;
10+
import com.hextremelabs.ussd.internal.Internal.Pair;
1011
import com.hextremelabs.ussd.internal.VisibleForTesting;
1112
import com.hextremelabs.ussd.session.Session;
1213
import com.hextremelabs.ussd.session.SessionManager;
@@ -91,16 +92,33 @@ String handleRequest(UssdRequest request) {
9192
List<String> commands = parse(request.getMessage());
9293
if (session == null) {
9394
session = new Session(request);
94-
session.pushScreen(uiManager.getHomeScreen(), uiManager.render(uiManager.getHomeScreen(), null));
95+
session.pushScreen(uiManager.getHomeScreen(), uiManager.render(uiManager.getHomeScreen()));
9596
if (commands.size() == 1) {
9697
if (uiManager.getHomeScreen().getType() != DISPLAY) {
9798
sessionManager.putSession(session);
9899
}
99100

100-
return uiManager.render(uiManager.getHomeScreen());
101+
return session.peekLastScreen().getValue();
101102
}
102103
}
103104

105+
if (commands.size() == 1 && "#".equals(commands.get(0))) {
106+
System.out.println("###: " + session.getNavigation());
107+
session.pollLastScreen();
108+
final Pair<Screen, String> lastScreen = session.peekLastScreen();
109+
if (lastScreen != null) {
110+
return lastScreen.getValue();
111+
}
112+
113+
session.pushScreen(uiManager.getHomeScreen(), uiManager.render(uiManager.getHomeScreen()));
114+
sessionManager.putSession(session);
115+
return session.peekLastScreen().getValue();
116+
}
117+
118+
if (commands.size() > 1) {
119+
commands.remove(0);
120+
}
121+
104122
String result = null;
105123
if (commands.isEmpty()) {
106124
return session.peekLastScreen().getValue();
@@ -172,11 +190,14 @@ private String execute(Session session, String command)
172190
}
173191

174192
screen = session.peekLastScreen().getKey();
193+
session.peekLastScreen().setValue(uiManager.render(screen, executionResult));
175194
if (screen.getType() == DISPLAY) {
176195
sessionManager.invalidate(session);
196+
} else {
197+
sessionManager.putSession(session);
177198
}
178199

179-
return uiManager.render(screen, executionResult);
200+
return session.peekLastScreen().getValue();
180201
}
181202

182203
@VisibleForTesting

src/test/java/com/hextremelabs/ussd/rpc/EndpointTest.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ public void handleRequest() throws Exception {
5252

5353
assertEquals("Welcome~1. Greet Me~2. Exit", endpoint.handleRequest(handler.parseRequest(httpRequest)));
5454

55+
when(httpRequest.getParameter("message")).thenReturn("1");
56+
assertEquals("Lib-USSD~What is your name?", endpoint.handleRequest(handler.parseRequest(httpRequest)));
57+
58+
when(httpRequest.getParameter("message")).thenReturn("#"); // Back button.
59+
assertEquals("Welcome~1. Greet Me~2. Exit", endpoint.handleRequest(handler.parseRequest(httpRequest)));
60+
5561
when(httpRequest.getParameter("message")).thenReturn("1");
5662
assertEquals("Lib-USSD~What is your name?", endpoint.handleRequest(handler.parseRequest(httpRequest)));
5763
when(httpRequest.getParameter("message")).thenReturn("Sayo");
@@ -64,7 +70,10 @@ public void handleRequest() throws Exception {
6470
assertEquals("Goodbye~Sad to see you go", endpoint.handleRequest(handler.parseRequest(httpRequest)));
6571

6672
// Goodbye page with is a DISPLAY page terminates the session.
67-
assertEquals("Welcome~1. Greet Me~2. Exit", endpoint.handleRequest(handler.parseRequest(httpRequest)));
73+
when(httpRequest.getParameter("message")).thenReturn("*556*2#");
74+
assertEquals("Goodbye~Sad to see you go", endpoint.handleRequest(handler.parseRequest(httpRequest)));
75+
76+
6877
}
6978

7079
@Test

0 commit comments

Comments
 (0)