package de.westnordost.streetcomplete.data.osmnotes; import java.util.Date; import java.util.List; import de.westnordost.streetcomplete.data.ApplicationDbTestCase; import de.westnordost.streetcomplete.data.QuestStatus; import de.westnordost.osmapi.map.data.BoundingBox; import de.westnordost.osmapi.map.data.LatLon; import de.westnordost.osmapi.map.data.OsmLatLon; import de.westnordost.osmapi.notes.Note; public class OsmNoteQuestDaoTest extends ApplicationDbTestCase { private OsmNoteQuestDao dao; private NoteDao noteDao; @Override public void setUp() { super.setUp(); dao = new OsmNoteQuestDao(dbHelper, serializer); noteDao = new NoteDao(dbHelper, serializer); } public void testAddGetNoChanges() { Note note = NoteDaoTest.createNote(); OsmNoteQuest quest = new OsmNoteQuest(note); noteDao.put(note); dao.add(quest); OsmNoteQuest dbQuest = dao.get(quest.getId()); checkEqual(quest, dbQuest); } public void testAddGetWithChanges() { Note note = NoteDaoTest.createNote(); OsmNoteQuest quest = new OsmNoteQuest(null, note, QuestStatus.ANSWERED, "hi da du", new Date(1234)); noteDao.put(note); dao.add(quest); OsmNoteQuest dbQuest = dao.get(quest.getId()); checkEqual(quest, dbQuest); } public void testAddTwice() { // tests if the "unique" property is set correctly in the table Note note = NoteDaoTest.createNote(); noteDao.put(note); OsmNoteQuest quest = new OsmNoteQuest(note); dao.add(quest); OsmNoteQuest questForSameNote = new OsmNoteQuest(note); questForSameNote.setStatus(QuestStatus.HIDDEN); boolean result = dao.add(questForSameNote); List<OsmNoteQuest> quests = dao.getAll(null, null); assertEquals(1, quests.size()); assertEquals(QuestStatus.NEW, quests.get(0).getStatus()); assertFalse(result); assertNull(questForSameNote.getId()); } public void testAddReplace() { Note note = NoteDaoTest.createNote(); noteDao.put(note); OsmNoteQuest quest = new OsmNoteQuest(note); dao.add(quest); OsmNoteQuest questForSameNote = new OsmNoteQuest(note); questForSameNote.setStatus(QuestStatus.HIDDEN); boolean result = dao.replace(questForSameNote); List<OsmNoteQuest> quests = dao.getAll(null, null); assertEquals(1, quests.size()); assertEquals(QuestStatus.HIDDEN, quests.get(0).getStatus()); assertTrue(result); } public void testGetPositions() { Note note = NoteDaoTest.createNote(); note.position = new OsmLatLon(34,35); noteDao.put(note); OsmNoteQuest quest = new OsmNoteQuest(note); dao.add(quest); List<LatLon> positions = dao.getAllPositions(new BoundingBox(0,0,50,50)); assertEquals(1,positions.size()); assertEquals(new OsmLatLon(34,35), positions.get(0)); } private void checkEqual(OsmNoteQuest quest, OsmNoteQuest dbQuest) { assertEquals(quest.getLastUpdate(), dbQuest.getLastUpdate()); assertEquals(quest.getStatus(), dbQuest.getStatus()); assertEquals(quest.getMarkerLocation(), dbQuest.getMarkerLocation()); assertEquals(quest.getComment(), dbQuest.getComment()); assertEquals(quest.getId(), dbQuest.getId()); assertEquals(quest.getType(), dbQuest.getType()); // note saving already tested in NoteDaoTest } }