diff options
Diffstat (limited to 'android')
3 files changed, 49 insertions, 3 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepository.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepository.kt index 3e8150bf97..2a4b639725 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepository.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepository.kt @@ -2,9 +2,12 @@ package net.mullvad.mullvadvpn.repository import android.content.SharedPreferences import net.mullvad.mullvadvpn.util.IChangelogDataProvider +import net.mullvad.mullvadvpn.util.trimAll private const val MISSING_VERSION_CODE = -1 private const val NEWLINE_CHAR = '\n' +private const val SPACE_STRING = " " +private const val BULLET_POINT_CHAR = '-' private const val LAST_SHOWED_CHANGELOG_VERSION_CODE = "last_showed_changelog_version_code" class ChangelogRepository( @@ -18,7 +21,10 @@ class ChangelogRepository( fun setVersionCodeOfMostRecentChangelogShowed(versionCode: Int) = preferences.edit().putInt(LAST_SHOWED_CHANGELOG_VERSION_CODE, versionCode).apply() - fun getLastVersionChanges(): List<String> { - return dataProvider.getChangelog().split(NEWLINE_CHAR).filter { it.isNotEmpty() } - } + fun getLastVersionChanges(): List<String> = + dataProvider + .getChangelog() + .split(BULLET_POINT_CHAR) + .map { it.split(NEWLINE_CHAR).trimAll().joinToString(SPACE_STRING).trim() } + .filter { it.isNotEmpty() } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt index f0cf46978b..adc64ec41e 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt @@ -12,3 +12,5 @@ fun String.appendHideNavOnPlayBuild(isPlayBuild: Boolean): String = fun String.removeHtmlTags(): String = Html.fromHtml(this, HtmlCompat.FROM_HTML_MODE_LEGACY).toString() + +fun List<String>.trimAll() = map { it.trim() } diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepositoryTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepositoryTest.kt new file mode 100644 index 0000000000..4df5c101a7 --- /dev/null +++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepositoryTest.kt @@ -0,0 +1,38 @@ +package net.mullvad.mullvadvpn.repository + +import android.content.SharedPreferences +import io.mockk.every +import io.mockk.mockk +import net.mullvad.mullvadvpn.lib.common.test.assertLists +import net.mullvad.mullvadvpn.util.IChangelogDataProvider +import org.junit.jupiter.api.Test + +class ChangelogRepositoryTest { + + private val mockedPreferences: SharedPreferences = mockk() + private val mockDataProvider: IChangelogDataProvider = mockk() + + private val changelogRepository = + ChangelogRepository(preferences = mockedPreferences, dataProvider = mockDataProvider) + + @Test + fun `when given a changelog text should return a list of correctly formatted strings`() { + // Arrange + val testChangelog = + "- Added very nice new feature with a very long descriptive message\n" + + " about how it works...\n" + + "- Fixed super bad leak." + val expectedResult = + listOf( + "Added very nice new feature with a very long descriptive message about how it works...", + "Fixed super bad leak." + ) + every { mockDataProvider.getChangelog() } returns testChangelog + + // Act + val result = changelogRepository.getLastVersionChanges() + + // Assert + assertLists(expectedResult, result) + } +} |
