package org.jboss.aerogear.unifiedpush.message.sender;
import ar.com.fernandospr.wns.model.WnsTile;
import ar.com.fernandospr.wns.model.WnsToast;
import org.jboss.aerogear.unifiedpush.message.Message;
import org.jboss.aerogear.unifiedpush.message.windows.TileType;
import org.jboss.aerogear.unifiedpush.message.windows.ToastType;
import org.jboss.aerogear.unifiedpush.message.windows.Type;
import org.jboss.aerogear.unifiedpush.message.windows.Windows;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
/**
*
*/
public class WNSPushNotificationSenderTest {
private static final String QUERY = "?ke2=value2&key=value";
private WNSPushNotificationSender sender = new WNSPushNotificationSender();
@Before
public void setUp() {
sender.setPushMessageInformationId("123");
}
@Test
public void shouldWorkWithEmptyNullUserData() {
//given
Message message = getUnifiedPushMessage();
message.setUserData(new HashMap<>());
//when
WnsToast toastMessage = sender.createSimpleToastMessage(message);
//then
assertThat(toastMessage.launch).isEqualTo("/Root.xaml?aerogear-push-id=123");
}
@Test
public void shouldAddAlertAutomatically() {
//given
Message message = getUnifiedPushMessage();
message.setAlert("My message");
//when
WnsToast toastMessage = sender.createSimpleToastMessage(message);
//then
assertThat(toastMessage.launch).isEqualTo("/Root.xaml" + QUERY + "&message=My+message&aerogear-push-id=123");
}
@Test
public void shouldEncodeUserDataInLaunchParam() {
//given
Message pushMessage = getUnifiedPushMessage();
//when
final WnsToast toast = sender.createSimpleToastMessage(pushMessage);
//then
assertThat(toast.launch).isEqualTo("/Root.xaml" + QUERY + "&aerogear-push-id=123");
}
@Test
public void shouldEncodeUserDataInCordovaPage() {
//given
Message pushMessage = getUnifiedPushMessage();
pushMessage.getWindows().setPage("cordova");
//when
final WnsToast toast = sender.createSimpleToastMessage(pushMessage);
//then
assertThat(toast.launch).isEqualTo(WNSPushNotificationSender.CORDOVA_PAGE + QUERY + "&aerogear-push-id=123");
}
@Test
public void shouldCreateRightToastTemplate() {
//given
Message message = new Message();
Windows windows = message.getWindows();
windows.setType(Type.toast);
windows.setToastType(ToastType.ToastImageAndText04);
windows.setTextFields(Arrays.asList("item1", "item2"));
message.setAlert("title");
windows.setImages(Collections.singletonList("image1.jpg"));
//when
WnsToast toastMessage = sender.createToastMessage(message);
//then
assertThat(toastMessage).isNotNull();
assertThat(toastMessage.visual.binding.texts.get(0).value).isEqualTo("title");
assertThat(toastMessage.visual.binding.images.get(0).src).contains("image1.jpg");
}
@Test
public void shouldCreateRightTileTemplate() {
//given
Message message = new Message();
Windows windows = message.getWindows();
windows.setType(Type.tile);
windows.setTileType(TileType.TileWideBlockAndText01);
windows.setTextFields(Arrays.asList("item1", "item2", "item3", "item4", "item5"));
message.setAlert("title");
//when
WnsTile tileMessage = sender.createTileMessage(message);
//then
assertThat(tileMessage).isNotNull();
assertThat(tileMessage.visual.binding.texts.get(0).value).isEqualTo("title");
}
private Message getUnifiedPushMessage() {
Message message = new Message();
Map<String, Object> data = new HashMap<>();
data.put("key", "value");
data.put("ke2", "value2");
message.getWindows().setPage("/Root.xaml");
message.setUserData(data);
return message;
}
}