Skip to content

Commit 0c233bc

Browse files
committed
Add JavaScriptResolver Test
1 parent a5a5989 commit 0c233bc

File tree

4 files changed

+227
-20
lines changed

4 files changed

+227
-20
lines changed

src/AndroidClient/client/src/main/java/net/servicestack/client/sse/ServerEventsClient.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,10 @@ public Map<String, ServerEventCallback> getNamedReceivers() {
172172
return namedReceivers;
173173
}
174174

175+
public ServerEventsClient registerReceiver(Class<?> receiverClass) {
176+
return registerNamedReceiver("cmd", receiverClass);
177+
}
178+
175179
public ServerEventsClient registerNamedReceiver(String name, Class<?> namedReceiverClass) {
176180

177181
if (!IReceiver.class.isAssignableFrom(namedReceiverClass))
@@ -204,7 +208,7 @@ public void execute(ServerEventsClient client, ServerEventMessage msg) {
204208
Class requestType = args[0].getType();
205209

206210
if (target.equals(requestType.getSimpleName())) {
207-
Object request = msg.getJson() != null
211+
Object request = !Utils.isNullOrEmpty(msg.getJson())
208212
? JsonUtils.fromJson(msg.getJson(), requestType)
209213
: requestType.newInstance();
210214
mi.invoke(receiver, request);
@@ -216,7 +220,7 @@ public void execute(ServerEventsClient client, ServerEventMessage msg) {
216220
actionName = actionName.substring(3); //= "set".length()
217221

218222
if (target.equalsIgnoreCase(actionName)) {
219-
Object request = msg.getJson() != null
223+
Object request = !Utils.isNullOrEmpty(msg.getJson())
220224
? JsonUtils.fromJson(msg.getJson(), requestType)
221225
: requestType.newInstance();
222226
mi.invoke(receiver, request);

src/AndroidClient/client/src/test/java/net/servicestack/client/ServerEventClientTests.java

Lines changed: 142 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public void test_Does_fire_all_callbacks() throws Exception {
125125
.setOnException(errors::add)
126126
.start())
127127
{
128-
while (connectMsgs.size() == 0 || commands.size() == 0) {
128+
while (connectMsgs.size() < 1 || commands.size() < 1) {
129129
Thread.sleep(100);
130130
}
131131

@@ -145,7 +145,7 @@ public void test_Does_fire_all_callbacks() throws Exception {
145145
.setOnConnect(connectMsgs::add)
146146
.start())
147147
{
148-
while (connectMsgs.size() == 0 || commands.size() == 0) {
148+
while (connectMsgs.size() < 1 || commands.size() < 1) {
149149
Thread.sleep(100);
150150
}
151151

@@ -180,6 +180,39 @@ private void postChat(ServerEventsClient client, String message, String channel)
180180
.setSelector("cmd.chat"));
181181
}
182182

183+
private void postRaw(ServerEventsClient client, String selector, String message) {
184+
postRaw(client, selector, message, null);
185+
}
186+
187+
private void postRaw(ServerEventsClient client, String selector, String message, String channel) {
188+
client.getServiceClient().post(new PostRawToChannel()
189+
.setFrom(client.getSubscriptionId())
190+
.setMessage(message)
191+
.setChannel(channel != null ? channel : ServerEventsClient.UnknownChannel)
192+
.setSelector(selector));
193+
}
194+
195+
private void postObject(ServerEventsClient client, CustomType dto){
196+
postObject(client, dto, null, null);
197+
}
198+
199+
private void postObject(ServerEventsClient client, CustomType dto, String selector){
200+
postObject(client, dto, selector, null);
201+
}
202+
203+
private void postObject(ServerEventsClient client, CustomType dto, String selector, String channel){
204+
client.getServiceClient().post(new PostObjectToChannel()
205+
.setCustomType(dto)
206+
.setChannel(channel != null ? channel : ServerEventsClient.UnknownChannel)
207+
.setSelector(selector));
208+
}
209+
210+
private void postObject(ServerEventsClient client, SetterType dto){
211+
client.getServiceClient().post(new PostObjectToChannel()
212+
.setSetterType(dto)
213+
.setChannel(ServerEventsClient.UnknownChannel));
214+
}
215+
183216
public void test_Does_receive_messages() throws Exception {
184217

185218
List<ServerEventConnect> connectMsgs = new ArrayList<>();
@@ -199,7 +232,7 @@ public void test_Does_receive_messages() throws Exception {
199232
{
200233
client1.start();
201234

202-
while (connectMsgs.size() == 0 || commands.size() == 0) {
235+
while (connectMsgs.size() < 1 || commands.size() < 1) {
203236
Thread.sleep(100);
204237
}
205238

@@ -212,7 +245,7 @@ public void test_Does_receive_messages() throws Exception {
212245
ServerEventConnect info1 = connectMsgs.get(0);
213246
postChat(client1, "hello from client1");
214247

215-
while (msgs1.size() == 0 || msgs2.size() == 0) {
248+
while (msgs1.size() < 1 || msgs2.size() < 1) {
216249
Thread.sleep(100);
217250
}
218251

@@ -290,13 +323,13 @@ public void test_Does_reconnect_on_lost_connection() throws Exception {
290323
.setOnMessage(msgs1::add)
291324
.start()) {
292325

293-
while (connectMsgs.size() == 0){
326+
while (connectMsgs.size() < 1){
294327
Thread.sleep(100);
295328
}
296329

297330
postChat(client1, "msg1 from client1");
298331

299-
while (msgs1.size() == 0){
332+
while (msgs1.size() < 1){
300333
Thread.sleep(100);
301334
}
302335

@@ -357,18 +390,6 @@ public void test_Does_send_message_to_Handler() throws Exception {
357390
}
358391
}
359392

360-
361-
private void postObject(ServerEventsClient client, CustomType dto, String selector){
362-
postObject(client, dto, selector, null);
363-
}
364-
365-
private void postObject(ServerEventsClient client, CustomType dto, String selector, String channel){
366-
client.getServiceClient().post(new PostObjectToChannel()
367-
.setCustomType(dto)
368-
.setChannel(channel != null ? channel : ServerEventsClient.UnknownChannel)
369-
.setSelector(selector));
370-
}
371-
372393
public void test_Does_send_message_to_named_receiver() throws Exception {
373394
List<ServerEventMessage> msgs1 = new ArrayList<>();
374395

@@ -432,4 +453,107 @@ public void test_Does_send_message_to_named_receiver() throws Exception {
432453
assertEquals("Qux", qux.getName());
433454
}
434455
}
456+
457+
public void test_Does_send_message_to_global_receiver() throws Exception {
458+
List<ServerEventMessage> msgs1 = new ArrayList<>();
459+
460+
try(ServerEventsClient client1 = new ServerEventsClient("http://chat.servicestack.net")
461+
.registerReceiver(TestGlobalReceiver.class)
462+
.setOnMessage(msgs1::add)
463+
.start()
464+
.waitTillConnected()) {
465+
466+
postObject(client1, new CustomType()
467+
.setId(1)
468+
.setName("Foo"));
469+
470+
while (msgs1.size() < 1){
471+
Thread.sleep(100);
472+
}
473+
474+
CustomType foo = TestGlobalReceiver.FooMethodReceived;
475+
assertNotNull(foo);
476+
assertEquals(1, foo.getId().intValue());
477+
assertEquals("Foo", foo.getName());
478+
}
479+
}
480+
481+
public void test_Does_set_properties_on_global_receiver() throws Exception {
482+
List<ServerEventMessage> msgs1 = new ArrayList<>();
483+
484+
try(ServerEventsClient client1 = new ServerEventsClient("http://chat.servicestack.net")
485+
.registerReceiver(TestGlobalReceiver.class)
486+
.setOnMessage(msgs1::add)
487+
.start()
488+
.waitTillConnected()) {
489+
490+
postObject(client1, new SetterType()
491+
.setId(1)
492+
.setName("Foo"));
493+
494+
SetterType foo = TestGlobalReceiver.AnyNamedSetterReceived;
495+
assertNotNull(foo);
496+
assertEquals(1, foo.getId().intValue());
497+
assertEquals("Foo", foo.getName());
498+
}
499+
}
500+
501+
public void test_Does_send_raw_string_messages() throws Exception {
502+
List<ServerEventMessage> msgs1 = new ArrayList<>();
503+
504+
try(ServerEventsClient client1 = new ServerEventsClient("http://chat.servicestack.net")
505+
.registerReceiver(TestJavaScriptReceiver.class)
506+
.registerNamedReceiver("css", TestJavaScriptReceiver.class)
507+
.setOnMessage(msgs1::add)
508+
.start()
509+
.waitTillConnected()) {
510+
511+
postChat(client1, "chat msg");
512+
513+
while (msgs1.size() < 1) {
514+
Thread.sleep(100);
515+
}
516+
517+
ChatMessage chatMsg = TestJavaScriptReceiver.ChatReceived;
518+
assertNotNull(chatMsg);
519+
assertEquals("chat msg", chatMsg.getMessage());
520+
521+
postRaw(client1, "cmd.announce", "This is your captain speaking...");
522+
523+
while (msgs1.size() < 2) {
524+
Thread.sleep(100);
525+
}
526+
527+
String announce = TestJavaScriptReceiver.AnnounceReceived;
528+
assertEquals("This is your captain speaking...", announce);
529+
530+
postRaw(client1, "cmd.toggle$#channels", null);
531+
532+
while (msgs1.size() < 3) {
533+
Thread.sleep(100);
534+
}
535+
536+
String toggle = TestJavaScriptReceiver.ToggleReceived;
537+
assertEquals("", toggle);
538+
ServerEventMessage toggleRequest = TestJavaScriptReceiver.ToggleRequestReceived;
539+
assertEquals("cmd.toggle$#channels", toggleRequest.getSelector());
540+
assertEquals("cmd", toggleRequest.getOp());
541+
assertEquals("toggle", toggleRequest.getTarget());
542+
assertEquals("#channels", toggleRequest.getCssSelector());
543+
544+
postRaw(client1, "css.background-image$#top", "url(http://bit.ly/1yIJOBH)");
545+
546+
while (msgs1.size() < 4) {
547+
Thread.sleep(100);
548+
}
549+
550+
String bgImage = TestJavaScriptReceiver.BackgroundImageReceived;
551+
assertEquals("url(http://bit.ly/1yIJOBH)", bgImage);
552+
ServerEventMessage bgImageRequest = TestJavaScriptReceiver.BackgroundImageRequestReceived;
553+
assertEquals("css.background-image$#top", bgImageRequest.getSelector());
554+
assertEquals("css", bgImageRequest.getOp());
555+
assertEquals("background-image", bgImageRequest.getTarget());
556+
assertEquals("#top", bgImageRequest.getCssSelector());
557+
}
558+
}
435559
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package net.servicestack.client;
2+
3+
import net.servicestack.client.sse.ServerEventMessage;
4+
import net.servicestack.client.sse.ServerEventReceiver;
5+
6+
import static chat.chatdtos.*;
7+
8+
/**
9+
* Created by mythz on 2/12/2017.
10+
*/
11+
12+
public class TestGlobalReceiver extends ServerEventReceiver {
13+
public static CustomType FooMethodReceived;
14+
public static CustomType NoSuchMethodReceived;
15+
public static String NoSuchMethodSelector;
16+
public static SetterType AnyNamedSetterReceived;
17+
18+
public void setAnyNamedSetter(SetterType value) {
19+
AnyNamedSetterReceived = value;
20+
}
21+
22+
public void anyNamedMethod(CustomType request)
23+
{
24+
FooMethodReceived = request;
25+
}
26+
27+
@Override
28+
public void noSuchMethod(String selector, Object message)
29+
{
30+
ServerEventMessage msg = (ServerEventMessage)message;
31+
NoSuchMethodReceived = JsonUtils.fromJson(msg.getJson(), CustomType.class);
32+
NoSuchMethodSelector = selector;
33+
}
34+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package net.servicestack.client;
2+
3+
import net.servicestack.client.sse.ServerEventMessage;
4+
import net.servicestack.client.sse.ServerEventReceiver;
5+
6+
import chat.chatdtos;
7+
8+
import static chat.chatdtos.*;
9+
10+
/**
11+
* Created by mythz on 2/12/2017.
12+
*/
13+
14+
public class TestJavaScriptReceiver extends ServerEventReceiver {
15+
public static ChatMessage ChatReceived;
16+
public static String AnnounceReceived;
17+
public String AnnounceInstance;
18+
public static String ToggleReceived;
19+
public static ServerEventMessage ToggleRequestReceived;
20+
public static String BackgroundImageReceived;
21+
public static ServerEventMessage BackgroundImageRequestReceived;
22+
23+
public void chat(ChatMessage message)
24+
{
25+
ChatReceived = message;
26+
}
27+
28+
public void announce(String message)
29+
{
30+
AnnounceReceived = message;
31+
AnnounceInstance = message;
32+
}
33+
34+
public void toggle(String message)
35+
{
36+
ToggleReceived = message;
37+
ToggleRequestReceived = super.getRequest();
38+
}
39+
40+
public void backgroundImage(String cssRule)
41+
{
42+
BackgroundImageReceived = cssRule;
43+
BackgroundImageRequestReceived = super.getRequest();
44+
}
45+
}

0 commit comments

Comments
 (0)