Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 20a5ab90 authored by Wolf-Martell Montwé's avatar Wolf-Martell Montwé Committed by GitHub
Browse files

Merge pull request #9155 from shamim-emon/fix-issue-9147

Add Tests for RecipientSelectView
parents 2e4604b4 700ee2e1
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ import app.k9mail.core.featureflag.InMemoryFeatureFlagProvider
import app.k9mail.feature.telemetry.telemetryModule
import app.k9mail.legacy.account.AccountDefaultsProvider
import app.k9mail.legacy.di.DI
import com.fsck.k9.contacts.ContactPictureLoader
import com.fsck.k9.preferences.StoragePersister
import net.thunderbird.core.android.preferences.InMemoryStoragePersister
import org.koin.dsl.module
@@ -40,4 +41,6 @@ val testModule = module {
            },
        )
    }

    single<ContactPictureLoader> { mock() }
}
+58 −0
Original line number Diff line number Diff line
package com.fsck.k9.view

import androidx.appcompat.app.AppCompatActivity
import assertk.assertThat
import assertk.assertions.isEqualTo
import com.fsck.k9.K9RobolectricTest
import com.fsck.k9.ui.R
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.ParameterizedRobolectricTestRunner
import org.robolectric.Robolectric

@RunWith(ParameterizedRobolectricTestRunner::class)
class RecipientSelectViewLayoutTest(
    private val input: String,
    private val expectedOutPut: Boolean,
) : K9RobolectricTest() {
    private lateinit var activity: AppCompatActivity
    private lateinit var view: RecipientSelectView

    @Before
    fun setUp() {
        activity = Robolectric.buildActivity(AppCompatActivity::class.java).get()
        activity.setTheme(R.style.Theme_Legacy_Test)
        view = RecipientSelectView(activity)
    }

    @Test
    fun `hasUncompletedText should return true for valid emails but false for invalid emails`() {
        view.setText(input)
        view.tryPerformCompletion()
        assertThat(view.hasUncompletedText()).isEqualTo(expectedOutPut)
    }

    companion object {
        @Suppress("ktlint:standard:max-line-length", "MaxLineLength")
        @JvmStatic
        @ParameterizedRobolectricTestRunner.Parameters(name = " Expected hasCompletedText()->{1} for Input-> {0} ")
        fun data(): Collection<Array<Any>> {
            return listOf(
                // Space check
                arrayOf("test1@gmail.com ", false), // space after email
                arrayOf(" test1@gmail.com", false), // space before email
                arrayOf(" test1@gmail.com ", false), // space before and after

                // Non-Email Characters/invalid format (Error Trigger)
                arrayOf("test1@gmail@com", true), // Double @
                arrayOf("test:1@gmail.com", true), // : symbol
                arrayOf("test1gmail.com", true), // no @

                // Spaces/comma/semicolon Within Pasted Text of Multiple Recipients
                arrayOf("test1@gmail.com test2@gmail.com", true), // no separator between recipients
                arrayOf("test1@gmail.com ;  test2@gmail.com,test3@gmail.com", false), // separators among recipients having/not having space
            )
        }
    }
}