Remove usage of Random in testFixtures to prevent flakiness

It has benefits:
- Scoping the function
- Can generates a range of different values
- Sometimes help finding unsupported value

But some drawbacks as well:
- flakiness
- not necessarily easy to reproduce (inputs might not be displayed from the test output) unless we control the Random `seed`
pull/452/head
Simon Marquis 3 years ago
parent f6b8259238
commit 601845d363

@ -18,11 +18,10 @@ package com.google.samples.apps.nowinandroid.core.domain
import com.google.samples.apps.nowinandroid.core.domain.TopicSortField.NAME import com.google.samples.apps.nowinandroid.core.domain.TopicSortField.NAME
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeTopic import com.google.samples.apps.nowinandroid.core.model.data.fakeTopic
import com.google.samples.apps.nowinandroid.core.testing.repository.TestTopicsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestTopicsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import kotlin.random.Random
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
@ -88,7 +87,7 @@ class GetFollowableTopicsStreamUseCaseTest {
} }
private val testTopics = listOf( private val testTopics = listOf(
Random.nextFakeTopic(id = "1", name = "Headlines"), fakeTopic(id = "1", name = "Headlines"),
Random.nextFakeTopic(id = "2", name = "Android Studio"), fakeTopic(id = "2", name = "Android Studio"),
Random.nextFakeTopic(id = "3", name = "Compose"), fakeTopic(id = "3", name = "Compose"),
) )

@ -17,13 +17,12 @@
package com.google.samples.apps.nowinandroid.core.domain package com.google.samples.apps.nowinandroid.core.domain
import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeAuthor import com.google.samples.apps.nowinandroid.core.model.data.fakeAuthor
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeNewsResource import com.google.samples.apps.nowinandroid.core.model.data.fakeNewsResource
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeTopic import com.google.samples.apps.nowinandroid.core.model.data.fakeTopic
import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import kotlin.random.Random
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
@ -124,23 +123,23 @@ class GetSaveableNewsResourcesStreamUseCaseTest {
} }
} }
private val sampleTopic1 = Random.nextFakeTopic(id = "1", name = "Headlines") private val sampleTopic1 = fakeTopic(id = "1", name = "Headlines")
private val sampleTopic2 = Random.nextFakeTopic(id = "2", name = "UI") private val sampleTopic2 = fakeTopic(id = "2", name = "UI")
private val sampleAuthor1 = Random.nextFakeAuthor(id = "1") private val sampleAuthor1 = fakeAuthor(id = "1")
private val sampleAuthor2 = Random.nextFakeAuthor(id = "2") private val sampleAuthor2 = fakeAuthor(id = "2")
private val sampleNewsResources = listOf( private val sampleNewsResources = listOf(
Random.nextFakeNewsResource( fakeNewsResource(
id = "1", id = "1",
authors = listOf(sampleAuthor1), authors = listOf(sampleAuthor1),
topics = listOf(sampleTopic1) topics = listOf(sampleTopic1)
), ),
Random.nextFakeNewsResource( fakeNewsResource(
id = "2", id = "2",
authors = listOf(sampleAuthor1), authors = listOf(sampleAuthor1),
topics = listOf(sampleTopic1, sampleTopic2) topics = listOf(sampleTopic1, sampleTopic2)
), ),
Random.nextFakeNewsResource( fakeNewsResource(
id = "3", id = "3",
authors = listOf(sampleAuthor2), authors = listOf(sampleAuthor2),
topics = listOf(sampleTopic2) topics = listOf(sampleTopic2)

@ -17,11 +17,10 @@
package com.google.samples.apps.nowinandroid.core.domain package com.google.samples.apps.nowinandroid.core.domain
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeAuthor import com.google.samples.apps.nowinandroid.core.model.data.fakeAuthor
import com.google.samples.apps.nowinandroid.core.testing.repository.TestAuthorsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestAuthorsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import kotlin.random.Random
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
@ -65,8 +64,8 @@ class GetSortedFollowableAuthorsStreamUseCaseTest {
} }
} }
private val sampleAuthor1 = Random.nextFakeAuthor(id = "1", name = "Mandy") private val sampleAuthor1 = fakeAuthor(id = "1", name = "Mandy")
private val sampleAuthor2 = Random.nextFakeAuthor(id = "2", name = "Andy") private val sampleAuthor2 = fakeAuthor(id = "2", name = "Andy")
private val sampleAuthor3 = Random.nextFakeAuthor(id = "3", name = "Sandy") private val sampleAuthor3 = fakeAuthor(id = "3", name = "Sandy")
private val sampleAuthors = listOf(sampleAuthor1, sampleAuthor2, sampleAuthor3) private val sampleAuthors = listOf(sampleAuthor1, sampleAuthor2, sampleAuthor3)

@ -16,10 +16,8 @@
package com.google.samples.apps.nowinandroid.core.model.data package com.google.samples.apps.nowinandroid.core.model.data
import kotlin.random.Random fun fakeAuthor(
id: String,
fun Random.nextFakeAuthor(
id: String = nextLong().toString(),
name: String = "Android Dev $id", name: String = "Android Dev $id",
imageUrl: String = "https://example.org/dev-android/$id.png", imageUrl: String = "https://example.org/dev-android/$id.png",
twitter: String = "@dev-android-$id", twitter: String = "@dev-android-$id",

@ -17,11 +17,10 @@
package com.google.samples.apps.nowinandroid.core.model.data package com.google.samples.apps.nowinandroid.core.model.data
import com.google.samples.apps.nowinandroid.core.model.data.NewsResourceType.Unknown import com.google.samples.apps.nowinandroid.core.model.data.NewsResourceType.Unknown
import kotlin.random.Random
import kotlinx.datetime.Instant import kotlinx.datetime.Instant
fun Random.nextFakeNewsResource( fun fakeNewsResource(
id: String = nextLong().toString(), id: String,
title: String = "News resource $id", title: String = "News resource $id",
content: String = "", content: String = "",
url: String = "https://example.org/news/$id", url: String = "https://example.org/news/$id",

@ -16,10 +16,8 @@
package com.google.samples.apps.nowinandroid.core.model.data package com.google.samples.apps.nowinandroid.core.model.data
import kotlin.random.Random fun fakeTopic(
id: String,
fun Random.nextFakeTopic(
id: String = nextLong().toString(),
name: String = "Topic $id", name: String = "Topic $id",
shortDescription: String = "At vero eos et accusamus.", shortDescription: String = "At vero eos et accusamus.",
longDescription: String = "At vero eos et accusamus et iusto odio dignissimos ducimus qui.", longDescription: String = "At vero eos et accusamus et iusto odio dignissimos ducimus qui.",

@ -22,9 +22,8 @@ import androidx.compose.ui.test.onNodeWithContentDescription
import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.onNodeWithText
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor
import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeAuthor import com.google.samples.apps.nowinandroid.core.model.data.fakeAuthor
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeNewsResource import com.google.samples.apps.nowinandroid.core.model.data.fakeNewsResource
import kotlin.random.Random
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
@ -142,11 +141,11 @@ class AuthorScreenTest {
} }
private val testAuthors = listOf( private val testAuthors = listOf(
FollowableAuthor(Random.nextFakeAuthor(id = "1"), isFollowed = true), FollowableAuthor(fakeAuthor(id = "1"), isFollowed = true),
FollowableAuthor(Random.nextFakeAuthor(id = "2"), isFollowed = false), FollowableAuthor(fakeAuthor(id = "2"), isFollowed = false),
FollowableAuthor(Random.nextFakeAuthor(id = "3"), isFollowed = false), FollowableAuthor(fakeAuthor(id = "3"), isFollowed = false),
) )
private val sampleNewsResources = listOf( private val sampleNewsResources = listOf(
Random.nextFakeNewsResource(id = "1", authors = listOf(testAuthors.first().author)), fakeNewsResource(id = "1", authors = listOf(testAuthors.first().author)),
) )

@ -19,15 +19,14 @@ package com.google.samples.apps.nowinandroid.feature.author
import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.SavedStateHandle
import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeAuthor import com.google.samples.apps.nowinandroid.core.model.data.fakeAuthor
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeNewsResource import com.google.samples.apps.nowinandroid.core.model.data.fakeNewsResource
import com.google.samples.apps.nowinandroid.core.testing.decoder.FakeStringDecoder import com.google.samples.apps.nowinandroid.core.testing.decoder.FakeStringDecoder
import com.google.samples.apps.nowinandroid.core.testing.repository.TestAuthorsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestAuthorsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import com.google.samples.apps.nowinandroid.feature.author.navigation.authorIdArg import com.google.samples.apps.nowinandroid.feature.author.navigation.authorIdArg
import kotlin.random.Random
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.test.assertIs import kotlin.test.assertIs
import kotlin.test.assertTrue import kotlin.test.assertTrue
@ -208,9 +207,9 @@ class AuthorViewModelTest {
} }
private val testInputAuthors = listOf( private val testInputAuthors = listOf(
FollowableAuthor(Random.nextFakeAuthor(id = "1"), isFollowed = true), FollowableAuthor(fakeAuthor(id = "1"), isFollowed = true),
FollowableAuthor(Random.nextFakeAuthor(id = "2"), isFollowed = false), FollowableAuthor(fakeAuthor(id = "2"), isFollowed = false),
FollowableAuthor(Random.nextFakeAuthor(id = "3"), isFollowed = false), FollowableAuthor(fakeAuthor(id = "3"), isFollowed = false),
) )
private val testOutputAuthors = listOf( private val testOutputAuthors = listOf(
@ -220,5 +219,5 @@ private val testOutputAuthors = listOf(
) )
private val sampleNewsResources = listOf( private val sampleNewsResources = listOf(
Random.nextFakeNewsResource(id = "1", authors = listOf(testInputAuthors[0].author)), fakeNewsResource(id = "1", authors = listOf(testInputAuthors[0].author)),
) )

@ -31,11 +31,10 @@ import androidx.compose.ui.test.performScrollToNode
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic
import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeAuthor import com.google.samples.apps.nowinandroid.core.model.data.fakeAuthor
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeTopic import com.google.samples.apps.nowinandroid.core.model.data.fakeTopic
import com.google.samples.apps.nowinandroid.core.model.data.previewNewsResources import com.google.samples.apps.nowinandroid.core.model.data.previewNewsResources
import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState
import kotlin.random.Random
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
@ -342,11 +341,11 @@ class ForYouScreenTest {
} }
} }
private val testAuthor = Random.nextFakeAuthor() private val testAuthor = fakeAuthor(id = "0")
private val testTopics = listOf( private val testTopics = listOf(
FollowableTopic(topic = Random.nextFakeTopic(id = "1", name = "Headlines"), isFollowed = false), FollowableTopic(topic = fakeTopic(id = "1", name = "Headlines"), isFollowed = false),
FollowableTopic(topic = Random.nextFakeTopic(id = "2", name = "UI"), isFollowed = false), FollowableTopic(topic = fakeTopic(id = "2", name = "UI"), isFollowed = false),
FollowableTopic(topic = Random.nextFakeTopic(id = "3", name = "Tools"), isFollowed = false), FollowableTopic(topic = fakeTopic(id = "3", name = "Tools"), isFollowed = false),
) )
private val testAuthors = listOf( private val testAuthors = listOf(
FollowableAuthor(author = testAuthor.copy(id = "1", name = "Android Dev"), isFollowed = false), FollowableAuthor(author = testAuthor.copy(id = "1", name = "Android Dev"), isFollowed = false),

@ -22,9 +22,9 @@ import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAutho
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic
import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeAuthor import com.google.samples.apps.nowinandroid.core.model.data.fakeAuthor
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeNewsResource import com.google.samples.apps.nowinandroid.core.model.data.fakeNewsResource
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeTopic import com.google.samples.apps.nowinandroid.core.model.data.fakeTopic
import com.google.samples.apps.nowinandroid.core.testing.repository.TestAuthorsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestAuthorsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestTopicsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestTopicsRepository
@ -33,7 +33,6 @@ import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import com.google.samples.apps.nowinandroid.core.testing.util.TestNetworkMonitor import com.google.samples.apps.nowinandroid.core.testing.util.TestNetworkMonitor
import com.google.samples.apps.nowinandroid.core.testing.util.TestSyncStatusMonitor import com.google.samples.apps.nowinandroid.core.testing.util.TestSyncStatusMonitor
import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState
import kotlin.random.Random
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -466,29 +465,29 @@ class ForYouViewModelTest {
} }
private val sampleAuthors = listOf( private val sampleAuthors = listOf(
Random.nextFakeAuthor(id = "1"), fakeAuthor(id = "1"),
Random.nextFakeAuthor(id = "2"), fakeAuthor(id = "2"),
Random.nextFakeAuthor(id = "3"), fakeAuthor(id = "3"),
) )
private val sampleTopics = listOf( private val sampleTopics = listOf(
Random.nextFakeTopic(id = "1", name = "Headlines"), fakeTopic(id = "1", name = "Headlines"),
Random.nextFakeTopic(id = "2", name = "UI"), fakeTopic(id = "2", name = "UI"),
Random.nextFakeTopic(id = "3", name = "Tools"), fakeTopic(id = "3", name = "Tools"),
) )
private val sampleNewsResources = listOf( private val sampleNewsResources = listOf(
Random.nextFakeNewsResource( fakeNewsResource(
id = "1", id = "1",
authors = listOf(sampleAuthors[0]), authors = listOf(sampleAuthors[0]),
topics = listOf(sampleTopics[0]) topics = listOf(sampleTopics[0])
), ),
Random.nextFakeNewsResource( fakeNewsResource(
id = "2", id = "2",
authors = listOf(sampleAuthors[1]), authors = listOf(sampleAuthors[1]),
topics = listOf(sampleTopics[1]) topics = listOf(sampleTopics[1])
), ),
Random.nextFakeNewsResource( fakeNewsResource(
id = "3", id = "3",
authors = listOf(sampleAuthors[1]), authors = listOf(sampleAuthors[1]),
topics = listOf(sampleTopics[1]) topics = listOf(sampleTopics[1])

@ -27,13 +27,12 @@ import androidx.compose.ui.test.onNodeWithContentDescription
import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.onNodeWithText
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeAuthor import com.google.samples.apps.nowinandroid.core.model.data.fakeAuthor
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeTopic import com.google.samples.apps.nowinandroid.core.model.data.fakeTopic
import com.google.samples.apps.nowinandroid.feature.interests.InterestsScreen import com.google.samples.apps.nowinandroid.feature.interests.InterestsScreen
import com.google.samples.apps.nowinandroid.feature.interests.InterestsTabState import com.google.samples.apps.nowinandroid.feature.interests.InterestsTabState
import com.google.samples.apps.nowinandroid.feature.interests.InterestsUiState import com.google.samples.apps.nowinandroid.feature.interests.InterestsUiState
import com.google.samples.apps.nowinandroid.feature.interests.R import com.google.samples.apps.nowinandroid.feature.interests.R
import kotlin.random.Random
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
@ -187,24 +186,15 @@ class InterestsScreenTest {
} }
private const val TOPIC_SHORT_DESC = "At vero eos et accusamus." private const val TOPIC_SHORT_DESC = "At vero eos et accusamus."
private val testTopics = listOf( private val testTopics = listOf(
FollowableTopic( FollowableTopic(fakeTopic(id = "1", shortDescription = TOPIC_SHORT_DESC), isFollowed = true),
Random.nextFakeTopic(id = "1", shortDescription = TOPIC_SHORT_DESC), FollowableTopic(fakeTopic(id = "2", shortDescription = TOPIC_SHORT_DESC), isFollowed = false),
isFollowed = true FollowableTopic(fakeTopic(id = "3", shortDescription = TOPIC_SHORT_DESC), isFollowed = false)
),
FollowableTopic(
Random.nextFakeTopic(id = "2", shortDescription = TOPIC_SHORT_DESC),
isFollowed = false
),
FollowableTopic(
Random.nextFakeTopic(id = "3", shortDescription = TOPIC_SHORT_DESC),
isFollowed = false
)
) )
private val testAuthors = listOf( private val testAuthors = listOf(
FollowableAuthor(Random.nextFakeAuthor(id = "1", name = "Android Dev"), isFollowed = true), FollowableAuthor(fakeAuthor(id = "1", name = "Android Dev"), isFollowed = true),
FollowableAuthor(Random.nextFakeAuthor(id = "2", name = "Android Dev 2"), isFollowed = false), FollowableAuthor(fakeAuthor(id = "2", name = "Android Dev 2"), isFollowed = false),
FollowableAuthor(Random.nextFakeAuthor(id = "3", name = "Android Dev 3"), isFollowed = false), FollowableAuthor(fakeAuthor(id = "3", name = "Android Dev 3"), isFollowed = false),
) )
private val numberOfUnfollowedTopics = testTopics.filter { !it.isFollowed }.size private val numberOfUnfollowedTopics = testTopics.filter { !it.isFollowed }.size

@ -20,15 +20,14 @@ import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsStrea
import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAuthorsStreamUseCase import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAuthorsStreamUseCase
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeAuthor import com.google.samples.apps.nowinandroid.core.model.data.fakeAuthor
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeTopic import com.google.samples.apps.nowinandroid.core.model.data.fakeTopic
import com.google.samples.apps.nowinandroid.core.testing.repository.TestAuthorsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestAuthorsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestTopicsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestTopicsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import com.google.samples.apps.nowinandroid.feature.interests.InterestsUiState import com.google.samples.apps.nowinandroid.feature.interests.InterestsUiState
import com.google.samples.apps.nowinandroid.feature.interests.InterestsViewModel import com.google.samples.apps.nowinandroid.feature.interests.InterestsViewModel
import kotlin.random.Random
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -206,25 +205,25 @@ class InterestsViewModelTest {
} }
private val testInputAuthors = listOf( private val testInputAuthors = listOf(
FollowableAuthor(author = Random.nextFakeAuthor(id = "1"), isFollowed = true), FollowableAuthor(author = fakeAuthor(id = "1"), isFollowed = true),
FollowableAuthor(author = Random.nextFakeAuthor(id = "2"), isFollowed = false), FollowableAuthor(author = fakeAuthor(id = "2"), isFollowed = false),
FollowableAuthor(author = Random.nextFakeAuthor(id = "3"), isFollowed = false), FollowableAuthor(author = fakeAuthor(id = "3"), isFollowed = false),
) )
private val testOutputAuthors = listOf( private val testOutputAuthors = listOf(
FollowableAuthor(author = Random.nextFakeAuthor(id = "1"), isFollowed = true), FollowableAuthor(author = fakeAuthor(id = "1"), isFollowed = true),
FollowableAuthor(author = Random.nextFakeAuthor(id = "2"), isFollowed = true), FollowableAuthor(author = fakeAuthor(id = "2"), isFollowed = true),
FollowableAuthor(author = Random.nextFakeAuthor(id = "3"), isFollowed = false), FollowableAuthor(author = fakeAuthor(id = "3"), isFollowed = false),
) )
private val testInputTopics = listOf( private val testInputTopics = listOf(
FollowableTopic(Random.nextFakeTopic(id = "1"), isFollowed = true), FollowableTopic(fakeTopic(id = "1"), isFollowed = true),
FollowableTopic(Random.nextFakeTopic(id = "2"), isFollowed = false), FollowableTopic(fakeTopic(id = "2"), isFollowed = false),
FollowableTopic(Random.nextFakeTopic(id = "3"), isFollowed = false), FollowableTopic(fakeTopic(id = "3"), isFollowed = false),
) )
private val testOutputTopics = listOf( private val testOutputTopics = listOf(
FollowableTopic(Random.nextFakeTopic(id = "1"), isFollowed = true), FollowableTopic(fakeTopic(id = "1"), isFollowed = true),
FollowableTopic(Random.nextFakeTopic(id = "2"), isFollowed = true), FollowableTopic(fakeTopic(id = "2"), isFollowed = true),
FollowableTopic(Random.nextFakeTopic(id = "3"), isFollowed = false), FollowableTopic(fakeTopic(id = "3"), isFollowed = false),
) )

@ -26,9 +26,8 @@ import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performScrollToNode import androidx.compose.ui.test.performScrollToNode
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic
import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeNewsResource import com.google.samples.apps.nowinandroid.core.model.data.fakeNewsResource
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeTopic import com.google.samples.apps.nowinandroid.core.model.data.fakeTopic
import kotlin.random.Random
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
@ -147,9 +146,9 @@ class TopicScreenTest {
} }
private val testTopics = listOf( private val testTopics = listOf(
FollowableTopic(Random.nextFakeTopic(id = "1", name = "Headlines"), isFollowed = true), FollowableTopic(fakeTopic(id = "1", name = "Headlines"), isFollowed = true),
FollowableTopic(Random.nextFakeTopic(id = "2", name = "UI"), isFollowed = false), FollowableTopic(fakeTopic(id = "2", name = "UI"), isFollowed = false),
FollowableTopic(Random.nextFakeTopic(id = "3", name = "Tools"), isFollowed = false), FollowableTopic(fakeTopic(id = "3", name = "Tools"), isFollowed = false),
) )
private val sampleNewsResources = listOf(Random.nextFakeNewsResource()) private val sampleNewsResources = listOf(fakeNewsResource(id = "0"))

@ -19,15 +19,14 @@ package com.google.samples.apps.nowinandroid.feature.topic
import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.SavedStateHandle
import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase
import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeNewsResource import com.google.samples.apps.nowinandroid.core.model.data.fakeNewsResource
import com.google.samples.apps.nowinandroid.core.model.data.nextFakeTopic import com.google.samples.apps.nowinandroid.core.model.data.fakeTopic
import com.google.samples.apps.nowinandroid.core.testing.decoder.FakeStringDecoder import com.google.samples.apps.nowinandroid.core.testing.decoder.FakeStringDecoder
import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestTopicsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestTopicsRepository
import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import com.google.samples.apps.nowinandroid.feature.topic.navigation.topicIdArg import com.google.samples.apps.nowinandroid.feature.topic.navigation.topicIdArg
import kotlin.random.Random
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.test.assertIs import kotlin.test.assertIs
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
@ -165,9 +164,9 @@ class TopicViewModelTest {
} }
private val testInputTopics = listOf( private val testInputTopics = listOf(
FollowableTopic(Random.nextFakeTopic(id = "1", name = "Android Studio"), isFollowed = true), FollowableTopic(fakeTopic(id = "1", name = "Android Studio"), isFollowed = true),
FollowableTopic(Random.nextFakeTopic(id = "2", name = "Build"), isFollowed = false), FollowableTopic(fakeTopic(id = "2", name = "Build"), isFollowed = false),
FollowableTopic(Random.nextFakeTopic(id = "3", name = "Compose"), isFollowed = false), FollowableTopic(fakeTopic(id = "3", name = "Compose"), isFollowed = false),
) )
private val testOutputTopics = listOf( private val testOutputTopics = listOf(
@ -177,5 +176,5 @@ private val testOutputTopics = listOf(
) )
private val sampleNewsResources = listOf( private val sampleNewsResources = listOf(
Random.nextFakeNewsResource(id = "1", topics = listOf(testInputTopics[0].topic)), fakeNewsResource(id = "1", topics = listOf(testInputTopics[0].topic)),
) )

Loading…
Cancel
Save