@Override public Character getByKey(String key) throws Exception { MarvelResponse<CharacterDto> characterResponse = characterApiClient.getCharacter(key); CharacterDto characterDto = characterResponse.getResponse(); return mapper.reverseMap(characterDto); }
@Override public ComicSeries getByKey(Integer key) throws Exception { MarvelResponse<SeriesDto> seriesResponse = seriesApiClient.getSeriesById(key.toString()); SeriesDto seriesDto = seriesResponse.getResponse(); ComicSeries comicSeries = mapper.reverseMap(seriesDto); return comicSeries; }
PaginatedReadableDataSource<String, Character> createDataSource() { if (hasKeys()) { MarvelApiConfig marvelApiConfig = MarvelApiConfig.with(BuildConfig.MARVEL_PUBLIC_KEY, BuildConfig.MARVEL_PRIVATE_KEY); CharacterApiClient characterApiClient = new CharacterApiClient(marvelApiConfig); return new CharactersApiDataSource(characterApiClient); } else { return new CharactersFakeDataSource(); } }
@Override public PaginatedCollection<ComicSeries> getPage(Page page) throws MarvelApiException { int offset = page.getOffset(); int limit = page.getLimit(); MarvelResponse<SeriesCollectionDto> seriesApiResponse = seriesApiClient.getAll(offset, limit); SeriesCollectionDto seriesCollectionDto = seriesApiResponse.getResponse(); Collection<ComicSeries> comicSeries = mapper.reverseMap(seriesCollectionDto.getSeries()); PaginatedCollection<ComicSeries> comicSeriesPage = new PaginatedCollection<>(comicSeries); comicSeriesPage.setPage(page); comicSeriesPage.setHasMore( seriesCollectionDto.getOffset() + seriesCollectionDto.getCount() < seriesCollectionDto.getTotal()); return comicSeriesPage; }
@Override public PaginatedCollection<Character> getPage(Page page) throws MarvelApiException { int offset = page.getOffset(); int limit = page.getLimit(); MarvelResponse<CharactersDto> charactersApiResponse = characterApiClient.getAll(offset, limit); CharactersDto charactersDto = charactersApiResponse.getResponse(); Collection<Character> characters = mapper.reverseMap(charactersDto.getCharacters()); PaginatedCollection<Character> charactersPage = new PaginatedCollection<>(characters); charactersPage.setPage(page); charactersPage.setHasMore( charactersDto.getOffset() + charactersDto.getCount() < charactersDto.getTotal()); return charactersPage; } }
@Override public List<Comic> getComicBySeries(int key) throws Exception { MarvelResponse<ComicsDto> comicsBySeries = seriesApiClient.getComicsBySeries(Integer.toString(key), 0, MAX_COMICS_BY_SERIES); ComicsDto comicsDto = comicsBySeries.getResponse(); List<Comic> comics = new ArrayList<>(); for (ComicDto comicDto : comicsDto.getComics()) { Comic comic = new Comic(); comic.setKey(comicDto.getId()); comic.setName(comicDto.getTitle()); comic.setThumbnailUrl(comicDto.getThumbnail().getImageUrl(MarvelImage.Size.PORTRAIT_UNCANNY)); comics.add(comic); } return comics; }
@Test public void shouldParseGetAllCharactersResponse() throws Exception { CharacterApiClient characterApiClient = givenCharacterApiClient(); enqueueMockResponse("getCharacters.json"); MarvelResponse<CharactersDto> characters = characterApiClient.getAll(0, ANY_LIMIT); assertBasicMarvelResponse(characters); assertGetAllCharactersResponseIsProperlyParsed(characters); }
@Test public void shouldParseGetAllComicsResponse() throws Exception { ComicApiClient comicApiClient = givenComicApiClient(); enqueueMockResponse("getComics.json"); MarvelResponse<ComicsDto> comics = comicApiClient.getAll(0, ANY_LIMIT); assertBasicMarvelResponse(comics); assertGetAllComicsResponseIsProperlyParsed(comics); }
ComicSeriesDataSource createDataSource() { if (hasKeys()) { MarvelApiConfig marvelApiConfig = MarvelApiConfig.with(BuildConfig.MARVEL_PUBLIC_KEY, BuildConfig.MARVEL_PRIVATE_KEY); SeriesApiClient seriesApiClient = new SeriesApiClient(marvelApiConfig); return new ComicSeriesApiDataSource(seriesApiClient); } else { return new ComicSeriesFakeDataSource(); } }
@Test public void shouldSendGetSeriesRequestToTheCorrectEndpoint() throws Exception { SeriesApiClient seriesApiClient = givenSeriesApiClient(); enqueueMockResponse("getSeriesCollection.json"); seriesApiClient.getSeriesById(ANY_SERIE_ID); assertRequestSentToContains("series/" + ANY_SERIE_ID); }
@Test public void shouldRequestComicsByOffsetAndLimitWithAsParams() throws Exception { ComicApiClient comicApiClient = givenComicApiClient(); enqueueMockResponse(); comicApiClient.getAll(ANY_OFFSET, ANY_LIMIT); assertRequestSentToContains("offset=" + ANY_OFFSET, "limit=" + ANY_LIMIT); }
@Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionWhenLimitIsZero() throws Exception { SeriesApiClient seriesApiClient = givenSeriesApiClient(); enqueueMockResponse(); seriesApiClient.getAll(ANY_OFFSET, INVALID_LIMIT); }
@Test public void shouldSendGetComicRequestToTheCorrectEndpoint() throws Exception { ComicApiClient comicApiClient = givenComicApiClient(); enqueueMockResponse("getComic.json"); comicApiClient.getComic(ANY_COMIC_ID); assertRequestSentToContains("comics/" + ANY_COMIC_ID); }
private void givenConnectionExceptionObtainingComicSeries() throws Exception { when(comicSeriesRepository.getComicSeriesDetail(any(Integer.class))).thenThrow( new MarvelApiException(ANY_EXCEPTION, new UnknownHostException())); }
public MarvelApiConfig build() { if (retrofit == null) { retrofit = buildRetrofit(); } return new MarvelApiConfig(publicKey, privateKey, retrofit, debug); }
@Override public Error create(Exception exception) { Throwable targetException = exception; if (exception instanceof InvocationTargetException) { targetException = ((InvocationTargetException) exception).getTargetException(); } if (targetException instanceof MarvelApiException) { MarvelApiException marvelApiException = (MarvelApiException) targetException; if (marvelApiException.getCause() instanceof UnknownHostException) { return new ConnectionError(); } } return new UnknownError(); } }
private void givenConnectionExceptionObtainingACharacter() throws Exception { when(charactersRepository.getByKey(anyString())).thenThrow( new MarvelApiException(ANY_EXCEPTION, new UnknownHostException())); }
private void givenExceptionObtainingCharacters() throws Exception { when(charactersRepository.getAll(ReadPolicy.CACHE_ONLY)).thenReturn(new ArrayList<Character>()); when(charactersRepository.getPage(any(Page.class))).thenThrow( new MarvelApiException(ANY_EXCEPTION, null)); }
private void givenConnectionExceptionObtainingCharacters() throws Exception { when(charactersRepository.getAll(ReadPolicy.CACHE_ONLY)).thenReturn(new ArrayList<Character>()); when(charactersRepository.getPage(any(Page.class))).thenThrow( new MarvelApiException(ANY_EXCEPTION, new UnknownHostException())); }