스팀 앱 개발기 #64 - bridge.get_ranked_posts API 연동 구현: SteemService 인터페이스에 메소드 추가steemCreated with Sketch.

시작하며...

이제부터는 bridge.get_ranked_posts API 연동 구현 과정을 보여드리고자 합니다.


작업 개요

  • SteemService 인터페이스에 메소드 추가
  • 유닛 테스트 코드 작성

SteemService 인터페이스에 메소드 추가

다른 API 연동을 위한 메소드들이 SteemService 인터페이스 안에 추가되었죠. 마찬가지로 이번에도 bridge.get_ranked_posts API를 연동하기 위한 메소드를 그 곳에 추가합니다.

interface SteemService {

    // ...

    // Runs bridge.get_ranked_posts API.
    @POST(".")
    fun getRankedPosts(
        @Body params: GetRankedPostParamsDTO
    ): Single<GetRankedPostsResponseDTO>

}

이전 포스트에서 설명한 GetRankedPostParamsDTO, GetRankedPostsResponseDTO 데이터 클래스들이 여기서 사용됩니다.


유닛 테스트 코드 작성

추가한 메소드가 잘 작동되는지 테스트하는 코드도 작성하였습니다.

class SteemServiceTest {

    // ...

    @Test
    fun getRankedPost() {
        val params = GetRankedPostParamsDTO(
            params = GetRankedPostParamsDTO.InnerParams(
                sort = GetRankedPostParamsDTO.InnerParams.SORT_TRENDING,
                tag = "kr",
                limit = 30
            ),
            id = 1
        )

        SteemClient.apiService.getRankedPosts(params).subscribe { responseDTO ->
            val postItemDTOList = responseDTO.result ?: listOf()

            assertEquals("2.0", responseDTO.jsonrpc ?: "")
            assertNotNull(responseDTO.result)
            assertTrue(postItemDTOList.size == 30)
            for (postItemDTO in postItemDTOList) {
                assertNotNull(postItemDTO.author)
                assertTrue((postItemDTO.author ?: "").isNotEmpty())
                assertNotNull(postItemDTO.title)
                assertTrue((postItemDTO.title ?: "").isNotEmpty())
            }
        }
    }

}

간단히 설명드리자면요. kr 태그의 trending 포스트 30개를 API로 요청하고, 아래 사항들을 확인합니다.

  • 서버로부터 정상적으로 포스트 리스트를 받아오는지?
  • 리스트의 포스트 개수가 30인지?
  • 포스트의 저자 계정과 제목이 정상인지? (현재는 빈값이 아닌 것으로 정상으로 간주)

GitHub Commit


지난 스팀 앱 개발기

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.029
BTC 57839.82
ETH 3132.70
USDT 1.00
SBD 2.43