Пример #1
0
  public void testRemoveQueueItem()
      throws InterruptedException, ExecutionException, TimeoutException {
    final int NUM_ITEMS = 10;
    final Context context = getInstrumentation().getTargetContext();
    Feed feed = new Feed("url", null, "title");
    feed.setItems(new ArrayList<>());
    for (int i = 0; i < NUM_ITEMS; i++) {
      FeedItem item =
          new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.PLAYED, feed);
      feed.getItems().add(item);
    }

    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    adapter.setCompleteFeed(feed);
    adapter.close();

    for (FeedItem item : feed.getItems()) {
      assertTrue(item.getId() != 0);
    }
    for (int removeIndex = 0; removeIndex < NUM_ITEMS; removeIndex++) {
      final FeedItem item = feed.getItems().get(removeIndex);
      adapter = PodDBAdapter.getInstance();
      adapter.open();
      adapter.setQueue(feed.getItems());
      adapter.close();

      DBWriter.removeQueueItem(context, item, false).get(TIMEOUT, TimeUnit.SECONDS);
      adapter = PodDBAdapter.getInstance();
      adapter.open();
      Cursor queue = adapter.getQueueIDCursor();
      assertTrue(queue.getCount() == NUM_ITEMS - 1);
      for (int i = 0; i < queue.getCount(); i++) {
        assertTrue(queue.moveToPosition(i));
        final long queueID = queue.getLong(0);
        assertTrue(queueID != item.getId()); // removed item is no longer in queue
        boolean idFound = false;
        for (FeedItem other :
            feed.getItems()) { // items that were not removed are still in the queue
          idFound = idFound | (other.getId() == queueID);
        }
        assertTrue(idFound);
      }
      queue.close();
      adapter.close();
    }
  }