### Question:
PageableResponseReader extends BaseReader<T, R> { @Override public T readNextItem() throws MatchbookSDKParsingException { if (readingItemStatus == ReadingItemsStatus.READ) { return null; } else if (readingItemStatus == ReadingItemsStatus.NOT_READ) { skipToItems(); readingItemStatus = ReadingItemsStatus.READING; } itemsReader.init(parser); T item = itemsReader.readFullResponse(); parser.moveToNextToken(); if (parser.isEndOfArray()) { readingItemStatus = ReadingItemsStatus.READ; } return item; } protected  PageableResponseReader(ResponseReader<T> itemsReader); @Override T readNextItem(); @Override R readFullResponse();  }### Answer:
@Test @DisplayName("Next item is null if already read") void readNextItemReadTest() { unit.readingItemStatus = BaseReader.ReadingItemsStatus.READ; assertThat(unit.readNextItem()).isNull(); }
@Test @DisplayName("Read next item and keep reading") void readNextItemTest() { unit.readingItemStatus = BaseReader.ReadingItemsStatus.NOT_READ; when(parser.isEndOfObject()).thenReturn(false); when(parser.isEndOfArray()).thenReturn(false); when(parser.getFieldName()).thenReturn(null).thenReturn(getItemsFieldName()); ResponseReader<T> itemsReader = getItemsReader(); T item = getItem(); when(itemsReader.readFullResponse()).thenReturn(item); T readItem = unit.readNextItem(); assertThat(readItem).isEqualTo(item); assertThat(unit.hasMoreItems()).isTrue(); }