@Test(expectedExceptions = IllegalArgumentException.class)
 public void GoogleSpreadsheetRepository() throws IOException, ServiceException {
   GoogleSpreadsheetRepository repo = null;
   try {
     repo = new GoogleSpreadsheetRepository(null, null, null);
   } finally {
     if (repo != null) repo.close();
   }
 }
 @SuppressWarnings("unchecked")
 @Test
 public void getEntityClass() throws IOException, ServiceException {
   when(spreadsheetService.getFeed(any(URL.class), (Class<CellFeed>) any(Class.class)))
       .thenReturn(cellFeed);
   assertEquals(MapEntity.class, spreadsheetRepository.getEntityMetaData().getEntityClass());
 }
 @SuppressWarnings("unchecked")
 @Test
 public void iterator() throws IOException, ServiceException {
   when(spreadsheetService.getFeed(any(URL.class), (Class<IFeed>) any(Class.class)))
       .thenReturn(cellFeed)
       .thenReturn(listFeed);
   Iterator<Entity> it = spreadsheetRepository.iterator();
   assertTrue(it.hasNext());
   Entity entity = it.next();
   assertEquals(entity.getString("col1"), "val1");
   assertEquals(entity.getString("col2"), "val2");
   assertEquals(entity.getString("col3"), "val3");
   assertFalse(it.hasNext());
 }
 @SuppressWarnings("unchecked")
 @Test
 public void getEntityMetaData() throws IOException, ServiceException {
   when(spreadsheetService.getFeed(any(URL.class), (Class<CellFeed>) any(Class.class)))
       .thenReturn(cellFeed);
   EntityMetaData entityMetaData = spreadsheetRepository.getEntityMetaData();
   assertEquals(entityMetaData.getName(), "name");
   Iterator<AttributeMetaData> it = entityMetaData.getAttributes().iterator();
   assertTrue(it.hasNext());
   assertEquals(it.next().getName(), "col1");
   assertTrue(it.hasNext());
   assertEquals(it.next().getName(), "col2");
   assertTrue(it.hasNext());
   assertEquals(it.next().getName(), "col3");
   assertFalse(it.hasNext());
 }