mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-26 20:55:10 +00:00
Implement the majority of the Donor UI.
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
package org.thoughtcrime.securesms.components.settings.app.subscription.boost
|
||||
|
||||
import android.app.Application
|
||||
import android.text.SpannableStringBuilder
|
||||
import junit.framework.Assert.assertEquals
|
||||
import junit.framework.Assert.assertNotNull
|
||||
import junit.framework.Assert.assertNull
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.Config
|
||||
import java.util.Currency
|
||||
import java.util.Locale
|
||||
|
||||
@Suppress("ClassName")
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(manifest = Config.NONE, application = Application::class)
|
||||
class BoostTest__MoneyFilter {
|
||||
|
||||
private val usd = Currency.getInstance("USD")
|
||||
private val yen = Currency.getInstance("JPY")
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
Locale.setDefault(Locale.US)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given USD, when I enter 5, then I expect $ 5`() {
|
||||
val testSubject = Boost.MoneyFilter(usd)
|
||||
val editable = SpannableStringBuilder("5")
|
||||
|
||||
testSubject.afterTextChanged(editable)
|
||||
|
||||
assertEquals("$ 5", editable.toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given USD, when I enter 5dot00, then I expect successful filter`() {
|
||||
val testSubject = Boost.MoneyFilter(usd)
|
||||
val editable = SpannableStringBuilder("5.00")
|
||||
val dest = SpannableStringBuilder()
|
||||
|
||||
testSubject.afterTextChanged(editable)
|
||||
val filterResult = testSubject.filter(editable, 0, editable.length, dest, 0, 0)
|
||||
|
||||
assertNull(filterResult)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given USD, when I enter 5dot00, then I expect 5dot00 from text change`() {
|
||||
var result = ""
|
||||
val testSubject = Boost.MoneyFilter(usd) {
|
||||
result = it
|
||||
}
|
||||
|
||||
val editable = SpannableStringBuilder("5.00")
|
||||
testSubject.afterTextChanged(editable)
|
||||
|
||||
assertEquals("5.00", result)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given USD, when I enter 5dot000, then I expect unsuccessful filter`() {
|
||||
val testSubject = Boost.MoneyFilter(yen)
|
||||
val editable = SpannableStringBuilder("5.000")
|
||||
val dest = SpannableStringBuilder()
|
||||
|
||||
testSubject.afterTextChanged(editable)
|
||||
val filterResult = testSubject.filter(editable, 0, editable.length, dest, 0, 0)
|
||||
|
||||
assertNotNull(filterResult)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given USD, when I enter 5dot, then I expect successful filter`() {
|
||||
val testSubject = Boost.MoneyFilter(usd)
|
||||
val editable = SpannableStringBuilder("5.")
|
||||
val dest = SpannableStringBuilder()
|
||||
|
||||
testSubject.afterTextChanged(editable)
|
||||
val filterResult = testSubject.filter(editable, 0, editable.length, dest, 0, 0)
|
||||
|
||||
assertNull(filterResult)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given JPY, when I enter 5, then I expect yen 5`() {
|
||||
val testSubject = Boost.MoneyFilter(yen)
|
||||
val editable = SpannableStringBuilder("5")
|
||||
|
||||
testSubject.afterTextChanged(editable)
|
||||
|
||||
assertEquals("¥ 5", editable.toString())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given JPY, when I enter 5, then I expect 5 from text change`() {
|
||||
var result = ""
|
||||
val testSubject = Boost.MoneyFilter(yen) {
|
||||
result = it
|
||||
}
|
||||
|
||||
val editable = SpannableStringBuilder("5")
|
||||
|
||||
testSubject.afterTextChanged(editable)
|
||||
|
||||
assertEquals("5", result)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given JPY, when I enter 5, then I expect successful filter`() {
|
||||
val testSubject = Boost.MoneyFilter(yen)
|
||||
val editable = SpannableStringBuilder("5")
|
||||
val dest = SpannableStringBuilder()
|
||||
|
||||
testSubject.afterTextChanged(editable)
|
||||
val filterResult = testSubject.filter(editable, 0, editable.length, dest, 0, 0)
|
||||
|
||||
assertNull(filterResult)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given JPY, when I enter 5dot, then I expect unsuccessful filter`() {
|
||||
val testSubject = Boost.MoneyFilter(yen)
|
||||
val editable = SpannableStringBuilder("5.")
|
||||
val dest = SpannableStringBuilder()
|
||||
|
||||
testSubject.afterTextChanged(editable)
|
||||
val filterResult = testSubject.filter(editable, 0, editable.length, dest, 0, 0)
|
||||
|
||||
assertNotNull(filterResult)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package org.thoughtcrime.securesms.components.settings.app.subscription.currency
|
||||
|
||||
import junit.framework.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.junit.runners.JUnit4
|
||||
import java.util.Currency
|
||||
|
||||
@Suppress("ClassName")
|
||||
@RunWith(JUnit4::class)
|
||||
class SetCurrencyViewModel__CurrencyComparatorTest {
|
||||
|
||||
private val currencyComparator = SetCurrencyViewModel.CurrencyComparator(listOf("AUD", "EUR", "CAD"))
|
||||
|
||||
@Test
|
||||
fun givenAListOfCurrencies_whenISort_thenIExpectTheProperOrder() {
|
||||
// GIVEN
|
||||
val currencies = listOf("EUR", "AUD", "JPY", "USD", "CAD", "BWP", "BIF").map { Currency.getInstance(it) }
|
||||
val expected = listOf("USD", "AUD", "CAD", "EUR", "BWP", "BIF", "JPY").map { Currency.getInstance(it) }
|
||||
|
||||
// WHEN
|
||||
val sorted: List<Currency> = currencies.sortedWith(currencyComparator)
|
||||
|
||||
// THEN
|
||||
assertEquals(expected, sorted)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun givenUSDAndADefaultCurrency_whenISort_thenIExpectUSDFirst() {
|
||||
// GIVEN
|
||||
val currencies = listOf("EUR", "USD").map { Currency.getInstance(it) }
|
||||
val expected = listOf("USD", "EUR").map { Currency.getInstance(it) }
|
||||
|
||||
// WHEN
|
||||
val sorted: List<Currency> = currencies.sortedWith(currencyComparator)
|
||||
|
||||
// THEN
|
||||
assertEquals(expected, sorted)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun givenADefaultCurrencyAndANonDefaultCurrency_whenISort_thenIExpectUSDFirst() {
|
||||
// GIVEN
|
||||
val currencies = listOf("JPY", "EUR").map { Currency.getInstance(it) }
|
||||
val expected = listOf("EUR", "JPY").map { Currency.getInstance(it) }
|
||||
|
||||
// WHEN
|
||||
val sorted: List<Currency> = currencies.sortedWith(currencyComparator)
|
||||
|
||||
// THEN
|
||||
assertEquals(expected, sorted)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun givenTwoDefaultCurrencies_whenISort_thenIExpectOrderedByDisplayName() {
|
||||
// GIVEN
|
||||
val currencies = listOf("EUR", "AUD").map { Currency.getInstance(it) }
|
||||
val expected = listOf("AUD", "EUR").map { Currency.getInstance(it) }
|
||||
|
||||
// WHEN
|
||||
val sorted = currencies.sortedWith(currencyComparator)
|
||||
|
||||
// THEN
|
||||
assertEquals(expected, sorted)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun givenTwoNonDefaultCurrencies_whenISort_thenIExpectOrderedByDisplayName() {
|
||||
// GIVEN
|
||||
val currencies = listOf("XPF", "BIF").map { Currency.getInstance(it) }
|
||||
val expected = listOf("BIF", "XPF").map { Currency.getInstance(it) }
|
||||
|
||||
// WHEN
|
||||
val sorted = currencies.sortedWith(currencyComparator)
|
||||
|
||||
// THEN
|
||||
assertEquals(expected, sorted)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user