issue#6 Add DisplayName annotation to all tests in core module
This commit is contained in:
parent
c9d4223ce6
commit
e7f840a1b9
9 changed files with 86 additions and 38 deletions
|
|
@ -6,6 +6,7 @@ import org.fnives.test.showcase.core.storage.content.FavouriteContentLocalStorag
|
||||||
import org.fnives.test.showcase.model.content.ContentId
|
import org.fnives.test.showcase.model.content.ContentId
|
||||||
import org.junit.jupiter.api.Assertions.assertThrows
|
import org.junit.jupiter.api.Assertions.assertThrows
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.kotlin.doThrow
|
import org.mockito.kotlin.doThrow
|
||||||
import org.mockito.kotlin.mock
|
import org.mockito.kotlin.mock
|
||||||
|
|
@ -27,22 +28,27 @@ internal class AddContentToFavouriteUseCaseTest {
|
||||||
sut = AddContentToFavouriteUseCase(mockFavouriteContentLocalStorage)
|
sut = AddContentToFavouriteUseCase(mockFavouriteContentLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("WHEN_nothing_happens_THEN_the_storage_is_not_touched")
|
||||||
@Test
|
@Test
|
||||||
fun WHEN_nothing_happens_THEN_the_storage_is_not_touched() {
|
fun initializationDoesntAffectStorage() {
|
||||||
verifyZeroInteractions(mockFavouriteContentLocalStorage)
|
verifyZeroInteractions(mockFavouriteContentLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN_contentId_WHEN_called_THEN_storage_is_called")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_contentId_WHEN_called_THEN_storage_is_called() = runBlockingTest {
|
fun contentIdIsDelegatedToStorage() = runBlockingTest {
|
||||||
sut.invoke(ContentId("a"))
|
sut.invoke(ContentId("a"))
|
||||||
|
|
||||||
verify(mockFavouriteContentLocalStorage, times(1)).markAsFavourite(ContentId("a"))
|
verify(mockFavouriteContentLocalStorage, times(1)).markAsFavourite(ContentId("a"))
|
||||||
verifyNoMoreInteractions(mockFavouriteContentLocalStorage)
|
verifyNoMoreInteractions(mockFavouriteContentLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN_throwing_local_storage_WHEN_thrown_THEN_its_propagated")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_throwing_local_storage_WHEN_thrown_THEN_its_thrown() = runBlockingTest {
|
fun storageThrowingIsPropagated() = runBlockingTest {
|
||||||
whenever(mockFavouriteContentLocalStorage.markAsFavourite(ContentId("a"))).doThrow(RuntimeException())
|
whenever(mockFavouriteContentLocalStorage.markAsFavourite(ContentId("a"))).doThrow(
|
||||||
|
RuntimeException()
|
||||||
|
)
|
||||||
|
|
||||||
assertThrows(RuntimeException::class.java) {
|
assertThrows(RuntimeException::class.java) {
|
||||||
runBlocking { sut.invoke(ContentId("a")) }
|
runBlocking { sut.invoke(ContentId("a")) }
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import kotlinx.coroutines.runBlocking
|
||||||
import kotlinx.coroutines.test.runBlockingTest
|
import kotlinx.coroutines.test.runBlockingTest
|
||||||
import org.junit.jupiter.api.Assertions.assertThrows
|
import org.junit.jupiter.api.Assertions.assertThrows
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.kotlin.doThrow
|
import org.mockito.kotlin.doThrow
|
||||||
import org.mockito.kotlin.mock
|
import org.mockito.kotlin.mock
|
||||||
|
|
@ -25,21 +26,24 @@ internal class FetchContentUseCaseTest {
|
||||||
sut = FetchContentUseCase(mockContentRepository)
|
sut = FetchContentUseCase(mockContentRepository)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("WHEN nothing happens THEN the storage is not touched")
|
||||||
@Test
|
@Test
|
||||||
fun WHEN_nothing_happens_THEN_the_storage_is_not_touched() {
|
fun initializationDoesntAffectRepository() {
|
||||||
verifyZeroInteractions(mockContentRepository)
|
verifyZeroInteractions(mockContentRepository)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("WHEN called THEN repository is called")
|
||||||
@Test
|
@Test
|
||||||
fun WHEN_called_THEN_repository_is_called() = runBlockingTest {
|
fun whenCalledRepositoryIsFetched() = runBlockingTest {
|
||||||
sut.invoke()
|
sut.invoke()
|
||||||
|
|
||||||
verify(mockContentRepository, times(1)).fetch()
|
verify(mockContentRepository, times(1)).fetch()
|
||||||
verifyNoMoreInteractions(mockContentRepository)
|
verifyNoMoreInteractions(mockContentRepository)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN throwing local storage WHEN thrown THEN its thrown")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_throwing_local_storage_WHEN_thrown_THEN_its_thrown() = runBlockingTest {
|
fun whenRepositoryThrowsUseCaseAlsoThrows() = runBlockingTest {
|
||||||
whenever(mockContentRepository.fetch()).doThrow(RuntimeException())
|
whenever(mockContentRepository.fetch()).doThrow(RuntimeException())
|
||||||
|
|
||||||
assertThrows(RuntimeException::class.java) {
|
assertThrows(RuntimeException::class.java) {
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import org.fnives.test.showcase.model.content.ImageUrl
|
||||||
import org.fnives.test.showcase.model.shared.Resource
|
import org.fnives.test.showcase.model.shared.Resource
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.kotlin.doReturn
|
import org.mockito.kotlin.doReturn
|
||||||
import org.mockito.kotlin.mock
|
import org.mockito.kotlin.mock
|
||||||
|
|
@ -45,8 +46,9 @@ internal class GetAllContentUseCaseTest {
|
||||||
sut = GetAllContentUseCase(mockContentRepository, mockFavouriteContentLocalStorage)
|
sut = GetAllContentUseCase(mockContentRepository, mockFavouriteContentLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN loading AND empty favourite WHEN observed THEN loading is shown")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_loading_AND_empty_favourite_WHEN_observed_THEN_loading_is_shown() =
|
fun loadingResourceWithNoFavouritesResultsInLoadingResource() =
|
||||||
runBlockingTest(testDispatcher) {
|
runBlockingTest(testDispatcher) {
|
||||||
favouriteContentIdFlow.value = emptyList()
|
favouriteContentIdFlow.value = emptyList()
|
||||||
contentFlow.value = Resource.Loading()
|
contentFlow.value = Resource.Loading()
|
||||||
|
|
@ -57,8 +59,9 @@ internal class GetAllContentUseCaseTest {
|
||||||
Assertions.assertEquals(listOf(expected), actual)
|
Assertions.assertEquals(listOf(expected), actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN loading AND listOfFavourite WHEN observed THEN loading is shown")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_loading_AND_listOfFavourite_WHEN_observed_THEN_loading_is_shown() =
|
fun loadingResourceWithFavouritesResultsInLoadingResource() =
|
||||||
runBlockingTest(testDispatcher) {
|
runBlockingTest(testDispatcher) {
|
||||||
favouriteContentIdFlow.value = listOf(ContentId("a"))
|
favouriteContentIdFlow.value = listOf(ContentId("a"))
|
||||||
contentFlow.value = Resource.Loading()
|
contentFlow.value = Resource.Loading()
|
||||||
|
|
@ -69,8 +72,9 @@ internal class GetAllContentUseCaseTest {
|
||||||
Assertions.assertEquals(listOf(expected), actual)
|
Assertions.assertEquals(listOf(expected), actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN error AND empty favourite WHEN observed THEN error is shown")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_error_AND_empty_favourite_WHEN_observed_THEN_error_is_shown() =
|
fun errorResourceWithNoFavouritesResultsInErrorResource() =
|
||||||
runBlockingTest(testDispatcher) {
|
runBlockingTest(testDispatcher) {
|
||||||
favouriteContentIdFlow.value = emptyList()
|
favouriteContentIdFlow.value = emptyList()
|
||||||
val exception = Throwable()
|
val exception = Throwable()
|
||||||
|
|
@ -82,8 +86,9 @@ internal class GetAllContentUseCaseTest {
|
||||||
Assertions.assertEquals(listOf(expected), actual)
|
Assertions.assertEquals(listOf(expected), actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN error AND listOfFavourite WHEN observed THEN error is shown")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_error_AND_listOfFavourite_WHEN_observed_THEN_error_is_shown() =
|
fun errorResourceWithFavouritesResultsInErrorResource() =
|
||||||
runBlockingTest(testDispatcher) {
|
runBlockingTest(testDispatcher) {
|
||||||
favouriteContentIdFlow.value = listOf(ContentId("b"))
|
favouriteContentIdFlow.value = listOf(ContentId("b"))
|
||||||
val exception = Throwable()
|
val exception = Throwable()
|
||||||
|
|
@ -95,8 +100,9 @@ internal class GetAllContentUseCaseTest {
|
||||||
Assertions.assertEquals(listOf(expected), actual)
|
Assertions.assertEquals(listOf(expected), actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN listOfContent AND empty favourite WHEN observed THEN favourites are returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_listOfContent_AND_empty_favourite_WHEN_observed_THEN_favourites_are_returned() =
|
fun successResourceWithNoFavouritesResultsInNoFavouritedItems() =
|
||||||
runBlockingTest(testDispatcher) {
|
runBlockingTest(testDispatcher) {
|
||||||
favouriteContentIdFlow.value = emptyList()
|
favouriteContentIdFlow.value = emptyList()
|
||||||
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
||||||
|
|
@ -111,8 +117,9 @@ internal class GetAllContentUseCaseTest {
|
||||||
Assertions.assertEquals(listOf(expected), actual)
|
Assertions.assertEquals(listOf(expected), actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN listOfContent AND other favourite id WHEN observed THEN favourites are returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_listOfContent_AND_other_favourite_id_WHEN_observed_THEN_favourites_are_returned() =
|
fun successResourceWithDifferentFavouritesResultsInNoFavouritedItems() =
|
||||||
runBlockingTest(testDispatcher) {
|
runBlockingTest(testDispatcher) {
|
||||||
favouriteContentIdFlow.value = listOf(ContentId("x"))
|
favouriteContentIdFlow.value = listOf(ContentId("x"))
|
||||||
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
||||||
|
|
@ -127,8 +134,9 @@ internal class GetAllContentUseCaseTest {
|
||||||
Assertions.assertEquals(listOf(expected), actual)
|
Assertions.assertEquals(listOf(expected), actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN listOfContent AND same favourite id WHEN observed THEN favourites are returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_listOfContent_AND_same_favourite_id_WHEN_observed_THEN_favourites_are_returned() =
|
fun successResourceWithSameFavouritesResultsInFavouritedItems() =
|
||||||
runBlockingTest(testDispatcher) {
|
runBlockingTest(testDispatcher) {
|
||||||
favouriteContentIdFlow.value = listOf(ContentId("a"))
|
favouriteContentIdFlow.value = listOf(ContentId("a"))
|
||||||
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
||||||
|
|
@ -143,8 +151,9 @@ internal class GetAllContentUseCaseTest {
|
||||||
Assertions.assertEquals(listOf(expected), actual)
|
Assertions.assertEquals(listOf(expected), actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN loading then data then added favourite WHEN observed THEN loading then correct favourites are returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_loading_then_data_then_added_favourite_WHEN_observed_THEN_loading_then_correct_favourites_are_returned() =
|
fun whileLoadingAndAddingItemsReactsProperly() =
|
||||||
runBlockingTest(testDispatcher) {
|
runBlockingTest(testDispatcher) {
|
||||||
favouriteContentIdFlow.value = emptyList()
|
favouriteContentIdFlow.value = emptyList()
|
||||||
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
||||||
|
|
@ -169,8 +178,9 @@ internal class GetAllContentUseCaseTest {
|
||||||
Assertions.assertEquals(expected, actual.await())
|
Assertions.assertEquals(expected, actual.await())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN loading then data then removed favourite WHEN observed THEN loading then correct favourites are returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_loading_then_data_then_removed_favourite_WHEN_observed_THEN_loading_then_correct_favourites_are_returned() =
|
fun whileLoadingAndRemovingItemsReactsProperly() =
|
||||||
runBlockingTest(testDispatcher) {
|
runBlockingTest(testDispatcher) {
|
||||||
favouriteContentIdFlow.value = listOf(ContentId("a"))
|
favouriteContentIdFlow.value = listOf(ContentId("a"))
|
||||||
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
||||||
|
|
@ -195,8 +205,9 @@ internal class GetAllContentUseCaseTest {
|
||||||
Assertions.assertEquals(expected, actual.await())
|
Assertions.assertEquals(expected, actual.await())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN loading then data then loading WHEN observed THEN loading then correct favourites then loading are returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_loading_then_data_then_loading_WHEN_observed_THEN_loading_then_correct_favourites_then_loadingare_returned() =
|
fun loadingThenDataThenLoadingReactsProperly() =
|
||||||
runBlockingTest(testDispatcher) {
|
runBlockingTest(testDispatcher) {
|
||||||
favouriteContentIdFlow.value = listOf(ContentId("a"))
|
favouriteContentIdFlow.value = listOf(ContentId("a"))
|
||||||
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
val content = Content(ContentId("a"), "b", "c", ImageUrl("d"))
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import org.fnives.test.showcase.core.storage.content.FavouriteContentLocalStorag
|
||||||
import org.fnives.test.showcase.model.content.ContentId
|
import org.fnives.test.showcase.model.content.ContentId
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.kotlin.doThrow
|
import org.mockito.kotlin.doThrow
|
||||||
import org.mockito.kotlin.mock
|
import org.mockito.kotlin.mock
|
||||||
|
|
@ -27,21 +28,24 @@ internal class RemoveContentFromFavouritesUseCaseTest {
|
||||||
sut = RemoveContentFromFavouritesUseCase(mockFavouriteContentLocalStorage)
|
sut = RemoveContentFromFavouritesUseCase(mockFavouriteContentLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("WHEN nothing happens THEN the storage is not touched")
|
||||||
@Test
|
@Test
|
||||||
fun WHEN_nothing_happens_THEN_the_storage_is_not_touched() {
|
fun initializationDoesntAffectStorage() {
|
||||||
verifyZeroInteractions(mockFavouriteContentLocalStorage)
|
verifyZeroInteractions(mockFavouriteContentLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN contentId WHEN called THEN storage is called")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_contentId_WHEN_called_THEN_storage_is_called() = runBlockingTest {
|
fun givenContentIdCallsStorage() = runBlockingTest {
|
||||||
sut.invoke(ContentId("a"))
|
sut.invoke(ContentId("a"))
|
||||||
|
|
||||||
verify(mockFavouriteContentLocalStorage, times(1)).deleteAsFavourite(ContentId("a"))
|
verify(mockFavouriteContentLocalStorage, times(1)).deleteAsFavourite(ContentId("a"))
|
||||||
verifyNoMoreInteractions(mockFavouriteContentLocalStorage)
|
verifyNoMoreInteractions(mockFavouriteContentLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN throwing local storage WHEN thrown THEN its propogated")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_throwing_local_storage_WHEN_thrown_THEN_its_thrown() = runBlockingTest {
|
fun storageExceptionThrowingIsPropogated() = runBlockingTest {
|
||||||
whenever(mockFavouriteContentLocalStorage.deleteAsFavourite(ContentId("a"))).doThrow(RuntimeException())
|
whenever(mockFavouriteContentLocalStorage.deleteAsFavourite(ContentId("a"))).doThrow(RuntimeException())
|
||||||
|
|
||||||
Assertions.assertThrows(RuntimeException::class.java) {
|
Assertions.assertThrows(RuntimeException::class.java) {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import org.fnives.test.showcase.core.storage.UserDataLocalStorage
|
||||||
import org.fnives.test.showcase.model.session.Session
|
import org.fnives.test.showcase.model.session.Session
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.kotlin.doReturn
|
import org.mockito.kotlin.doReturn
|
||||||
import org.mockito.kotlin.mock
|
import org.mockito.kotlin.mock
|
||||||
|
|
@ -22,13 +23,15 @@ internal class IsUserLoggedInUseCaseTest {
|
||||||
sut = IsUserLoggedInUseCase(mockUserDataLocalStorage)
|
sut = IsUserLoggedInUseCase(mockUserDataLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("WHEN nothing is called THEN storage is not called")
|
||||||
@Test
|
@Test
|
||||||
fun WHEN_nothing_is_called_THEN_storage_is_not_called() {
|
fun creatingDoesntAffectStorage() {
|
||||||
verifyZeroInteractions(mockUserDataLocalStorage)
|
verifyZeroInteractions(mockUserDataLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN session data saved WHEN is user logged in checked THEN true is returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_session_data_saved_WHEN_is_user_logged_in_checked_THEN_true_is_returned() {
|
fun sessionInStorageResultsInLoggedIn() {
|
||||||
whenever(mockUserDataLocalStorage.session).doReturn(Session("a", "b"))
|
whenever(mockUserDataLocalStorage.session).doReturn(Session("a", "b"))
|
||||||
|
|
||||||
val actual = sut.invoke()
|
val actual = sut.invoke()
|
||||||
|
|
@ -36,8 +39,9 @@ internal class IsUserLoggedInUseCaseTest {
|
||||||
Assertions.assertEquals(true, actual)
|
Assertions.assertEquals(true, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN no session data saved WHEN is user logged in checked THEN false is returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_no_session_data_saved_WHEN_is_user_logged_in_checked_THEN_false_is_returned() {
|
fun noSessionInStorageResultsInLoggedOut() {
|
||||||
whenever(mockUserDataLocalStorage.session).doReturn(null)
|
whenever(mockUserDataLocalStorage.session).doReturn(null)
|
||||||
|
|
||||||
val actual = sut.invoke()
|
val actual = sut.invoke()
|
||||||
|
|
@ -45,8 +49,9 @@ internal class IsUserLoggedInUseCaseTest {
|
||||||
Assertions.assertEquals(false, actual)
|
Assertions.assertEquals(false, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN no session THEN session THEN no session WHEN is user logged in checked over again THEN every return is correct")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_no_session_THEN_session_THEN_no_session_WHEN_is_user_logged_in_checked_over_again_THEN_every_return_is_correct() {
|
fun multipleSessionSettingsResultsInCorrectResponses() {
|
||||||
whenever(mockUserDataLocalStorage.session).doReturn(null)
|
whenever(mockUserDataLocalStorage.session).doReturn(null)
|
||||||
val actual1 = sut.invoke()
|
val actual1 = sut.invoke()
|
||||||
whenever(mockUserDataLocalStorage.session).doReturn(Session("", ""))
|
whenever(mockUserDataLocalStorage.session).doReturn(Session("", ""))
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import org.fnives.test.showcase.core.login.LogoutUseCase
|
||||||
import org.fnives.test.showcase.core.storage.UserDataLocalStorage
|
import org.fnives.test.showcase.core.storage.UserDataLocalStorage
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.kotlin.mock
|
import org.mockito.kotlin.mock
|
||||||
import org.mockito.kotlin.times
|
import org.mockito.kotlin.times
|
||||||
|
|
@ -36,13 +37,15 @@ internal class LogoutUseCaseTest {
|
||||||
testCoreComponent.inject(this)
|
testCoreComponent.inject(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("WHEN no call THEN storage is not interacted")
|
||||||
@Test
|
@Test
|
||||||
fun WHEN_no_call_THEN_storage_is_not_interacted() {
|
fun initializedDoesntAffectStorage() {
|
||||||
verifyZeroInteractions(mockUserDataLocalStorage)
|
verifyZeroInteractions(mockUserDataLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("WHEN logout invoked THEN storage is cleared")
|
||||||
@Test
|
@Test
|
||||||
fun WHEN_logout_invoked_THEN_storage_is_cleared() = runBlockingTest {
|
fun logoutResultsInStorageCleaning() = runBlockingTest {
|
||||||
val repositoryBefore = contentRepository
|
val repositoryBefore = contentRepository
|
||||||
|
|
||||||
sut.invoke()
|
sut.invoke()
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import org.fnives.test.showcase.model.network.BaseUrl
|
||||||
import org.junit.jupiter.api.AfterEach
|
import org.junit.jupiter.api.AfterEach
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.koin.core.context.startKoin
|
import org.koin.core.context.startKoin
|
||||||
import org.koin.core.context.stopKoin
|
import org.koin.core.context.stopKoin
|
||||||
|
|
@ -47,13 +48,15 @@ internal class LogoutUseCaseTest : KoinTest {
|
||||||
stopKoin()
|
stopKoin()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("WHEN no call THEN storage is not interacted")
|
||||||
@Test
|
@Test
|
||||||
fun WHEN_no_call_THEN_storage_is_not_interacted() {
|
fun initializedDoesntAffectStorage() {
|
||||||
verifyZeroInteractions(mockUserDataLocalStorage)
|
verifyZeroInteractions(mockUserDataLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("WHEN logout invoked THEN storage is cleared")
|
||||||
@Test
|
@Test
|
||||||
fun WHEN_logout_invoked_THEN_storage_is_cleared() = runBlockingTest {
|
fun logoutResultsInStorageCleaning() = runBlockingTest {
|
||||||
val repositoryBefore = getKoin().get<ContentRepository>()
|
val repositoryBefore = getKoin().get<ContentRepository>()
|
||||||
|
|
||||||
sut.invoke()
|
sut.invoke()
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,15 @@ import org.fnives.test.showcase.model.shared.Resource
|
||||||
import org.fnives.test.showcase.network.shared.exceptions.NetworkException
|
import org.fnives.test.showcase.network.shared.exceptions.NetworkException
|
||||||
import org.fnives.test.showcase.network.shared.exceptions.ParsingException
|
import org.fnives.test.showcase.network.shared.exceptions.ParsingException
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
@Suppress("TestFunctionName")
|
@Suppress("TestFunctionName")
|
||||||
internal class AnswerUtilsKtTest {
|
internal class AnswerUtilsKtTest {
|
||||||
|
|
||||||
|
@DisplayName("GIVEN network exception thrown WHEN wrapped into answer THEN answer error is returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_network_exception_thrown_WHEN_wrapped_into_answer_THEN_answer_error_is_returned() = runBlocking {
|
fun networkExceptionThrownResultsInError() = runBlocking {
|
||||||
val exception = NetworkException(Throwable())
|
val exception = NetworkException(Throwable())
|
||||||
val expected = Answer.Error<Unit>(exception)
|
val expected = Answer.Error<Unit>(exception)
|
||||||
|
|
||||||
|
|
@ -22,8 +24,9 @@ internal class AnswerUtilsKtTest {
|
||||||
Assertions.assertEquals(expected, actual)
|
Assertions.assertEquals(expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN parsing exception thrown WHEN wrapped into answer THEN answer error is returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_parsing_exception_thrown_WHEN_wrapped_into_answer_THEN_answer_error_is_returned() = runBlocking {
|
fun parsingExceptionThrownResultsInError() = runBlocking {
|
||||||
val exception = ParsingException(Throwable())
|
val exception = ParsingException(Throwable())
|
||||||
val expected = Answer.Error<Unit>(exception)
|
val expected = Answer.Error<Unit>(exception)
|
||||||
|
|
||||||
|
|
@ -32,8 +35,9 @@ internal class AnswerUtilsKtTest {
|
||||||
Assertions.assertEquals(expected, actual)
|
Assertions.assertEquals(expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN unexpected throwable thrown WHEN wrapped into answer THEN answer error is returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_parsing_throwable_thrown_WHEN_wrapped_into_answer_THEN_answer_error_is_returned() = runBlocking {
|
fun unexpectedExceptionThrownResultsInError() = runBlocking {
|
||||||
val exception = Throwable()
|
val exception = Throwable()
|
||||||
val expected = Answer.Error<Unit>(UnexpectedException(exception))
|
val expected = Answer.Error<Unit>(UnexpectedException(exception))
|
||||||
|
|
||||||
|
|
@ -42,8 +46,9 @@ internal class AnswerUtilsKtTest {
|
||||||
Assertions.assertEquals(expected, actual)
|
Assertions.assertEquals(expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN string WHEN wrapped into answer THEN string answer is returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_string_WHEN_wrapped_into_answer_THEN_string_answer_is_returned() = runBlocking {
|
fun stringIsReturnedWrappedIntoSuccess() = runBlocking {
|
||||||
val expected = Answer.Success("banan")
|
val expected = Answer.Success("banan")
|
||||||
|
|
||||||
val actual = wrapIntoAnswer { "banan" }
|
val actual = wrapIntoAnswer { "banan" }
|
||||||
|
|
@ -51,15 +56,17 @@ internal class AnswerUtilsKtTest {
|
||||||
Assertions.assertEquals(expected, actual)
|
Assertions.assertEquals(expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN cancellation exception WHEN wrapped into answer THEN cancellation exception is thrown")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_cancellation_exception_WHEN_wrapped_into_answer_THEN_cancellation_exception_is_thrown() {
|
fun cancellationExceptionResultsInThrowingIt() {
|
||||||
Assertions.assertThrows(CancellationException::class.java) {
|
Assertions.assertThrows(CancellationException::class.java) {
|
||||||
runBlocking { wrapIntoAnswer { throw CancellationException() } }
|
runBlocking { wrapIntoAnswer { throw CancellationException() } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN success answer WHEN converted into resource THEN Resource success is returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_success_answer_WHEN_converted_into_resource_THEN_Resource_success_is_returned() {
|
fun successAnswerConvertsToSuccessResource() {
|
||||||
val expected = Resource.Success("alma")
|
val expected = Resource.Success("alma")
|
||||||
|
|
||||||
val actual = Answer.Success("alma").mapIntoResource()
|
val actual = Answer.Success("alma").mapIntoResource()
|
||||||
|
|
@ -67,8 +74,9 @@ internal class AnswerUtilsKtTest {
|
||||||
Assertions.assertEquals(expected, actual)
|
Assertions.assertEquals(expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN error answer WHEN converted into resource THEN Resource error is returned")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_error_answer_WHEN_converted_into_resource_THEN_Resource_error_is_returned() {
|
fun errorAnswerConvertsToErrorResource() {
|
||||||
val exception = Throwable()
|
val exception = Throwable()
|
||||||
val expected = Resource.Error<Unit>(exception)
|
val expected = Resource.Error<Unit>(exception)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package org.fnives.test.showcase.core.storage
|
||||||
import org.fnives.test.showcase.model.session.Session
|
import org.fnives.test.showcase.model.session.Session
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
|
import org.junit.jupiter.api.DisplayName
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.mockito.kotlin.doReturn
|
import org.mockito.kotlin.doReturn
|
||||||
import org.mockito.kotlin.mock
|
import org.mockito.kotlin.mock
|
||||||
|
|
@ -23,16 +24,18 @@ internal class NetworkSessionLocalStorageAdapterTest {
|
||||||
sut = NetworkSessionLocalStorageAdapter(mockUserDataLocalStorage)
|
sut = NetworkSessionLocalStorageAdapter(mockUserDataLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN null as session WHEN saved THEN its delegated")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_null_as_session_WHEN_saved_THEN_its_delegated() {
|
fun settingNullSessionIsDelegated() {
|
||||||
sut.session = null
|
sut.session = null
|
||||||
|
|
||||||
verify(mockUserDataLocalStorage, times(1)).session = null
|
verify(mockUserDataLocalStorage, times(1)).session = null
|
||||||
verifyNoMoreInteractions(mockUserDataLocalStorage)
|
verifyNoMoreInteractions(mockUserDataLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("GIVEN session WHEN saved THEN its delegated")
|
||||||
@Test
|
@Test
|
||||||
fun GIVEN_session_WHEN_saved_THEN_its_delegated() {
|
fun settingDataAsSessionIsDelegated() {
|
||||||
val expected = Session("a", "b")
|
val expected = Session("a", "b")
|
||||||
|
|
||||||
sut.session = Session("a", "b")
|
sut.session = Session("a", "b")
|
||||||
|
|
@ -41,8 +44,9 @@ internal class NetworkSessionLocalStorageAdapterTest {
|
||||||
verifyNoMoreInteractions(mockUserDataLocalStorage)
|
verifyNoMoreInteractions(mockUserDataLocalStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("WHEN session requested THEN its returned from delegated")
|
||||||
@Test
|
@Test
|
||||||
fun WHEN_session_requested_THEN_its_returned_from_delegated() {
|
fun gettingSessionReturnsFromDelegate() {
|
||||||
val expected = Session("a", "b")
|
val expected = Session("a", "b")
|
||||||
whenever(mockUserDataLocalStorage.session).doReturn(expected)
|
whenever(mockUserDataLocalStorage.session).doReturn(expected)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue