package ca.ualberta.cs.cmput301f14t14.questionapp.test; import java.util.ArrayList; import java.util.List; import java.util.UUID; import android.test.ActivityInstrumentationTestCase2; import ca.ualberta.cs.cmput301f14t14.questionapp.MainActivity; import ca.ualberta.cs.cmput301f14t14.questionapp.data.DataManager; import ca.ualberta.cs.cmput301f14t14.questionapp.data.LocalDataStore; import ca.ualberta.cs.cmput301f14t14.questionapp.data.RemoteDataStore; import ca.ualberta.cs.cmput301f14t14.questionapp.model.Answer; import ca.ualberta.cs.cmput301f14t14.questionapp.model.Question; public class SearchTest extends ActivityInstrumentationTestCase2<MainActivity> { private DataManager manager; private LocalDataStore local; private RemoteDataStore remote; private MockElasticSearch remoteSearch; public SearchTest() { super(MainActivity.class); } protected void setUp() throws Exception { super.setUp(); manager = DataManager.getInstance(getInstrumentation().getTargetContext().getApplicationContext()); local = new LocalDataStore(getInstrumentation().getTargetContext().getApplicationContext()); remote = new RemoteDataStore(getInstrumentation().getTargetContext().getApplicationContext()); remoteSearch = new MockElasticSearch(); } protected void tearDown() throws Exception { super.tearDown(); } /** * UC10 TC10.1 - Empty Search */ public void testEmptySearch() { // given query results, data manager can get answers and questions List<UUID> results = remoteSearch.query(""); assertEquals(0, results.size()); } /** * UC10 TC10.2 - Offline Search */ public void testOfflineSearch() { try { List<UUID> results = remoteSearch.query(""); fail(); } catch (Exception e) { // Passed } } /** * UC10 TC10.3 - Proper Search */ public void testRealSearch() { List<UUID> results = remoteSearch.query("jeans"); List<Answer> resultAnswers = new ArrayList<Answer>(); List<Question> resultQuestions = new ArrayList<Question>(); for (UUID i : results) { if (manager.getAnswer(i, null) != null) { resultAnswers.add(manager.getAnswer(i, null)); } else { resultQuestions.add(manager.getQuestion(i, null)); } } assertTrue(resultQuestions.size() > 0 || resultAnswers.size() > 0); } }