TP-62302 | Forge API Migration from Query to Path (#10251)

This commit is contained in:
Shivam Goyal
2024-03-28 20:56:53 +05:30
committed by GitHub
parent 274cc668a4
commit cf1cb32d76
17 changed files with 389 additions and 281 deletions

View File

@@ -1,23 +1,33 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.naviapp.common.tab
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.network.retrofit.ResponseCallback
import com.navi.common.utils.Constants
import com.navi.common.utils.Constants.GZIP
import com.navi.insurance.common.models.InsuranceTabResponse
import com.naviapp.network.di.SuperAppRetroFit
import com.naviapp.network.retrofit.RetrofitService
import javax.inject.Inject
class InsuranceTabRepository @Inject constructor(@SuperAppRetroFit private val apiService: RetrofitService) :
ResponseCallback() {
class InsuranceTabRepository
@Inject
constructor(@SuperAppRetroFit private val apiService: RetrofitService) : ResponseCallback() {
private val insuranceTabId = "INSURANCE_DASHBOARD"
private val acceptEncoding = Constants.GZIP
suspend fun fetchInsuranceTabPage(): RepoResult<InsuranceTabResponse> {
return apiResponseCallback(
apiService.fetchInsuranceTabForgeScreen(
acceptEncoding, insuranceTabId, ModuleNameV2.FORGE.name
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = insuranceTabId,
)
)
}
}
}

View File

@@ -1,23 +1,34 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.naviapp.common.tab
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.network.retrofit.ResponseCallback
import com.navi.common.utils.Constants
import com.navi.common.utils.Constants.GZIP
import com.naviapp.common.tab.insurance.model.TrialInsuranceDashboardPageResponse
import com.naviapp.network.di.SuperAppRetroFit
import com.naviapp.network.retrofit.RetrofitService
import javax.inject.Inject
class TrialInsuranceDashboardRepository @Inject constructor(@SuperAppRetroFit private val apiService: RetrofitService) :
ResponseCallback() {
class TrialInsuranceDashboardRepository
@Inject
constructor(@SuperAppRetroFit private val apiService: RetrofitService) : ResponseCallback() {
private val trialInsuranceDashboardId = "GI_TRIAL_DASHBOARD"
private val acceptEncoding = Constants.GZIP
suspend fun fetchTrialInsuranceDashboardResponse(): RepoResult<TrialInsuranceDashboardPageResponse> {
suspend fun fetchTrialInsuranceDashboardResponse():
RepoResult<TrialInsuranceDashboardPageResponse> {
return apiResponseCallback(
apiService.fetchTrialDashboardForgeScreen(
acceptEncoding, trialInsuranceDashboardId, ModuleNameV2.FORGE.name
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = trialInsuranceDashboardId,
)
)
}
}
}

View File

@@ -1,6 +1,6 @@
/*
*
* * Copyright © 2023 by Navi Technologies Limited
* * Copyright © 2023-2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
@@ -9,6 +9,7 @@ package com.naviapp.forge.repository
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.utils.Constants.GZIP
import com.naviapp.forge.model.ScreenDefinition
import com.naviapp.network.di.SuperAppRetroFit
import com.naviapp.network.retrofit.ResponseCallback
@@ -23,8 +24,9 @@ constructor(@SuperAppRetroFit private val superAppRetrofitService: RetrofitServi
suspend fun fetchForgeScreen(screenId: String): RepoResult<ScreenDefinition> =
apiResponseCallback(
superAppRetrofitService.fetchForgeScreen(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = screenId,
target = ModuleNameV2.FORGE.name
)
)
}

View File

@@ -1,7 +1,15 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.naviapp.home.dashboard.repo
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.utils.Constants.GZIP
import com.naviapp.forge.model.ScreenDefinition
import com.naviapp.network.di.SuperAppRetroFit
import com.naviapp.network.retrofit.ResponseCallback
@@ -9,14 +17,17 @@ import com.naviapp.network.retrofit.RetrofitService
import com.naviapp.utils.Constants.INVESTMENT_TAB_SCREEN
import javax.inject.Inject
class InvestmentTabV2Repository @Inject constructor(@SuperAppRetroFit private val superAppRetrofitService: RetrofitService) :
class InvestmentTabV2Repository
@Inject
constructor(@SuperAppRetroFit private val superAppRetrofitService: RetrofitService) :
ResponseCallback() {
suspend fun fetchInvestmentsTabUiTronConfigs(): RepoResult<ScreenDefinition> {
return apiResponseCallback(
superAppRetrofitService.fetchForgeScreen(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = INVESTMENT_TAB_SCREEN
screenId = INVESTMENT_TAB_SCREEN,
)
)
}
}
}

View File

@@ -1,21 +1,20 @@
/*
*
* * Copyright © 2023 by Navi Technologies Limited
* * Copyright © 2023-2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.naviapp.home.respository
import com.google.gson.reflect.TypeToken
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.utils.Constants.GZIP
import com.naviapp.home.model.NotificationScreenDefinition
import com.naviapp.home.model.NotificationUpdateStatus
import com.naviapp.network.di.SuperAppRetroFit
import com.naviapp.network.retrofit.ResponseCallback
import com.naviapp.network.retrofit.RetrofitService
import com.naviapp.utils.mockApiResponse
import javax.inject.Inject
class NotificationRepository
@@ -28,8 +27,9 @@ constructor(@SuperAppRetroFit private val superAppRetrofitService: RetrofitServi
): RepoResult<NotificationScreenDefinition> =
apiResponseCallback(
superAppRetrofitService.fetchNotificationForgeScreen(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = screenId,
target = ModuleNameV2.FORGE.name
)
)

View File

@@ -1,6 +1,6 @@
/*
*
* * Copyright © 2019-2023 by Navi Technologies Limited
* * Copyright © 2019-2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
@@ -38,7 +38,6 @@ import com.navi.common.model.UserSms
import com.navi.common.model.common.WidgetResponse
import com.navi.common.network.models.GenericResponse
import com.navi.common.useruploaddata.model.IngestionStatusBody
import com.navi.common.utils.Constants
import com.navi.common.utils.Constants.AVAILABLE_APP_VERSION_CODE
import com.navi.common.utils.Constants.BOTTOM_NAV_BAR_ENDPOINT
import com.navi.common.utils.Constants.HEADER_CONNECTIVITY_TYPE
@@ -1998,16 +1997,18 @@ interface RetrofitService {
@Header("X-Target") target: String
): Response<GenericResponse<TrialInsuranceDashboardPageResponse>>
@GET("/forge/screen")
@GET("/forge/screen/{screenId}")
suspend fun fetchForgeScreen(
@Query("screenId") screenId: String?,
@Header("X-Target") target: String
@Header("Accept-Encoding") acceptEncoding: String,
@Header("X-Target") target: String,
@Path("screenId") screenId: String
): Response<GenericResponse<ScreenDefinition>>
@GET("/forge/screen")
@GET("/forge/screen/{screenId}")
suspend fun fetchNotificationForgeScreen(
@Header("Accept-Encoding") acceptEncoding: String,
@Header("X-Target") target: String,
@Query("screenId") screenId: String?
@Path("screenId") screenId: String
): Response<GenericResponse<NotificationScreenDefinition>>
@POST("/notification/bulk/delivery-events")
@@ -2019,15 +2020,15 @@ interface RetrofitService {
@GET("/forge/screen/{screenId}")
suspend fun fetchInsuranceTabForgeScreen(
@Header("Accept-Encoding") acceptEncoding: String,
@Path("screenId") screenId: String,
@Header("X-Target") target: String
@Header("X-Target") target: String,
@Path("screenId") screenId: String
): Response<GenericResponse<InsuranceTabResponse>>
@GET("/forge/screen/{screenId}")
suspend fun fetchTrialDashboardForgeScreen(
@Header("Accept-Encoding") acceptEncoding: String,
@Path("screenId") screenId: String,
@Header("X-Target") target: String
@Header("X-Target") target: String,
@Path("screenId") screenId: String
): Response<GenericResponse<TrialInsuranceDashboardPageResponse>>
@POST("/kruz/proxy/callback")

View File

@@ -1,3 +1,10 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.coin.network.retrofit
import com.navi.coin.models.RedemptionInfoResponse
@@ -10,7 +17,6 @@ import com.navi.coin.models.VpaValidation
import com.navi.common.forge.model.ScreenDefinition
import com.navi.common.model.UploadDataAsyncResponse
import com.navi.common.network.models.GenericResponse
import com.navi.common.utils.Constants.GZIP
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.GET
@@ -36,9 +42,9 @@ interface RetrofitService {
@GET("/forge/screen/{screenId}")
suspend fun fetchScreenUiTronConfigs(
@Header("Accept-Encoding") acceptEncoding: String = GZIP,
@Header("X-Target") target: String?,
@Path("screenId") screenId: String?
@Header("Accept-Encoding") acceptEncoding: String,
@Header("X-Target") target: String,
@Path("screenId") screenId: String
): Response<GenericResponse<ScreenDefinition>>
@GET("/reward-service/scratch-card/history")
@@ -67,7 +73,7 @@ interface RetrofitService {
@POST("/gullak/v1/redemption/redeem")
suspend fun redeemCoins(
@Body redemptionRequest : RedemptionRequest,
@Body redemptionRequest: RedemptionRequest,
@Header("X-Target") target: String
): Response<GenericResponse<RedemptionResponse>>
@@ -76,4 +82,4 @@ interface RetrofitService {
@Header("X-Target") target: String,
@Query("txnId") txnId: String
): Response<GenericResponse<RedemptionStatusResponse>>
}
}

View File

@@ -1,3 +1,10 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.coin.repo
import com.navi.coin.models.TransactionHistoryResponse
@@ -8,29 +15,35 @@ import com.navi.common.forge.model.ScreenDefinition
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.network.retrofit.ResponseCallback
import com.navi.common.utils.Constants.GZIP
import javax.inject.Inject
class CoinHistoryScreenRepo @Inject constructor(private val retrofitService: RetrofitService) :
ResponseCallback() {
suspend fun fetchCoinHistoryScreenCoinBalanceUiTronConfigs() : RepoResult<ScreenDefinition> {
ResponseCallback() {
suspend fun fetchCoinHistoryScreenCoinBalanceUiTronConfigs(): RepoResult<ScreenDefinition> {
return apiResponseCallback(
retrofitService.fetchScreenUiTronConfigs(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = TRANSACTION_HISTORY_COINS_SCREEN_NAME
)
)
}
suspend fun fetchCoinHistoryScreenCashRewardsUiTronConfigs() : RepoResult<ScreenDefinition> {
suspend fun fetchCoinHistoryScreenCashRewardsUiTronConfigs(): RepoResult<ScreenDefinition> {
return apiResponseCallback(
retrofitService.fetchScreenUiTronConfigs(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = TRANSACTION_HISTORY_CASH_SCREEN_NAME
)
)
}
suspend fun fetchCoinsListData(pageNo: Int, pageSize: Int) : RepoResult<TransactionHistoryResponse> {
suspend fun fetchCoinsListData(
pageNo: Int,
pageSize: Int
): RepoResult<TransactionHistoryResponse> {
return apiResponseCallback(
retrofitService.getCoinTransactions(
target = ModuleNameV2.COIN.name,
@@ -40,7 +53,10 @@ ResponseCallback() {
)
}
suspend fun fetchCashListData(pageNo: Int, pageSize: Int) : RepoResult<TransactionHistoryResponse> {
suspend fun fetchCashListData(
pageNo: Int,
pageSize: Int
): RepoResult<TransactionHistoryResponse> {
return apiResponseCallback(
retrofitService.getRewardsTransactions(
target = ModuleNameV2.REWARDS.name,
@@ -49,4 +65,4 @@ ResponseCallback() {
)
)
}
}
}

View File

@@ -1,3 +1,10 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.coin.repo
import com.navi.coin.models.RedemptionRequest
@@ -6,61 +13,66 @@ import com.navi.coin.utils.Constants.SCREENS.COINS_LOADING_SCREEN_SCREEN_NAME
import com.navi.coin.utils.Constants.SCREENS.COINS_SCREEN_SCREEN_NAME
import com.navi.common.model.ModuleName
import com.navi.common.model.ModuleNameV2
import com.navi.common.utils.Constants.GZIP
import com.navi.rr.network.retrofit.ResponseHandler
import javax.inject.Inject
class CoinHomeScreenRepo @Inject constructor(
class CoinHomeScreenRepo
@Inject
constructor(
private val responseHandler: ResponseHandler,
private val retrofitService: RetrofitService,
) {
suspend fun fetchCoinHomeScreenUiTronConfigs() = responseHandler.handleResponse(
retrofitService.fetchScreenUiTronConfigs(
target = ModuleNameV2.FORGE.name,
screenId = COINS_SCREEN_SCREEN_NAME
)
)
suspend fun validateUPIId(upiId: String) = responseHandler.handleResponse(
retrofitService.validateUPIId(
target = ModuleName.REWARD_PAYOUT.name,
upiId = upiId
)
)
suspend fun getUpiIdValidationStatus(requestId: String) = responseHandler.handleResponse(
retrofitService.getUpiIdValidationStatus(
target = ModuleName.REWARD_PAYOUT.name,
requestId = requestId
)
)
suspend fun fetchCoinHomeScreenLoadingStateUiTronConfigs() = responseHandler.handleResponse(
retrofitService.fetchScreenUiTronConfigs(
target = ModuleNameV2.FORGE.name,
screenId = COINS_LOADING_SCREEN_SCREEN_NAME
)
)
suspend fun getRedemptionInfo() = responseHandler.handleResponse(
retrofitService.getRedemptionInfo(
target = ModuleNameV2.COIN.name,
suspend fun fetchCoinHomeScreenUiTronConfigs() =
responseHandler.handleResponse(
retrofitService.fetchScreenUiTronConfigs(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = COINS_SCREEN_SCREEN_NAME
)
)
)
suspend fun validateUPIId(upiId: String) =
responseHandler.handleResponse(
retrofitService.validateUPIId(target = ModuleName.REWARD_PAYOUT.name, upiId = upiId)
)
suspend fun getUpiIdValidationStatus(requestId: String) =
responseHandler.handleResponse(
retrofitService.getUpiIdValidationStatus(
target = ModuleName.REWARD_PAYOUT.name,
requestId = requestId
)
)
suspend fun fetchCoinHomeScreenLoadingStateUiTronConfigs() =
responseHandler.handleResponse(
retrofitService.fetchScreenUiTronConfigs(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = COINS_LOADING_SCREEN_SCREEN_NAME
)
)
suspend fun getRedemptionInfo() =
responseHandler.handleResponse(
retrofitService.getRedemptionInfo(
target = ModuleNameV2.COIN.name,
)
)
suspend fun redeemCoins(
redemptionRequest: RedemptionRequest,
) = responseHandler.handleResponse(
retrofitService.redeemCoins(
target = ModuleNameV2.COIN.name,
redemptionRequest = redemptionRequest
) =
responseHandler.handleResponse(
retrofitService.redeemCoins(
target = ModuleNameV2.COIN.name,
redemptionRequest = redemptionRequest
)
)
)
suspend fun getRedemptionStatus(txnId: String) = responseHandler.handleResponse(
retrofitService.getRedemptionStatus(
target = ModuleNameV2.COIN.name,
txnId = txnId
suspend fun getRedemptionStatus(txnId: String) =
responseHandler.handleResponse(
retrofitService.getRedemptionStatus(target = ModuleNameV2.COIN.name, txnId = txnId)
)
)
}
}

View File

@@ -14,21 +14,27 @@ import com.navi.common.forge.model.ScreenDefinition
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.network.retrofit.ResponseCallback
import com.navi.common.utils.Constants.GZIP
import javax.inject.Inject
class ScratchCardHistoryScreenRepo
@Inject
constructor(private val retrofitService: RetrofitService) : ResponseCallback() {
class ScratchCardHistoryScreenRepo @Inject constructor(private val retrofitService: RetrofitService) :
ResponseCallback() {
suspend fun fetchScratchCardUiTronConfigs() : RepoResult<ScreenDefinition> {
suspend fun fetchScratchCardUiTronConfigs(): RepoResult<ScreenDefinition> {
return apiResponseCallback(
retrofitService.fetchScreenUiTronConfigs(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = REWARD_HISTORY_SCRATCH_CARD_SCREEN_NAME
)
)
}
suspend fun fetchScratchCardListData(pageNo: Int, pageSize: Int) : RepoResult<ScratchCardHistoryResponse> {
suspend fun fetchScratchCardListData(
pageNo: Int,
pageSize: Int
): RepoResult<ScratchCardHistoryResponse> {
return apiResponseCallback(
retrofitService.fetchScratchCardHistoryList(
target = ModuleNameV2.REWARDS.name,
@@ -37,4 +43,4 @@ class ScratchCardHistoryScreenRepo @Inject constructor(private val retrofitServi
)
)
}
}
}

View File

@@ -1,3 +1,10 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.coins.repo
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
@@ -13,6 +20,7 @@ import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.GenericResponse
import com.navi.common.network.models.RepoResult
import com.navi.common.network.retrofit.ResponseCallback
import com.navi.common.utils.Constants.GZIP
import io.mockk.MockKAnnotations
import io.mockk.coEvery
import io.mockk.every
@@ -30,15 +38,11 @@ import retrofit2.Response
@RunWith(JUnit4::class)
class CoinHistoryScreenRepoTest {
@RelaxedMockK
private lateinit var superAppRetrofitService: RetrofitService
@RelaxedMockK
private lateinit var responseCallback: ResponseCallback
@RelaxedMockK private lateinit var superAppRetrofitService: RetrofitService
@RelaxedMockK private lateinit var responseCallback: ResponseCallback
private lateinit var repository: CoinHistoryScreenRepo
@get:Rule
var rule: TestRule = InstantTaskExecutorRule()
@InternalCoroutinesApi
lateinit var testDispatcher: TestDispatcher
@get:Rule var rule: TestRule = InstantTaskExecutorRule()
@InternalCoroutinesApi lateinit var testDispatcher: TestDispatcher
@OptIn(InternalCoroutinesApi::class)
@Before
@@ -49,110 +53,110 @@ class CoinHistoryScreenRepoTest {
@OptIn(InternalCoroutinesApi::class)
@Test
fun testFetchCoinHistoryScreenCoinBalanceUiTronConfigs() = runBlocking(testDispatcher) {
repository = CoinHistoryScreenRepo(superAppRetrofitService)
// Mock Retrofit response
val expectedResponse = ScreenDefinition(screenStructure = ScreenStructure(screenId = "1"))
val response = Response.success(GenericResponse(data = expectedResponse))
val convertedResponse: Response<GenericResponse<ScreenDefinition>> =
Response.success(response.body()!!)
convertedResponse.body()?.statusCode = 200
coEvery {
superAppRetrofitService.fetchScreenUiTronConfigs(
target = ModuleNameV2.FORGE.name,
screenId = Constants.SCREENS.TRANSACTION_HISTORY_COINS_SCREEN_NAME
)
} returns convertedResponse
every { responseCallback.apiResponseCallback(response) } returns RepoResult(
data = expectedResponse,
statusCode = 200
)
// Call the function to be tested
val result = repository.fetchCoinHistoryScreenCoinBalanceUiTronConfigs()
// Assert the result
Assert.assertEquals(result.data == expectedResponse, true)
}
fun testFetchCoinHistoryScreenCoinBalanceUiTronConfigs() =
runBlocking(testDispatcher) {
repository = CoinHistoryScreenRepo(superAppRetrofitService)
// Mock Retrofit response
val expectedResponse =
ScreenDefinition(screenStructure = ScreenStructure(screenId = "1"))
val response = Response.success(GenericResponse(data = expectedResponse))
val convertedResponse: Response<GenericResponse<ScreenDefinition>> =
Response.success(response.body()!!)
convertedResponse.body()?.statusCode = 200
coEvery {
superAppRetrofitService.fetchScreenUiTronConfigs(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = Constants.SCREENS.TRANSACTION_HISTORY_COINS_SCREEN_NAME
)
} returns convertedResponse
every { responseCallback.apiResponseCallback(response) } returns
RepoResult(data = expectedResponse, statusCode = 200)
// Call the function to be tested
val result = repository.fetchCoinHistoryScreenCoinBalanceUiTronConfigs()
// Assert the result
Assert.assertEquals(result.data == expectedResponse, true)
}
@OptIn(InternalCoroutinesApi::class)
@Test
fun testFetchCoinHistoryScreenCashRewardsUiTronConfigs() = runBlocking(testDispatcher) {
repository = CoinHistoryScreenRepo(superAppRetrofitService)
// Mock Retrofit response
val expectedResponse = ScreenDefinition(screenStructure = ScreenStructure(screenId = "1"))
val response = Response.success(GenericResponse(data = expectedResponse))
val convertedResponse: Response<GenericResponse<ScreenDefinition>> =
Response.success(response.body()!!)
convertedResponse.body()?.statusCode = 200
coEvery {
superAppRetrofitService.fetchScreenUiTronConfigs(
target = ModuleNameV2.FORGE.name,
screenId = Constants.SCREENS.TRANSACTION_HISTORY_CASH_SCREEN_NAME
)
} returns convertedResponse
every { responseCallback.apiResponseCallback(response) } returns RepoResult(
data = expectedResponse,
statusCode = 200
)
// Call the function to be tested
val result = repository.fetchCoinHistoryScreenCashRewardsUiTronConfigs()
// Assert the result
Assert.assertEquals(result.data == expectedResponse, true)
}
fun testFetchCoinHistoryScreenCashRewardsUiTronConfigs() =
runBlocking(testDispatcher) {
repository = CoinHistoryScreenRepo(superAppRetrofitService)
// Mock Retrofit response
val expectedResponse =
ScreenDefinition(screenStructure = ScreenStructure(screenId = "1"))
val response = Response.success(GenericResponse(data = expectedResponse))
val convertedResponse: Response<GenericResponse<ScreenDefinition>> =
Response.success(response.body()!!)
convertedResponse.body()?.statusCode = 200
coEvery {
superAppRetrofitService.fetchScreenUiTronConfigs(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = Constants.SCREENS.TRANSACTION_HISTORY_CASH_SCREEN_NAME
)
} returns convertedResponse
every { responseCallback.apiResponseCallback(response) } returns
RepoResult(data = expectedResponse, statusCode = 200)
// Call the function to be tested
val result = repository.fetchCoinHistoryScreenCashRewardsUiTronConfigs()
// Assert the result
Assert.assertEquals(result.data == expectedResponse, true)
}
@OptIn(InternalCoroutinesApi::class)
@Test
fun testFetchCoinsListData() = runBlocking(testDispatcher) {
repository = CoinHistoryScreenRepo(superAppRetrofitService)
// Mock Retrofit response
val expectedResponse =
TransactionHistoryResponse(coinHistoryList = listOf(TransactionHistoryCardData("@311")))
val response = Response.success(GenericResponse(data = expectedResponse))
val convertedResponse: Response<GenericResponse<TransactionHistoryResponse>> =
Response.success(response.body()!!)
convertedResponse.body()?.statusCode = 200
coEvery {
superAppRetrofitService.getCoinTransactions(
target = ModuleNameV2.COIN.name,
pageNumber = "1",
pageSize = "1"
)
} returns convertedResponse
every { responseCallback.apiResponseCallback(response) } returns RepoResult(
data = expectedResponse,
statusCode = 200
)
// Call the function to be tested
val result = repository.fetchCoinsListData(1, 1)
// Assert the result
Assert.assertEquals(result.data == expectedResponse, true)
}
fun testFetchCoinsListData() =
runBlocking(testDispatcher) {
repository = CoinHistoryScreenRepo(superAppRetrofitService)
// Mock Retrofit response
val expectedResponse =
TransactionHistoryResponse(
coinHistoryList = listOf(TransactionHistoryCardData("@311"))
)
val response = Response.success(GenericResponse(data = expectedResponse))
val convertedResponse: Response<GenericResponse<TransactionHistoryResponse>> =
Response.success(response.body()!!)
convertedResponse.body()?.statusCode = 200
coEvery {
superAppRetrofitService.getCoinTransactions(
target = ModuleNameV2.COIN.name,
pageNumber = "1",
pageSize = "1"
)
} returns convertedResponse
every { responseCallback.apiResponseCallback(response) } returns
RepoResult(data = expectedResponse, statusCode = 200)
// Call the function to be tested
val result = repository.fetchCoinsListData(1, 1)
// Assert the result
Assert.assertEquals(result.data == expectedResponse, true)
}
@OptIn(InternalCoroutinesApi::class)
@Test
fun testFetchCashListData() = runBlocking(testDispatcher) {
repository = CoinHistoryScreenRepo(superAppRetrofitService)
val expectedResponse =
TransactionHistoryResponse(coinHistoryList = listOf(TransactionHistoryCardData("@31123")))
val response = Response.success(GenericResponse(data = expectedResponse))
val convertedResponse: Response<GenericResponse<TransactionHistoryResponse>> =
Response.success(response.body()!!)
convertedResponse.body()?.statusCode = 200
coEvery {
superAppRetrofitService.getRewardsTransactions(
target = ModuleNameV2.REWARDS.name,
pageNumber = "1",
pageSize = "1"
)
} returns convertedResponse
every { responseCallback.apiResponseCallback(response) } returns RepoResult(
data = expectedResponse,
statusCode = 200
)
val result = repository.fetchCashListData(1, 1)
Assert.assertEquals(result.data == expectedResponse, true)
}
}
fun testFetchCashListData() =
runBlocking(testDispatcher) {
repository = CoinHistoryScreenRepo(superAppRetrofitService)
val expectedResponse =
TransactionHistoryResponse(
coinHistoryList = listOf(TransactionHistoryCardData("@31123"))
)
val response = Response.success(GenericResponse(data = expectedResponse))
val convertedResponse: Response<GenericResponse<TransactionHistoryResponse>> =
Response.success(response.body()!!)
convertedResponse.body()?.statusCode = 200
coEvery {
superAppRetrofitService.getRewardsTransactions(
target = ModuleNameV2.REWARDS.name,
pageNumber = "1",
pageSize = "1"
)
} returns convertedResponse
every { responseCallback.apiResponseCallback(response) } returns
RepoResult(data = expectedResponse, statusCode = 200)
val result = repository.fetchCashListData(1, 1)
Assert.assertEquals(result.data == expectedResponse, true)
}
}

View File

@@ -1,3 +1,10 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.coins.repo
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
@@ -11,6 +18,8 @@ import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.GenericResponse
import com.navi.common.network.models.RepoResult
import com.navi.common.network.retrofit.ResponseCallback
import com.navi.common.utils.Constants.GZIP
import com.navi.rr.network.retrofit.ResponseHandler
import io.mockk.MockKAnnotations
import io.mockk.coEvery
import io.mockk.every
@@ -29,16 +38,12 @@ import retrofit2.Response
@RunWith(JUnit4::class)
class CoinHomeScreenRepoTest {
@RelaxedMockK
private lateinit var superAppRetrofitService: RetrofitService
@RelaxedMockK
private lateinit var responseCallback: ResponseCallback
@RelaxedMockK
private lateinit var repository: CoinHomeScreenRepo
@get:Rule
var rule: TestRule = InstantTaskExecutorRule()
@InternalCoroutinesApi
lateinit var testDispatcher: TestDispatcher
@RelaxedMockK private lateinit var superAppRetrofitService: RetrofitService
@RelaxedMockK private lateinit var responseHandler: ResponseHandler
@RelaxedMockK private lateinit var responseCallback: ResponseCallback
@RelaxedMockK private lateinit var repository: CoinHomeScreenRepo
@get:Rule var rule: TestRule = InstantTaskExecutorRule()
@InternalCoroutinesApi lateinit var testDispatcher: TestDispatcher
@OptIn(InternalCoroutinesApi::class)
@Before
@@ -49,27 +54,28 @@ class CoinHomeScreenRepoTest {
@OptIn(InternalCoroutinesApi::class)
@Test
fun testFetchScreenUiTronConfigs() = runBlocking(testDispatcher) {
repository = CoinHomeScreenRepo(superAppRetrofitService)
// Mock Retrofit response
val expectedResponse = ScreenDefinition(screenStructure = ScreenStructure(screenId = "1"))
val response = Response.success(GenericResponse(data = expectedResponse))
val convertedResponse: Response<GenericResponse<ScreenDefinition>> =
Response.success(response.body()!!)
convertedResponse.body()?.statusCode = 200
coEvery {
superAppRetrofitService.fetchScreenUiTronConfigs(
target = ModuleNameV2.FORGE.name,
screenId = Constants.SCREENS.COINS_SCREEN_SCREEN_NAME
)
} returns convertedResponse
every { responseCallback.apiResponseCallback(response) } returns RepoResult(
data = expectedResponse,
statusCode = 200
)
// Call the function to be tested
val result = repository.fetchCoinHomeScreenUiTronConfigs()
// Assert the result
Assert.assertEquals(result.data == expectedResponse, true)
}
}
fun testFetchScreenUiTronConfigs() =
runBlocking(testDispatcher) {
repository = CoinHomeScreenRepo(responseHandler, superAppRetrofitService)
// Mock Retrofit response
val expectedResponse =
ScreenDefinition(screenStructure = ScreenStructure(screenId = "1"))
val response = Response.success(GenericResponse(data = expectedResponse))
val convertedResponse: Response<GenericResponse<ScreenDefinition>> =
Response.success(response.body()!!)
convertedResponse.body()?.statusCode = 200
coEvery {
superAppRetrofitService.fetchScreenUiTronConfigs(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = Constants.SCREENS.COINS_SCREEN_SCREEN_NAME
)
} returns convertedResponse
every { responseCallback.apiResponseCallback(response) } returns
RepoResult(data = expectedResponse, statusCode = 200)
// Call the function to be tested
val result = repository.fetchCoinHomeScreenUiTronConfigs()
// Assert the result
Assert.assertEquals(result.data == expectedResponse, true)
}
}

View File

@@ -1,9 +1,17 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.rr.leaderboard.repo
import com.navi.common.forge.model.ScreenDefinition
import com.navi.common.model.ModuleName
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.utils.Constants.GZIP
import com.navi.rr.common.constants.FORGE_LEADERBOARD_SCREEN
import com.navi.rr.leaderboard.models.LeaderboardListResponse
import com.navi.rr.network.di.SuperAppRetrofitForRR
@@ -11,21 +19,24 @@ import com.navi.rr.network.retrofit.ResponseHandler
import com.navi.rr.network.retrofit.RetrofitService
import javax.inject.Inject
class LeaderboardScreenRepo @Inject constructor(
class LeaderboardScreenRepo
@Inject
constructor(
private val responseHandler: ResponseHandler,
@SuperAppRetrofitForRR private val retrofitService: RetrofitService,
) {
suspend fun fetchReferralForgeScreen() : RepoResult<ScreenDefinition> {
suspend fun fetchReferralForgeScreen(): RepoResult<ScreenDefinition> {
return responseHandler.handleResponse(
retrofitService.fetchForgeScreen(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = FORGE_LEADERBOARD_SCREEN
)
)
}
suspend fun fetchLeaderboardList(userEntered : Boolean) : RepoResult<LeaderboardListResponse> {
suspend fun fetchLeaderboardList(userEntered: Boolean): RepoResult<LeaderboardListResponse> {
return responseHandler.handleResponse(
retrofitService.fetchLeaderboardList(
target = ModuleName.REFERRAL.name,
@@ -33,5 +44,4 @@ class LeaderboardScreenRepo @Inject constructor(
)
)
}
}
}

View File

@@ -1,6 +1,6 @@
/*
*
* * Copyright © 2023 by Navi Technologies Limited
* * Copyright © 2023-2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
@@ -12,7 +12,6 @@ import com.navi.common.model.ActionCheckResponse
import com.navi.common.model.common.WidgetResponse
import com.navi.common.network.models.GenericResponse
import com.navi.common.utils.Constants
import com.navi.common.utils.Constants.GZIP
import com.navi.naviwidgets.models.response.CSATResponse
import com.navi.rr.common.models.ABSettings
import com.navi.rr.common.models.RRWidgetResponse
@@ -29,12 +28,18 @@ import com.navi.rr.tds.models.TdsKycVerifyRequest
import com.navi.rr.upi.models.RegisterUpiRequestModel
import com.navi.rr.upi.models.UpiValidationResponse
import retrofit2.Response
import retrofit2.http.*
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.POST
import retrofit2.http.PUT
import retrofit2.http.Path
import retrofit2.http.Query
import retrofit2.http.QueryMap
interface RetrofitService {
@GET("/referral/v1/profile")
suspend fun getReferralDetails(
): Response<GenericResponse<RRWidgetResponse>>
suspend fun getReferralDetails(): Response<GenericResponse<RRWidgetResponse>>
@GET("/referral-service/v2/referral")
suspend fun fetchRefereeTrackerDetails(
@@ -113,7 +118,6 @@ interface RetrofitService {
@Query("productId") productId: String?
): Response<GenericResponse<CSATResponse>>
@POST("/reward-service/kyc/verify-kyc")
suspend fun getKycVerifyPollingDetails(
@Body kycVerifyRequest: TdsKycVerifyRequest?,
@@ -132,9 +136,9 @@ interface RetrofitService {
@GET("/forge/screen/{screenId}")
suspend fun fetchForgeScreen(
@Header("Accept-Encoding") acceptEncoding: String = GZIP,
@Header("X-Target") target: String?,
@Path("screenId") screenId: String?
@Header("Accept-Encoding") acceptEncoding: String,
@Header("X-Target") target: String,
@Path("screenId") screenId: String
): Response<GenericResponse<ScreenDefinition>>
@GET("/referral-service/leaderboard/referral-leaderboard/rank-list")

View File

@@ -1,6 +1,6 @@
/*
*
* * Copyright © 2022-2023 by Navi Technologies Limited
* * Copyright © 2022-2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
@@ -11,6 +11,7 @@ import com.navi.common.forge.model.ScreenDefinition
import com.navi.common.model.ModuleName
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.utils.Constants.GZIP
import com.navi.rr.common.constants.FORGE_REFEREE_TRACKER_SCREEN
import com.navi.rr.common.constants.FORGE_REFEREE_TRACKER_SCREEN_V2
import com.navi.rr.network.di.SuperAppRetrofitForRR
@@ -18,7 +19,9 @@ import com.navi.rr.network.retrofit.ResponseHandler
import com.navi.rr.network.retrofit.RetrofitService
import javax.inject.Inject
class RefereeTrackerRepo @Inject constructor(
class RefereeTrackerRepo
@Inject
constructor(
private val responseHandler: ResponseHandler,
@SuperAppRetrofitForRR private val retrofitService: RetrofitService,
) {
@@ -30,30 +33,28 @@ class RefereeTrackerRepo @Inject constructor(
)
}
suspend fun fetchRefereeTrackerDetails(
pageNo: Int,
pageSize: Int
) = responseHandler.handleResponse(
retrofitService.fetchRefereeTrackerDetails(
pageNo = pageNo,
pageSize = pageSize,
target = ModuleName.REFERRAL.name
suspend fun fetchRefereeTrackerDetails(pageNo: Int, pageSize: Int) =
responseHandler.handleResponse(
retrofitService.fetchRefereeTrackerDetails(
pageNo = pageNo,
pageSize = pageSize,
target = ModuleName.REFERRAL.name
)
)
)
suspend fun fetchRefereeTrackerDetailsV3(
pageNo: Int,
pageSize: Int
) = responseHandler.handleResponse(
retrofitService.fetchRefereeTrackerDetailsV3(
pageNo = pageNo,
pageSize = pageSize,
target = ModuleName.REFERRAL.name
suspend fun fetchRefereeTrackerDetailsV3(pageNo: Int, pageSize: Int) =
responseHandler.handleResponse(
retrofitService.fetchRefereeTrackerDetailsV3(
pageNo = pageNo,
pageSize = pageSize,
target = ModuleName.REFERRAL.name
)
)
)
suspend fun fetchRefereeTrackerForgeElement(): RepoResult<ScreenDefinition> {
return responseHandler.handleResponse(
retrofitService.fetchForgeScreen(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = FORGE_REFEREE_TRACKER_SCREEN
)
@@ -63,6 +64,7 @@ class RefereeTrackerRepo @Inject constructor(
suspend fun fetchRefereeTrackerV2ForgeElement(): RepoResult<ScreenDefinition> {
return responseHandler.handleResponse(
retrofitService.fetchForgeScreen(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = FORGE_REFEREE_TRACKER_SCREEN_V2
)

View File

@@ -1,6 +1,6 @@
/*
*
* * Copyright © 2022-2023 by Navi Technologies Limited
* * Copyright © 2022-2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
@@ -10,6 +10,7 @@ package com.navi.rr.referral.repo
import com.navi.common.forge.model.ScreenDefinition
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.utils.Constants.GZIP
import com.navi.rr.common.constants.FORGE_REFERRAL_HOME_SCREEN
import com.navi.rr.leaderboard.utils.Constants
import com.navi.rr.network.di.SuperAppRetrofitForRR
@@ -18,7 +19,9 @@ import com.navi.rr.network.retrofit.RetrofitService
import com.navi.rr.utils.ReferralHomeConstants.REFERRAL_POPUP_SCREEN
import javax.inject.Inject
class ReferralHomeRepo @Inject constructor(
class ReferralHomeRepo
@Inject
constructor(
private val responseHandler: ResponseHandler,
@SuperAppRetrofitForRR private val retrofitService: RetrofitService,
) {
@@ -28,6 +31,7 @@ class ReferralHomeRepo @Inject constructor(
suspend fun fetchReferralForgeScreen(): RepoResult<ScreenDefinition> {
return responseHandler.handleResponse(
retrofitService.fetchForgeScreen(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = FORGE_REFERRAL_HOME_SCREEN
)
@@ -37,6 +41,7 @@ class ReferralHomeRepo @Inject constructor(
suspend fun fetchReferralPopupScreen(): RepoResult<ScreenDefinition> {
return responseHandler.handleResponse(
retrofitService.fetchForgeScreen(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = REFERRAL_POPUP_SCREEN
)
@@ -46,9 +51,10 @@ class ReferralHomeRepo @Inject constructor(
suspend fun fetchLeaderboardPopUp(): RepoResult<ScreenDefinition> {
return responseHandler.handleResponse(
retrofitService.fetchForgeScreen(
acceptEncoding = GZIP,
target = ModuleNameV2.FORGE.name,
screenId = Constants.REFERRAL_LEADERBOARD_GRATIFICATION_SCREEN
)
)
}
}
}

View File

@@ -11,6 +11,7 @@ import com.navi.common.forge.model.ScreenDefinition
import com.navi.common.model.ModuleName
import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.RepoResult
import com.navi.common.utils.Constants.GZIP
import com.navi.rr.leaderboard.utils.Constants.REWARDS_SCRATCH_CARD_SCREEN
import com.navi.rr.network.di.SuperAppRetrofitForRR
import com.navi.rr.network.retrofit.ResponseHandler
@@ -19,7 +20,9 @@ import com.navi.rr.scratchcard.model.ScratchCardNudgeResponse
import com.navi.rr.scratchcard.model.ScratchCardResponse
import javax.inject.Inject
class ScratchCardRepo @Inject constructor(
class ScratchCardRepo
@Inject
constructor(
private val responseHandler: ResponseHandler,
@SuperAppRetrofitForRR private val retrofitService: RetrofitService,
) {
@@ -39,23 +42,21 @@ class ScratchCardRepo @Inject constructor(
suspend fun getNudgeRewardInfo(eventId: String): RepoResult<ScratchCardResponse> {
return responseHandler.handleResponse(
retrofitService.getNudgeRewardInfo(
eventId = eventId,
target = ModuleName.REWARDS.name
)
retrofitService.getNudgeRewardInfo(eventId = eventId, target = ModuleName.REWARDS.name)
)
}
suspend fun putScratchCompleted(requestId: String) {
retrofitService.putScratchCompleted( target = ModuleName.REWARDS.name,requestId)
retrofitService.putScratchCompleted(target = ModuleName.REWARDS.name, requestId)
}
suspend fun fetchScratchCardTemplate() : RepoResult<ScreenDefinition> {
suspend fun fetchScratchCardTemplate(): RepoResult<ScreenDefinition> {
return responseHandler.handleResponse(
retrofitService.fetchForgeScreen(
acceptEncoding = GZIP,
screenId = REWARDS_SCRATCH_CARD_SCREEN,
target = ModuleNameV2.FORGE.name,
)
)
}
}