diff --git a/app/src/main/java/com/nextcloud/talk/utils/TextMatchers.java b/app/src/main/java/com/nextcloud/talk/utils/TextMatchers.java index 7c9126e43..237a7b12a 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/TextMatchers.java +++ b/app/src/main/java/com/nextcloud/talk/utils/TextMatchers.java @@ -22,12 +22,13 @@ package com.nextcloud.talk.utils; -import android.util.Patterns; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.nextcloud.talk.models.json.chat.ChatMessage; import com.vanniktech.emoji.EmojiInformation; import com.vanniktech.emoji.EmojiUtils; + +import androidx.core.util.PatternsCompat; import eu.medsea.mimeutil.MimeUtil; import eu.medsea.mimeutil.detector.ExtensionMimeDetector; import eu.medsea.mimeutil.detector.MagicMimeMimeDetector; @@ -44,7 +45,7 @@ public final class TextMatchers { public static ChatMessage.MessageType getMessageTypeFromString(@NonNull final String text) { List links = new ArrayList<>(); - Matcher m = Patterns.WEB_URL.matcher(text); + Matcher m = PatternsCompat.WEB_URL.matcher(text); while (m.find()) { String url = m.group(); links.add(url); diff --git a/app/src/test/java/com/nextcloud/talk/ExampleUnitTest.java b/app/src/test/java/com/nextcloud/talk/ExampleUnitTest.java deleted file mode 100644 index 0c6c9badd..000000000 --- a/app/src/test/java/com/nextcloud/talk/ExampleUnitTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.nextcloud.talk; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * Example local unit test, which will execute on the development machine (host). - * - * @see Testing documentation - */ -public class ExampleUnitTest { - @Test - public void additionIsCorrect() throws Exception { - assertEquals(4, 2 + 2); - } -} - diff --git a/app/src/test/java/com/nextcloud/talk/utils/TextMatchersTest.java b/app/src/test/java/com/nextcloud/talk/utils/TextMatchersTest.java new file mode 100644 index 000000000..38de718b2 --- /dev/null +++ b/app/src/test/java/com/nextcloud/talk/utils/TextMatchersTest.java @@ -0,0 +1,89 @@ +package com.nextcloud.talk.utils; + +import com.nextcloud.talk.models.json.chat.ChatMessage; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class TextMatchersTest { + + @Test + public void getMessageTypeFromString_regularTextGiven_regularTextMessageTypeReturned() { + String simpleMessageText = "Hello world! Have a cookie!"; + String messageContainingLink = "Hello https://nextcloud.com! Have a good day"; + + assertEquals(ChatMessage.MessageType.REGULAR_TEXT_MESSAGE, + TextMatchers.getMessageTypeFromString(simpleMessageText)); + assertEquals(ChatMessage.MessageType.REGULAR_TEXT_MESSAGE, + TextMatchers.getMessageTypeFromString(messageContainingLink)); + } + + @Test + public void getMessageTypeFromString_singleUrlTextGiven_singleLinkMessageTypeReturned() { + String simpleUrlText = "https://nextcloud.com/"; + String complexUrlText = "https://docs.nextcloud.com/server/15/admin_manual/#target-audience"; + + assertEquals(ChatMessage.MessageType.SINGLE_LINK_MESSAGE, + TextMatchers.getMessageTypeFromString(simpleUrlText)); + assertEquals(ChatMessage.MessageType.SINGLE_LINK_MESSAGE, + TextMatchers.getMessageTypeFromString(complexUrlText)); + } + + @Test + public void getMessageTypeFromString_imageLinkGiven_singleLinkImageMessageReturned() { + String simpleImageText = "https://nextcloud.com/image.jpg"; + String complexImageUrlText = "https://nextcloud.com/wp-content/themes/next/assets/img/features/mobileDesktop.png?x22777"; + + assertEquals(ChatMessage.MessageType.SINGLE_LINK_IMAGE_MESSAGE, + TextMatchers.getMessageTypeFromString(simpleImageText)); + assertEquals(ChatMessage.MessageType.SINGLE_LINK_IMAGE_MESSAGE, + TextMatchers.getMessageTypeFromString(complexImageUrlText)); + } + + @Test + public void getMessageTypeFromString_gifLinkGiven_gifMessageTypeReturned() { + String gifImageText = "https://nextcloud.com/funny.gif"; + + assertEquals(ChatMessage.MessageType.SINGLE_LINK_GIF_MESSAGE, + TextMatchers.getMessageTypeFromString(gifImageText)); + } + + @Test + public void getMessageTypeFromString_audioLinkGiven_audioMessageTypeReturned() { + String wavLink = "https://nextcloud.com/message.wav"; + String mp3Link = "https://nextcloud.com/message.mp3"; + + assertEquals(ChatMessage.MessageType.SINGLE_LINK_AUDIO_MESSAGE, + TextMatchers.getMessageTypeFromString(wavLink)); + assertEquals(ChatMessage.MessageType.SINGLE_LINK_AUDIO_MESSAGE, + TextMatchers.getMessageTypeFromString(mp3Link)); + } + + @Test + public void getMessageTypeFromString_videoLinkGiven_videoMessageTypeReturned() { + String mp4Link = "https://nextcloud.com/message.mp4"; + String flvLink = "https://nextcloud.com/message.flv"; + + assertEquals(ChatMessage.MessageType.SINGLE_LINK_VIDEO_MESSAGE, + TextMatchers.getMessageTypeFromString(mp4Link)); + assertEquals(ChatMessage.MessageType.SINGLE_LINK_VIDEO_MESSAGE, + TextMatchers.getMessageTypeFromString(flvLink)); + } + + @Test + public void getMessageTypeFromString_giphyLinkGiven_giphyMessageTypeReturned() { + String giphyLink = "https://media.giphy.com/media/11fucLQCTOdvBS/giphy.gif"; + + assertEquals(ChatMessage.MessageType.SINGLE_LINK_GIPHY_MESSAGE, + TextMatchers.getMessageTypeFromString(giphyLink)); + } + + @Test + public void getMessageTypeFromString_tenorLinkGiven_tenorMessageTypeReturned() { + String tenorLink = "https://media.tenor.com/images/d98e76e3930cf171cc39e301c9e974af/tenor.gif"; + + assertEquals(ChatMessage.MessageType.SINGLE_LINK_TENOR_MESSAGE, + TextMatchers.getMessageTypeFromString(tenorLink)); + } +}