mirror of https://github.com/tasks/tasks
Replace GtasksDetailExposer tests
parent
099867d131
commit
1725a6715b
@ -1,160 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2012 Todoroo Inc
|
|
||||||
*
|
|
||||||
* See the file "LICENSE" for the full license governing this code.
|
|
||||||
*/
|
|
||||||
package com.todoroo.astrid.gtasks;
|
|
||||||
|
|
||||||
import android.content.BroadcastReceiver;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.IntentFilter;
|
|
||||||
|
|
||||||
import com.google.api.services.tasks.model.TaskList;
|
|
||||||
import com.google.api.services.tasks.model.TaskLists;
|
|
||||||
import com.todoroo.andlib.service.Autowired;
|
|
||||||
import com.todoroo.andlib.utility.AndroidUtilities;
|
|
||||||
import com.todoroo.astrid.api.AstridApiConstants;
|
|
||||||
import com.todoroo.astrid.core.PluginServices;
|
|
||||||
import com.todoroo.astrid.data.Metadata;
|
|
||||||
import com.todoroo.astrid.data.Task;
|
|
||||||
import com.todoroo.astrid.test.DatabaseTestCase;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class GtasksDetailExposerTest extends DatabaseTestCase {
|
|
||||||
|
|
||||||
@Autowired private GtasksListService gtasksListService;
|
|
||||||
private final GtasksTestPreferenceService preferences = new GtasksTestPreferenceService();
|
|
||||||
private final DetailListener detailListener = new DetailListener();
|
|
||||||
|
|
||||||
private Task task;
|
|
||||||
private String detail;
|
|
||||||
|
|
||||||
public void testExposeNotLoggedIn() {
|
|
||||||
givenTwoListSetup();
|
|
||||||
givenLoggedInStatus(false);
|
|
||||||
givenTaskWithList("listone-id");
|
|
||||||
|
|
||||||
whenRequestingDetails();
|
|
||||||
|
|
||||||
thenExpectNoDetail();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testExposeListOne() {
|
|
||||||
givenTwoListSetup();
|
|
||||||
givenLoggedInStatus(true);
|
|
||||||
givenTaskWithList("listone-id");
|
|
||||||
|
|
||||||
whenRequestingDetails();
|
|
||||||
|
|
||||||
thenExpectDetail("List One");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testExposeListTwo() {
|
|
||||||
givenTwoListSetup();
|
|
||||||
givenLoggedInStatus(true);
|
|
||||||
givenTaskWithList("listtwo-id");
|
|
||||||
|
|
||||||
whenRequestingDetails();
|
|
||||||
|
|
||||||
thenExpectDetail("List Two");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void disabled_testExposeListDoesntExist() {
|
|
||||||
givenTwoListSetup();
|
|
||||||
givenLoggedInStatus(true);
|
|
||||||
givenTaskWithList("blah");
|
|
||||||
|
|
||||||
whenRequestingDetails();
|
|
||||||
|
|
||||||
thenExpectNoDetail();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void disabled_testExposeListNotSet() {
|
|
||||||
givenTwoListSetup();
|
|
||||||
givenLoggedInStatus(true);
|
|
||||||
givenTaskWithList(null);
|
|
||||||
|
|
||||||
whenRequestingDetails();
|
|
||||||
|
|
||||||
thenExpectNoDetail();
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- helpers
|
|
||||||
|
|
||||||
private void thenExpectNoDetail() {
|
|
||||||
assertNull("no detail", detail);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void thenExpectDetail(String expected) {
|
|
||||||
assertNotNull("detail not null", detail);
|
|
||||||
assertTrue("detail was '" + detail + "', '" + expected + "' expected",
|
|
||||||
detail.contains(expected));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void givenTwoListSetup() {
|
|
||||||
TaskLists lists = new TaskLists();
|
|
||||||
List<TaskList> newLists = new ArrayList<>();
|
|
||||||
TaskList list = new TaskList();
|
|
||||||
list.setId("listone-id");
|
|
||||||
list.setTitle("List One"); //new GoogleTaskListInfo("listone-id", "List One");
|
|
||||||
newLists.add(list);
|
|
||||||
list = new TaskList();
|
|
||||||
list.setId("listtwo-id");
|
|
||||||
list.setTitle("List Two"); //("listtwo-id", "List Two");
|
|
||||||
newLists.add(list);
|
|
||||||
lists.setItems(newLists);
|
|
||||||
gtasksListService.updateLists(lists);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void givenTaskWithList(String list) {
|
|
||||||
Task newTask = new Task();
|
|
||||||
PluginServices.getTaskService().save(newTask);
|
|
||||||
Metadata metadata = GtasksMetadata.createEmptyMetadata(newTask.getId());
|
|
||||||
if(list != null)
|
|
||||||
metadata.setValue(GtasksMetadata.LIST_ID, list);
|
|
||||||
PluginServices.getMetadataService().save(metadata);
|
|
||||||
task = newTask;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void addInjectables() {
|
|
||||||
super.addInjectables();
|
|
||||||
testInjector.addInjectable("gtasksPreferenceService", preferences);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void whenRequestingDetails() {
|
|
||||||
Intent intent = new Intent(AstridApiConstants.BROADCAST_REQUEST_DETAILS);
|
|
||||||
intent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, task.getId());
|
|
||||||
detail = null;
|
|
||||||
new GtasksDetailExposer().onReceive(getContext(), intent);
|
|
||||||
AndroidUtilities.sleepDeep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void givenLoggedInStatus(boolean status) {
|
|
||||||
preferences.setLoggedIn(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setUp() throws Exception {
|
|
||||||
super.setUp();
|
|
||||||
getContext().registerReceiver(detailListener, new IntentFilter(AstridApiConstants.BROADCAST_SEND_DETAILS));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void tearDown() throws Exception {
|
|
||||||
super.tearDown();
|
|
||||||
getContext().unregisterReceiver(detailListener);
|
|
||||||
}
|
|
||||||
|
|
||||||
private class DetailListener extends BroadcastReceiver {
|
|
||||||
@Override
|
|
||||||
public void onReceive(Context context, Intent intent) {
|
|
||||||
detail = intent.getExtras().getString(AstridApiConstants.EXTRAS_RESPONSE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}//*/
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2012 Todoroo Inc
|
|
||||||
*
|
|
||||||
* See the file "LICENSE" for the full license governing this code.
|
|
||||||
*/
|
|
||||||
package com.todoroo.astrid.model;
|
|
||||||
|
|
||||||
import com.todoroo.andlib.service.Autowired;
|
|
||||||
import com.todoroo.astrid.data.Task;
|
|
||||||
import com.todoroo.astrid.service.TaskService;
|
|
||||||
import com.todoroo.astrid.test.DatabaseTestCase;
|
|
||||||
|
|
||||||
public class TaskTests extends DatabaseTestCase {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
TaskService taskService;
|
|
||||||
|
|
||||||
/** Check task gets a creation date at some point */
|
|
||||||
public void testCreationDate() {
|
|
||||||
Task task = new Task();
|
|
||||||
taskService.save(task);
|
|
||||||
assertTrue(task.getValue(Task.CREATION_DATE) > 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,122 @@
|
|||||||
|
package com.todoroo.astrid.gtasks;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
|
import com.google.api.services.tasks.model.TaskList;
|
||||||
|
import com.todoroo.andlib.test.TodorooRobolectricTestCaseWithInjector;
|
||||||
|
import com.todoroo.astrid.api.AstridApiConstants;
|
||||||
|
import com.todoroo.astrid.data.Metadata;
|
||||||
|
import com.todoroo.astrid.data.Task;
|
||||||
|
import com.todoroo.astrid.service.MetadataService;
|
||||||
|
import com.todoroo.astrid.service.TaskService;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||||
|
|
||||||
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
public class GtasksDetailExposerTest extends TodorooRobolectricTestCaseWithInjector {
|
||||||
|
|
||||||
|
private Context context;
|
||||||
|
private RobolectricGtasksPreferenceService gtasksPreferenceService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addInjectables() {
|
||||||
|
testInjector.addInjectable("gtasksPreferenceService", gtasksPreferenceService);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
gtasksPreferenceService = new RobolectricGtasksPreferenceService();
|
||||||
|
context = mock(Context.class);
|
||||||
|
new GtasksListService().addNewList(
|
||||||
|
new TaskList().setId("list_id").setTitle("list_title"));
|
||||||
|
|
||||||
|
super.setUp();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void after() throws Exception {
|
||||||
|
verify(context).getApplicationContext();
|
||||||
|
verifyNoMoreInteractions(context);
|
||||||
|
|
||||||
|
super.after();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dontBroadcastDetailsWhenNotLoggedIn() {
|
||||||
|
gtasksPreferenceService.logout();
|
||||||
|
|
||||||
|
getDetails(newTask("list_id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dontBroadcastDetailsForInvalidTaskId() {
|
||||||
|
getDetails(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dontBroadcastDetailsWithNoList() {
|
||||||
|
getDetails(newTask());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dontBroadcastDetailsWithNullList() {
|
||||||
|
getDetails(newTask(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dontBroadcastDetailsWithDefaultList() {
|
||||||
|
getDetails(newTask(GtasksPreferenceService.PREF_DEFAULT_LIST));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dontBroadcastDetailsForNonexistentList() {
|
||||||
|
getDetails(newTask("invalid_list_id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void broadcastDetails() {
|
||||||
|
Task task = newTask("list_id");
|
||||||
|
|
||||||
|
getDetails(task);
|
||||||
|
|
||||||
|
verify(context).sendBroadcast(
|
||||||
|
new Intent(AstridApiConstants.BROADCAST_SEND_DETAILS)
|
||||||
|
.putExtra(AstridApiConstants.EXTRAS_ADDON, GtasksPreferenceService.IDENTIFIER)
|
||||||
|
.putExtra(AstridApiConstants.EXTRAS_TASK_ID, task.getId())
|
||||||
|
.putExtra(AstridApiConstants.EXTRAS_RESPONSE, "<img src='gtasks_detail'/> list_title"),
|
||||||
|
AstridApiConstants.PERMISSION_READ);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void getDetails(Task task) {
|
||||||
|
getDetails(task.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void getDetails(long taskId) {
|
||||||
|
Intent intent = new Intent().putExtra(AstridApiConstants.EXTRAS_TASK_ID, taskId);
|
||||||
|
new GtasksDetailExposer().onReceive(context, intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Task newTask() {
|
||||||
|
Task task = new Task();
|
||||||
|
new TaskService().save(task);
|
||||||
|
Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId());
|
||||||
|
new MetadataService().save(metadata);
|
||||||
|
return task;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Task newTask(String list) {
|
||||||
|
Task task = new Task();
|
||||||
|
new TaskService().save(task);
|
||||||
|
Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId());
|
||||||
|
metadata.setValue(GtasksMetadata.LIST_ID, list);
|
||||||
|
new MetadataService().save(metadata);
|
||||||
|
return task;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package com.todoroo.astrid.gtasks;
|
||||||
|
|
||||||
|
public class RobolectricGtasksPreferenceService extends GtasksPreferenceService {
|
||||||
|
|
||||||
|
public RobolectricGtasksPreferenceService() {
|
||||||
|
setToken("");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getIdentifier() {
|
||||||
|
return "test";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void logout() {
|
||||||
|
setToken(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue