### Question:
DataTagDao extends EntityDbTable<DataTag> { public void add(TaggedData taggedData) { add(taggedData.getParsedTags(), taggedData.getHeight()); } @Inject  DataTagDao(); DbKey newDbKey(DataTag dataTag); void add(TaggedData taggedData); void add(String[] tags, int height); @Override boolean isScanSafe(); void add(TaggedData taggedData, int height); void delete(Map<String, Integer> expiredTags); int getDataTagCount(); DbIterator<DataTag> getAllTags(int from, int to); DbIterator<DataTag> getTagsLike(String prefix, int from, int to); @Override DataTag load(Connection con, ResultSet rs, DbKey dbKey); @Override void save(Connection con, DataTag dataTag); @Override String defaultSort();  }### Answer:
@Test void testAdd() { TaggedData taggedData = mock(TaggedData.class); doReturn(1_000_000).when(taggedData).getHeight(); doReturn(new String[]{tagtd.dataTag_1.getTag(), "newTag"}).when(taggedData).getParsedTags(); DbUtils.inTransaction(extension, (con) -> dataTagDao.add(taggedData)); List<DataTag> dataTags = CollectionUtil.toList(dataTagDao.getAllTags(0, 4)); DataTag updatedDataTag = new DataTag(tagtd.dataTag_1.getTag(), 1_000_000, tagtd.dataTag_1.getCount() + 1); updatedDataTag.setLatest(true); updatedDataTag.setDbId(41); DataTag newTag = new DataTag("newTag", 1_000_000, 1); newTag.setLatest(true); newTag.setDbId(42); tagtd.dataTag_4.setDbId(40); List<DataTag> expected = List.of( updatedDataTag, newTag, tagtd.dataTag_4 ); assertEquals(expected, dataTags); }