diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index 48965b7b1..8329d1e46 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -2,8 +2,8 @@ diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java index c887362fa..ff56730f1 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java @@ -213,4 +213,9 @@ public interface ApiService { @POST("/iap/android/verify") Call validatePurchase(@Body PurchaseValidationRequest request); + + //DEBUG: These calls only work on a local development server + + @POST("debug/add-ten-gems") + Observable debugAddTenGems(); } diff --git a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/utils/ChatMessageDeserializer.java b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/utils/ChatMessageDeserializer.java index ae7fffa99..51de6b4f2 100644 --- a/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/utils/ChatMessageDeserializer.java +++ b/Habitica/src/main/java/com/magicmicky/habitrpgwrapper/lib/utils/ChatMessageDeserializer.java @@ -22,7 +22,7 @@ public class ChatMessageDeserializer implements JsonDeserializer { if (obj.has("id")) { message.id = obj.get("id").getAsString(); } - if (obj.has("text") && !obj.get("leaderMessage").isJsonNull()) { + if (obj.has("text") && !obj.get("text").isJsonNull()) { message.text = obj.get("text").getAsString(); } if (obj.has("timestamp")) { diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java b/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java index f5d2f27dc..b988738de 100644 --- a/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/api/BaseAPITests.java @@ -9,6 +9,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse; import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -54,4 +55,8 @@ public class BaseAPITests { hostConfig.setUser(response.getId()); hostConfig.setApi(response.getApiToken() != null ? response.getApiToken() : response.getToken()); } + + @After + public void tearDown() { + } } diff --git a/Habitica/src/test/java/com/habitrpg/android/habitica/api/SocialAPITests.java b/Habitica/src/test/java/com/habitrpg/android/habitica/api/SocialAPITests.java new file mode 100644 index 000000000..8e7dfd910 --- /dev/null +++ b/Habitica/src/test/java/com/habitrpg/android/habitica/api/SocialAPITests.java @@ -0,0 +1,105 @@ +package com.habitrpg.android.habitica.api; + +import com.habitrpg.android.habitica.BuildConfig; +import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage; +import com.magicmicky.habitrpgwrapper.lib.models.Group; +import com.magicmicky.habitrpgwrapper.lib.models.PostChatMessageResult; +import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse; + +import org.junit.After; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricGradleTestRunner; +import org.robolectric.annotation.Config; + +import android.os.Build; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import rx.observers.TestSubscriber; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertTrue; + +@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP) +@RunWith(RobolectricGradleTestRunner.class) +public class SocialAPITests extends BaseAPITests { + + List messagesIDs; + String groupID; + + @Override + public void setUp() { + super.setUp(); + groupID = null; + messagesIDs = new ArrayList<>(); + } + + public void postMessage(String groupID, String messageSuffix) { + HashMap messageObject = new HashMap<>(); + messageObject.put("message", "Foo Bar"+messageSuffix); + TestSubscriber testSubscriber = new TestSubscriber<>(); + apiHelper.apiService.postGroupChat(groupID, messageObject).subscribe(testSubscriber); + testSubscriber.assertNoErrors(); + testSubscriber.assertCompleted(); + PostChatMessageResult result = testSubscriber.getOnNextEvents().get(0); + messagesIDs.add(result.message.id); + } + + @Test + public void shouldPostMessageToTavern() { + groupID = "habitrpg"; + HashMap messageObject = new HashMap<>(); + messageObject.put("message", "Foo Bar"); + TestSubscriber testSubscriber = new TestSubscriber<>(); + apiHelper.apiService.postGroupChat(groupID, messageObject).subscribe(testSubscriber); + testSubscriber.assertNoErrors(); + testSubscriber.assertCompleted(); + PostChatMessageResult result = testSubscriber.getOnNextEvents().get(0); + messagesIDs.add(result.message.id); + assertEquals("Foo Bar", result.message.text); + } + + @Test + public void shouldLoadTavernWithMessages() { + groupID = "habitrpg"; + postMessage(groupID, "1"); + + TestSubscriber testSubscriber = new TestSubscriber<>(); + apiHelper.apiService.getGroup(groupID).subscribe(testSubscriber); + testSubscriber.assertNoErrors(); + testSubscriber.assertCompleted(); + testSubscriber.assertValueCount(1); + Group group = testSubscriber.getOnNextEvents().get(0); + assertEquals(1, group.chat.size()); + } + + @Test + public void shouldLoadTavernChat() { + groupID = "habitrpg"; + postMessage(groupID, "1"); + postMessage(groupID, "2"); + + TestSubscriber> testSubscriber = new TestSubscriber<>(); + apiHelper.apiService.listGroupChat(groupID).subscribe(testSubscriber); + testSubscriber.assertNoErrors(); + testSubscriber.assertCompleted(); + testSubscriber.assertValueCount(1); + List messages = testSubscriber.getOnNextEvents().get(0); + assertEquals(2, messages.size()); + } + + @After + public void tearDown() { + TestSubscriber testSubscriber = new TestSubscriber<>(); + for (String messageID : this.messagesIDs) { + apiHelper.apiService.deleteMessage("habitrpg", messageID) + .subscribe(testSubscriber); + testSubscriber.assertNoErrors(); + testSubscriber.assertCompleted(); + } + super.tearDown(); + } +}