Example #1
0
  public void testDeleteFeedWithItemImages()
      throws InterruptedException, ExecutionException, TimeoutException, IOException {
    File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER);
    assertNotNull(destFolder);

    Feed feed = new Feed("url", null, "title");
    feed.setItems(new ArrayList<>());

    // create Feed image
    File imgFile = new File(destFolder, "image");
    assertTrue(imgFile.createNewFile());
    FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true);
    image.setOwner(feed);
    feed.setImage(image);

    // create items with images
    for (int i = 0; i < 10; i++) {
      FeedItem item =
          new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed);
      feed.getItems().add(item);
      File itemImageFile = new File(destFolder, "item-image-" + i);
      FeedImage itemImage =
          new FeedImage(0, "item-image" + i, itemImageFile.getAbsolutePath(), "url", true);
      item.setImage(itemImage);
    }

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

    assertTrue(feed.getId() != 0);
    assertTrue(feed.getImage().getId() != 0);
    for (FeedItem item : feed.getItems()) {
      assertTrue(item.getId() != 0);
      assertTrue(item.getImage().getId() != 0);
    }

    DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId())
        .get(TIMEOUT, TimeUnit.SECONDS);

    // check if files still exist
    assertFalse(imgFile.exists());

    adapter = PodDBAdapter.getInstance();
    adapter.open();
    Cursor c = adapter.getFeedCursor(feed.getId());
    assertTrue(c.getCount() == 0);
    c.close();
    c = adapter.getImageCursor(String.valueOf(image.getId()));
    assertTrue(c.getCount() == 0);
    c.close();
    for (FeedItem item : feed.getItems()) {
      c = adapter.getFeedItemCursor(String.valueOf(item.getId()));
      assertTrue(c.getCount() == 0);
      c.close();
      c = adapter.getImageCursor(String.valueOf(item.getImage().getId()));
      assertEquals(0, c.getCount());
      c.close();
    }
    adapter.close();
  }