From dd227751af71661c75490d74261d933764d3597c Mon Sep 17 00:00:00 2001 From: Ammar Githam Date: Sat, 12 Jun 2021 13:13:11 +0900 Subject: [PATCH] Migrate service/dao test objects to open class adapters for re-usability --- .../awais/instagrabber/common/Adapters.kt | 154 ++++++++++++++++ .../ProfileFragmentViewModelTest.kt | 165 +----------------- 2 files changed, 161 insertions(+), 158 deletions(-) create mode 100644 app/src/test/java/awais/instagrabber/common/Adapters.kt diff --git a/app/src/test/java/awais/instagrabber/common/Adapters.kt b/app/src/test/java/awais/instagrabber/common/Adapters.kt new file mode 100644 index 00000000..75bd6cc7 --- /dev/null +++ b/app/src/test/java/awais/instagrabber/common/Adapters.kt @@ -0,0 +1,154 @@ +package awais.instagrabber.common + +import awais.instagrabber.db.dao.AccountDao +import awais.instagrabber.db.entities.Account +import awais.instagrabber.repositories.* +import awais.instagrabber.repositories.responses.* + +open class UserServiceAdapter : UserService { + override suspend fun getUserInfo(uid: Long): WrappedUser { + TODO("Not yet implemented") + } + + override suspend fun getUsernameInfo(username: String): WrappedUser { + TODO("Not yet implemented") + } + + override suspend fun getUserFriendship(uid: Long): FriendshipStatus { + TODO("Not yet implemented") + } + + override suspend fun search(timezoneOffset: Float, query: String): UserSearchResponse { + TODO("Not yet implemented") + } +} + +open class FriendshipServiceAdapter : FriendshipService { + override suspend fun change(action: String, id: Long, form: Map): FriendshipChangeResponse { + TODO("Not yet implemented") + } + + override suspend fun toggleRestrict(action: String, form: Map): FriendshipRestrictResponse { + TODO("Not yet implemented") + } + + override suspend fun getList(userId: Long, type: String, queryParams: Map): String { + TODO("Not yet implemented") + } + + override suspend fun changeMute(action: String, form: Map): FriendshipChangeResponse { + TODO("Not yet implemented") + } +} + +open class StoriesServiceAdapter : StoriesService { + override suspend fun fetch(mediaId: Long): String { + TODO("Not yet implemented") + } + + override suspend fun getFeedStories(): String { + TODO("Not yet implemented") + } + + override suspend fun fetchHighlights(uid: Long): String { + TODO("Not yet implemented") + } + + override suspend fun fetchArchive(queryParams: Map): String { + TODO("Not yet implemented") + } + + override suspend fun getUserStory(url: String): String { + TODO("Not yet implemented") + } + + override suspend fun respondToSticker(storyId: String, stickerId: String, action: String, form: Map): StoryStickerResponse { + TODO("Not yet implemented") + } + + override suspend fun seen(queryParams: Map, form: Map): String { + TODO("Not yet implemented") + } +} + +open class MediaServiceAdapter : MediaService { + override suspend fun fetch(mediaId: Long): MediaInfoResponse { + TODO("Not yet implemented") + } + + override suspend fun fetchLikes(mediaId: String, action: String): LikersResponse { + TODO("Not yet implemented") + } + + override suspend fun action(action: String, mediaId: String, signedForm: Map): String { + TODO("Not yet implemented") + } + + override suspend fun editCaption(mediaId: String, signedForm: Map): String { + TODO("Not yet implemented") + } + + override suspend fun translate(form: Map): String { + TODO("Not yet implemented") + } + + override suspend fun uploadFinish(retryContext: String, queryParams: Map, signedForm: Map): String { + TODO("Not yet implemented") + } + + override suspend fun delete(mediaId: String, mediaType: String, signedForm: Map): String { + TODO("Not yet implemented") + } + + override suspend fun archive(mediaId: String, signedForm: Map): String { + TODO("Not yet implemented") + } +} + +open class GraphQLServiceAdapter : GraphQLService { + override suspend fun fetch(queryParams: Map): String { + TODO("Not yet implemented") + } + + override suspend fun getUser(username: String): String { + TODO("Not yet implemented") + } + + override suspend fun getPost(shortcode: String): String { + TODO("Not yet implemented") + } + + override suspend fun getTag(tag: String): String { + TODO("Not yet implemented") + } + + override suspend fun getLocation(locationId: Long): String { + TODO("Not yet implemented") + } +} + +open class AccountDaoAdapter : AccountDao { + override suspend fun getAllAccounts(): List { + TODO("Not yet implemented") + } + + override suspend fun findAccountByUid(uid: String): Account? { + TODO("Not yet implemented") + } + + override suspend fun insertAccounts(vararg accounts: Account) { + TODO("Not yet implemented") + } + + override suspend fun updateAccounts(vararg accounts: Account) { + TODO("Not yet implemented") + } + + override suspend fun deleteAccounts(vararg accounts: Account) { + TODO("Not yet implemented") + } + + override suspend fun deleteAllAccounts() { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/app/src/test/java/awais/instagrabber/viewmodels/ProfileFragmentViewModelTest.kt b/app/src/test/java/awais/instagrabber/viewmodels/ProfileFragmentViewModelTest.kt index 11627d7f..b3cd3f55 100644 --- a/app/src/test/java/awais/instagrabber/viewmodels/ProfileFragmentViewModelTest.kt +++ b/app/src/test/java/awais/instagrabber/viewmodels/ProfileFragmentViewModelTest.kt @@ -2,166 +2,15 @@ package awais.instagrabber.viewmodels import androidx.lifecycle.SavedStateHandle import androidx.test.ext.junit.runners.AndroidJUnit4 -import awais.instagrabber.db.dao.AccountDao +import awais.instagrabber.common.* import awais.instagrabber.db.datasources.AccountDataSource -import awais.instagrabber.db.entities.Account import awais.instagrabber.db.repositories.AccountRepository -import awais.instagrabber.repositories.* -import awais.instagrabber.repositories.responses.* import awais.instagrabber.webservices.* import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) internal class ProfileFragmentViewModelTest { - private val userService = object : UserService { - override suspend fun getUserInfo(uid: Long): WrappedUser { - TODO("Not yet implemented") - } - - override suspend fun getUsernameInfo(username: String): WrappedUser { - TODO("Not yet implemented") - } - - override suspend fun getUserFriendship(uid: Long): FriendshipStatus { - TODO("Not yet implemented") - } - - override suspend fun search(timezoneOffset: Float, query: String): UserSearchResponse { - TODO("Not yet implemented") - } - } - - private val friendshipService = object : FriendshipService { - override suspend fun change(action: String, id: Long, form: Map): FriendshipChangeResponse { - TODO("Not yet implemented") - } - - override suspend fun toggleRestrict(action: String, form: Map): FriendshipRestrictResponse { - TODO("Not yet implemented") - } - - override suspend fun getList(userId: Long, type: String, queryParams: Map): String { - TODO("Not yet implemented") - } - - override suspend fun changeMute(action: String, form: Map): FriendshipChangeResponse { - TODO("Not yet implemented") - } - } - - private val storiesService = object : StoriesService { - override suspend fun fetch(mediaId: Long): String { - TODO("Not yet implemented") - } - - override suspend fun getFeedStories(): String { - TODO("Not yet implemented") - } - - override suspend fun fetchHighlights(uid: Long): String { - TODO("Not yet implemented") - } - - override suspend fun fetchArchive(queryParams: Map): String { - TODO("Not yet implemented") - } - - override suspend fun getUserStory(url: String): String { - TODO("Not yet implemented") - } - - override suspend fun respondToSticker(storyId: String, stickerId: String, action: String, form: Map): StoryStickerResponse { - TODO("Not yet implemented") - } - - override suspend fun seen(queryParams: Map, form: Map): String { - TODO("Not yet implemented") - } - } - - private val mediaService = object : MediaService { - override suspend fun fetch(mediaId: Long): MediaInfoResponse { - TODO("Not yet implemented") - } - - override suspend fun fetchLikes(mediaId: String, action: String): LikersResponse { - TODO("Not yet implemented") - } - - override suspend fun action(action: String, mediaId: String, signedForm: Map): String { - TODO("Not yet implemented") - } - - override suspend fun editCaption(mediaId: String, signedForm: Map): String { - TODO("Not yet implemented") - } - - override suspend fun translate(form: Map): String { - TODO("Not yet implemented") - } - - override suspend fun uploadFinish(retryContext: String, queryParams: Map, signedForm: Map): String { - TODO("Not yet implemented") - } - - override suspend fun delete(mediaId: String, mediaType: String, signedForm: Map): String { - TODO("Not yet implemented") - } - - override suspend fun archive(mediaId: String, signedForm: Map): String { - TODO("Not yet implemented") - } - } - - private val graphQLService = object : GraphQLService { - override suspend fun fetch(queryParams: Map): String { - TODO("Not yet implemented") - } - - override suspend fun getUser(username: String): String { - TODO("Not yet implemented") - } - - override suspend fun getPost(shortcode: String): String { - TODO("Not yet implemented") - } - - override suspend fun getTag(tag: String): String { - TODO("Not yet implemented") - } - - override suspend fun getLocation(locationId: Long): String { - TODO("Not yet implemented") - } - } - - private val accountDao = object : AccountDao{ - override suspend fun getAllAccounts(): List { - TODO("Not yet implemented") - } - - override suspend fun findAccountByUid(uid: String): Account? { - TODO("Not yet implemented") - } - - override suspend fun insertAccounts(vararg accounts: Account) { - TODO("Not yet implemented") - } - - override suspend fun updateAccounts(vararg accounts: Account) { - TODO("Not yet implemented") - } - - override suspend fun deleteAccounts(vararg accounts: Account) { - TODO("Not yet implemented") - } - - override suspend fun deleteAllAccounts() { - TODO("Not yet implemented") - } - } - @Test fun testNoUsernameNoCurrentUser() { val state = SavedStateHandle( @@ -169,12 +18,12 @@ internal class ProfileFragmentViewModelTest { "username" to "" ) ) - val userRepository = UserRepository(userService) - val friendshipRepository = FriendshipRepository(friendshipService) - val storiesRepository = StoriesRepository(storiesService) - val mediaRepository = MediaRepository(mediaService) - val graphQLRepository = GraphQLRepository(graphQLService) - val accountDataSource = AccountDataSource(accountDao) + val userRepository = UserRepository(UserServiceAdapter()) + val friendshipRepository = FriendshipRepository(FriendshipServiceAdapter()) + val storiesRepository = StoriesRepository(StoriesServiceAdapter()) + val mediaRepository = MediaRepository(MediaServiceAdapter()) + val graphQLRepository = GraphQLRepository(GraphQLServiceAdapter()) + val accountDataSource = AccountDataSource(AccountDaoAdapter()) val accountRepository = AccountRepository(accountDataSource) val viewModel = ProfileFragmentViewModel( state,