Skip to content

Commit

Permalink
Set the cache buster value in the initial state (#557)
Browse files Browse the repository at this point in the history
* Set the cache buster value in the initial state

* Fix code style
  • Loading branch information
AdamGrzybkowski authored Jan 24, 2025
1 parent ec05abc commit 5da9063
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,13 @@ internal class AvatarPickerViewModel(
private val clock: Clock,
) : ViewModel() {
private val _uiState =
MutableStateFlow(AvatarPickerUiState(email = email, avatarPickerContentLayout = avatarPickerContentLayout))
MutableStateFlow(
AvatarPickerUiState(
email = email,
avatarPickerContentLayout = avatarPickerContentLayout,
avatarCacheBuster = clock.getTimeMillis(),
),
)
val uiState: StateFlow<AvatarPickerUiState> = _uiState.asStateFlow()
private val _actions = Channel<AvatarPickerAction>(Channel.BUFFERED)
val actions = _actions.receiveAsFlow()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class AvatarPickerViewModelTest {
coEvery { profileService.retrieveCatching(email) } returns GravatarResult.Failure(ErrorType.Unknown())
coEvery { avatarRepository.refreshAvatars(email) } returns GravatarResult.Success(emptyList())
coEvery { avatarRepository.getAvatars(email) } returns avatarsFlow
coEvery { clock.getTimeMillis() } returns 1
coEvery { clock.getTimeMillis() } returns 0
}

@Test
Expand All @@ -82,8 +82,11 @@ class AvatarPickerViewModelTest {
viewModel = initViewModel()

viewModel.uiState.test {
val avatarPickerUiState =
AvatarPickerUiState(email = email, avatarPickerContentLayout = avatarPickerContentLayout)
val avatarPickerUiState = AvatarPickerUiState(
email = email,
avatarPickerContentLayout = avatarPickerContentLayout,
avatarCacheBuster = 0,
)
assertEquals(avatarPickerUiState, awaitItem())
assertEquals(
avatarPickerUiState.copy(isLoading = true, profile = null),
Expand All @@ -110,8 +113,11 @@ class AvatarPickerViewModelTest {
viewModel = initViewModel()

viewModel.uiState.test {
val avatarPickerUiState =
AvatarPickerUiState(email = email, avatarPickerContentLayout = avatarPickerContentLayout)
val avatarPickerUiState = AvatarPickerUiState(
email = email,
avatarPickerContentLayout = avatarPickerContentLayout,
avatarCacheBuster = 0,
)
assertEquals(avatarPickerUiState, awaitItem())
assertEquals(
avatarPickerUiState.copy(isLoading = true),
Expand All @@ -132,8 +138,11 @@ class AvatarPickerViewModelTest {
viewModel = initViewModel()

viewModel.uiState.test {
val avatarPickerUiState =
AvatarPickerUiState(email = email, avatarPickerContentLayout = avatarPickerContentLayout)
val avatarPickerUiState = AvatarPickerUiState(
email = email,
avatarPickerContentLayout = avatarPickerContentLayout,
avatarCacheBuster = 0,
)
assertEquals(avatarPickerUiState, awaitItem())
skipItems(2) // skipping loading avatars states
assertEquals(
Expand Down Expand Up @@ -164,8 +173,11 @@ class AvatarPickerViewModelTest {
viewModel = initViewModel()

viewModel.uiState.test {
val avatarPickerUiState =
AvatarPickerUiState(email = email, avatarPickerContentLayout = avatarPickerContentLayout)
val avatarPickerUiState = AvatarPickerUiState(
email = email,
avatarPickerContentLayout = avatarPickerContentLayout,
avatarCacheBuster = 0,
)
assertEquals(avatarPickerUiState, awaitItem())
skipItems(2) // skipping loading avatars states
assertEquals(
Expand Down Expand Up @@ -205,6 +217,7 @@ class AvatarPickerViewModelTest {

viewModel.uiState.test {
expectMostRecentItem()
coEvery { clock.getTimeMillis() } returns 1
viewModel.onEvent(AvatarPickerEvent.AvatarSelected(avatars.last()))
val avatarPickerUiState = AvatarPickerUiState(
email = email,
Expand All @@ -214,6 +227,7 @@ class AvatarPickerViewModelTest {
selectingAvatarId = avatars.last().imageId,
scrollToIndex = 0,
avatarPickerContentLayout = avatarPickerContentLayout,
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -255,6 +269,7 @@ class AvatarPickerViewModelTest {
selectingAvatarId = avatars.last().imageId,
scrollToIndex = 0,
avatarPickerContentLayout = avatarPickerContentLayout,
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -334,6 +349,7 @@ class AvatarPickerViewModelTest {
uploadingAvatar = uri,
scrollToIndex = 0,
avatarPickerContentLayout = avatarPickerContentLayout,
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -379,6 +395,7 @@ class AvatarPickerViewModelTest {
scrollToIndex = 0,
avatarPickerContentLayout = avatarPickerContentLayout,
failedUploads = emptySet(),
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -500,6 +517,7 @@ class AvatarPickerViewModelTest {
failedUploads = setOf(
AvatarUploadFailure(uriOne, invalidRequest.type),
),
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -662,6 +680,7 @@ class AvatarPickerViewModelTest {
viewModel.uiState.test {
expectMostRecentItem()

coEvery { clock.getTimeMillis() } returns 1
viewModel.onEvent(AvatarPickerEvent.ImageCropped(uriOne))

// State before upload starts
Expand All @@ -675,6 +694,7 @@ class AvatarPickerViewModelTest {
scrollToIndex = 0,
avatarPickerContentLayout = avatarPickerContentLayout,
nonSelectedAvatarAlertVisible = true,
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -719,6 +739,7 @@ class AvatarPickerViewModelTest {
viewModel.uiState.test {
expectMostRecentItem()
val avatarToDelete = avatars.first()
coEvery { clock.getTimeMillis() } returns 1
viewModel.onEvent(AvatarPickerEvent.AvatarDeleteSelected(avatarToDelete.imageId))
var avatarPickerUiState = AvatarPickerUiState(
email = email,
Expand All @@ -728,6 +749,7 @@ class AvatarPickerViewModelTest {
avatarPickerContentLayout = avatarPickerContentLayout,
scrollToIndex = 0,
nonSelectedAvatarAlertVisible = false,
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -778,6 +800,7 @@ class AvatarPickerViewModelTest {
avatarPickerContentLayout = avatarPickerContentLayout,
scrollToIndex = 0,
nonSelectedAvatarAlertVisible = false,
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -816,6 +839,7 @@ class AvatarPickerViewModelTest {
avatarPickerContentLayout = avatarPickerContentLayout,
scrollToIndex = 0,
nonSelectedAvatarAlertVisible = false,
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -854,6 +878,7 @@ class AvatarPickerViewModelTest {
avatarPickerContentLayout = avatarPickerContentLayout,
scrollToIndex = 0,
nonSelectedAvatarAlertVisible = false,
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -882,6 +907,7 @@ class AvatarPickerViewModelTest {
advanceUntilIdle()

viewModel.uiState.test {
coEvery { clock.getTimeMillis() } returns 1
viewModel.onEvent(AvatarPickerEvent.AvatarDeleteAlertDismissed)
expectMostRecentItem()
viewModel.onEvent(AvatarPickerEvent.ImageCropped(uri))
Expand All @@ -896,6 +922,7 @@ class AvatarPickerViewModelTest {
scrollToIndex = 0,
avatarPickerContentLayout = avatarPickerContentLayout,
nonSelectedAvatarAlertVisible = false,
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -947,6 +974,7 @@ class AvatarPickerViewModelTest {
viewModel.uiState.test {
expectMostRecentItem()
val avatarToDelete = avatars.first()
coEvery { clock.getTimeMillis() } returns 1
viewModel.onEvent(AvatarPickerEvent.AvatarDeleteSelected(avatarToDelete.imageId))
var avatarPickerUiState = AvatarPickerUiState(
email = email,
Expand All @@ -955,6 +983,7 @@ class AvatarPickerViewModelTest {
profile = ComponentState.Loaded(profile),
avatarPickerContentLayout = avatarPickerContentLayout,
scrollToIndex = 0,
avatarCacheBuster = 0,
)
assertEquals(
avatarPickerUiState,
Expand Down Expand Up @@ -1064,6 +1093,7 @@ class AvatarPickerViewModelTest {
profile = ComponentState.Loaded(profile),
avatarPickerContentLayout = avatarPickerContentLayout,
scrollToIndex = 0,
avatarCacheBuster = 0,
),
awaitItem(),
)
Expand Down Expand Up @@ -1101,6 +1131,7 @@ class AvatarPickerViewModelTest {
profile = ComponentState.Loaded(profile),
avatarPickerContentLayout = avatarPickerContentLayout,
scrollToIndex = 0,
avatarCacheBuster = 0,
),
awaitItem(),
)
Expand All @@ -1111,6 +1142,7 @@ class AvatarPickerViewModelTest {
profile = ComponentState.Loaded(profile),
avatarPickerContentLayout = avatarPickerContentLayout,
scrollToIndex = 0,
avatarCacheBuster = 0,
),
awaitItem(),
)
Expand Down Expand Up @@ -1187,6 +1219,7 @@ class AvatarPickerViewModelTest {
profile = ComponentState.Loaded(profile),
avatarPickerContentLayout = avatarPickerContentLayout,
scrollToIndex = 0,
avatarCacheBuster = 0,
),
awaitItem(),
)
Expand Down

0 comments on commit 5da9063

Please sign in to comment.