mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
add more api tests
This commit is contained in:
parent
e78fea7375
commit
181aae799d
11 changed files with 262 additions and 92 deletions
|
|
@ -246,16 +246,14 @@ public class APIHelper implements Action1<Throwable> {
|
|||
auth.setPassword(password);
|
||||
auth.setConfirmPassword(confirmPassword);
|
||||
auth.setEmail(email);
|
||||
return this.apiService.registerUser(auth)
|
||||
.compose(this.configureApiCallObserver());
|
||||
return this.apiService.registerUser(auth);
|
||||
}
|
||||
|
||||
public Observable<UserAuthResponse> connectUser(String username, String password) {
|
||||
UserAuth auth = new UserAuth();
|
||||
auth.setUsername(username);
|
||||
auth.setPassword(password);
|
||||
return this.apiService.connectLocal(auth)
|
||||
.compose(this.configureApiCallObserver());
|
||||
return this.apiService.connectLocal(auth);
|
||||
}
|
||||
|
||||
public Observable<UserAuthResponse> connectSocial(String userId, String accessToken) {
|
||||
|
|
@ -265,8 +263,7 @@ public class APIHelper implements Action1<Throwable> {
|
|||
authResponse.setClient_id(userId);
|
||||
authResponse.setAccess_token(accessToken);
|
||||
auth.setAuthResponse(authResponse);
|
||||
return this.apiService.connectSocial(auth)
|
||||
.compose(this.configureApiCallObserver());
|
||||
return this.apiService.connectSocial(auth);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -154,9 +154,9 @@ public class SetupActivity extends BaseActivity implements View.OnClickListener,
|
|||
public void onClick(View v) {
|
||||
if (v == this.nextButton) {
|
||||
if (this.pager.getCurrentItem() == 1) {
|
||||
List<Map<String, Object>> newTasks = this.taskSetupFragment.createSampleTasks();
|
||||
List<Task> newTasks = this.taskSetupFragment.createSampleTasks();
|
||||
this.completedSetup = true;
|
||||
this.apiHelper.apiService.createItems(newTasks)
|
||||
this.apiHelper.apiService.createTasks(newTasks)
|
||||
.compose(this.apiHelper.configureApiCallObserver())
|
||||
.subscribe(tasks -> {
|
||||
onUserReceived(user);
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.habitrpg.android.habitica.components.AppComponent;
|
|||
import com.habitrpg.android.habitica.ui.activities.SetupActivity;
|
||||
import com.habitrpg.android.habitica.ui.adapter.setup.TaskSetupAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Days;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
|
@ -104,7 +105,7 @@ public class TaskSetupFragment extends BaseFragment {
|
|||
};
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> createSampleTasks() {
|
||||
public List<Task> createSampleTasks() {
|
||||
List<String> groups = new ArrayList<>();
|
||||
int i = 0;
|
||||
for (Boolean checked : this.adapter.checkedList) {
|
||||
|
|
@ -113,10 +114,10 @@ public class TaskSetupFragment extends BaseFragment {
|
|||
}
|
||||
i++;
|
||||
}
|
||||
List<Map<String, Object>> tasks = new ArrayList<>();
|
||||
List<Task> tasks = new ArrayList<>();
|
||||
for (Object[] task : this.tasks) {
|
||||
if (groups.contains((String) task[0])) {
|
||||
Map<String, Object> taskObject = new HashMap<>();
|
||||
Task taskObject;
|
||||
if (task.length == 5) {
|
||||
taskObject = this.makeTaskObject((String) task[1], (String) task[2], (Boolean) task[3], (Boolean) task[4]);
|
||||
} else {
|
||||
|
|
@ -128,29 +129,29 @@ public class TaskSetupFragment extends BaseFragment {
|
|||
return tasks;
|
||||
}
|
||||
|
||||
private Map<String, Object> makeTaskObject(String type, String text, Boolean up, Boolean down) {
|
||||
Map<String, Object> task = new HashMap<>();
|
||||
task.put("text", text);
|
||||
task.put("priority", 1);
|
||||
task.put("type", type);
|
||||
private Task makeTaskObject(String type, String text, Boolean up, Boolean down) {
|
||||
Task task = new Task();
|
||||
task.text = text;
|
||||
task.priority = 1.0f;
|
||||
task.type = type;
|
||||
|
||||
if (type.equals("habit")) {
|
||||
task.put("up", up);
|
||||
task.put("down", down);
|
||||
task.up = up;
|
||||
task.down = down;
|
||||
}
|
||||
|
||||
if (type.equals("daily")) {
|
||||
task.put("frequency", "weekly");
|
||||
task.put("startDate", new Date());
|
||||
Map<String, Boolean> repeat= new HashMap<>();
|
||||
repeat.put("m", true);
|
||||
repeat.put("t", true);
|
||||
repeat.put("w", true);
|
||||
repeat.put("th", true);
|
||||
repeat.put("f", true);
|
||||
repeat.put("s", true);
|
||||
repeat.put("su", true);
|
||||
task.put("repeat", repeat);
|
||||
task.frequency = "weekly";
|
||||
task.startDate = new Date();
|
||||
Days days = new Days();
|
||||
days.setM(true);
|
||||
days.setT(true);
|
||||
days.setW(true);
|
||||
days.setTh(true);
|
||||
days.setF(true);
|
||||
days.setS(true);
|
||||
days.setSu(true);
|
||||
task.repeat = days;
|
||||
}
|
||||
|
||||
return task;
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ public interface ApiService {
|
|||
Observable<Task> createItem(@Body Task item);
|
||||
|
||||
@POST("tasks/user")
|
||||
Observable<List<Task>> createItems(@Body List<Map<String, Object>> tasks);
|
||||
Observable<List<Task>> createTasks(@Body List<Task> tasks);
|
||||
|
||||
@PUT("tasks/{id}")
|
||||
Observable<Task> updateTask(@Path("id") String id, @Body Task item);
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ public class Task extends BaseModel {
|
|||
public Integer everyX, streak;
|
||||
|
||||
@Column
|
||||
public
|
||||
Date startDate;
|
||||
|
||||
@Column
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public class TaskSerializer implements JsonSerializer<Task> {
|
|||
@Override
|
||||
public JsonElement serialize(Task task, Type typeOfSrc, JsonSerializationContext context) {
|
||||
JsonObject obj = new JsonObject();
|
||||
obj.addProperty("id", task.getId());
|
||||
obj.addProperty("_id", task.getId());
|
||||
obj.addProperty("text", task.getText());
|
||||
obj.addProperty("notes", task.getNotes());
|
||||
obj.addProperty("value", task.getValue());
|
||||
|
|
|
|||
|
|
@ -1,60 +0,0 @@
|
|||
package com.habitrpg.android.habitica;
|
||||
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricGradleTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import android.os.Build;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import rx.observers.TestSubscriber;
|
||||
|
||||
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
|
||||
@RunWith(RobolectricGradleTestRunner.class)
|
||||
public class APIHelperTests {
|
||||
|
||||
private APIHelper apiHelper;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
HostConfig hostConfig = new HostConfig(BuildConfig.BASE_URL,
|
||||
BuildConfig.PORT,
|
||||
BuildConfig.TEST_USER_KEY,
|
||||
BuildConfig.TEST_USER_ID);
|
||||
apiHelper = new APIHelper(APIHelper.createGsonFactory(), hostConfig);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldLoadUserFromServer() {
|
||||
TestSubscriber<HabitRPGUser> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.apiService.getUser().subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
testSubscriber.assertValueCount(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldLoadTasksFromServer() {
|
||||
TestSubscriber<TaskList> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.apiService.getTasks().subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldLoadCompleteUserFromServer() {
|
||||
TestSubscriber<HabitRPGUser> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.retrieveUser(true).subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
testSubscriber.assertValueCount(1);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
package com.habitrpg.android.habitica.api;
|
||||
|
||||
|
||||
import com.habitrpg.android.habitica.APIHelper;
|
||||
import com.habitrpg.android.habitica.BuildConfig;
|
||||
import com.habitrpg.android.habitica.HostConfig;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricGradleTestRunner;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import android.os.Build;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import rx.observers.TestSubscriber;
|
||||
|
||||
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
|
||||
@RunWith(RobolectricGradleTestRunner.class)
|
||||
public class BaseAPITests {
|
||||
|
||||
public APIHelper apiHelper;
|
||||
public HostConfig hostConfig;
|
||||
|
||||
public String username;
|
||||
public final String password = "password";
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
hostConfig = new HostConfig(BuildConfig.BASE_URL,
|
||||
BuildConfig.PORT,
|
||||
"",
|
||||
"");
|
||||
apiHelper = new APIHelper(APIHelper.createGsonFactory(), hostConfig);
|
||||
generateUser();
|
||||
}
|
||||
|
||||
public void generateUser() {
|
||||
TestSubscriber<UserAuthResponse> testSubscriber = new TestSubscriber<>();
|
||||
username = UUID.randomUUID().toString();
|
||||
apiHelper.registerUser(username, username+"@example.com", password, password)
|
||||
.subscribe(testSubscriber);
|
||||
testSubscriber.assertCompleted();
|
||||
UserAuthResponse response = testSubscriber.getOnNextEvents().get(0);
|
||||
hostConfig.setUser(response.getId());
|
||||
hostConfig.setApi(response.getApiToken() != null ? response.getApiToken() : response.getToken());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,110 @@
|
|||
package com.habitrpg.android.habitica.api;
|
||||
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList;
|
||||
|
||||
import org.hamcrest.CoreMatchers;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import rx.observers.TestSubscriber;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class TaskAPITests extends BaseAPITests {
|
||||
|
||||
private Task habit1;
|
||||
private Task daily1;
|
||||
private Task todo1;
|
||||
private Task reward1;
|
||||
|
||||
@Override
|
||||
public void setUp() {
|
||||
super.setUp();
|
||||
TestSubscriber<TaskList> oldTaskSubscriber = new TestSubscriber<>();
|
||||
apiHelper.apiService.getTasks().subscribe(oldTaskSubscriber);
|
||||
TaskList tasks = oldTaskSubscriber.getOnNextEvents().get(0);
|
||||
for (Task task : tasks.tasks.values()) {
|
||||
apiHelper.apiService.deleteTask(task.getId()).subscribe(new TestSubscriber<>());
|
||||
}
|
||||
|
||||
List<Task> randomTasks = new ArrayList<>();
|
||||
randomTasks.add(createRandomTask("1", "habit"));
|
||||
habit1 = randomTasks.get(0);
|
||||
randomTasks.add(createRandomTask("2", "habit"));
|
||||
randomTasks.add(createRandomTask("3", "daily"));
|
||||
daily1 = randomTasks.get(2);
|
||||
randomTasks.add(createRandomTask("4", "daily"));
|
||||
randomTasks.add(createRandomTask("5", "todo"));
|
||||
todo1 = randomTasks.get(4);
|
||||
randomTasks.add(createRandomTask("6", "todo"));
|
||||
randomTasks.add(createRandomTask("7", "reward"));
|
||||
reward1 = randomTasks.get(6);
|
||||
randomTasks.add(createRandomTask("8", "reward"));
|
||||
TestSubscriber<List<Task>> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.apiService.createTasks(randomTasks).subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
}
|
||||
|
||||
private Task createRandomTask(String number, String type) {
|
||||
Task task = new Task();
|
||||
task.setId(String.valueOf(UUID.randomUUID()));
|
||||
task.setText("task-"+number);
|
||||
task.setType(type);
|
||||
task.setTags(new ArrayList<>());
|
||||
task.setChecklist(new ArrayList<>());
|
||||
return task;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldLoadAllTasksFromServer() {
|
||||
TestSubscriber<TaskList> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.apiService.getTasks().subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
TaskList taskList = testSubscriber.getOnNextEvents().get(0);
|
||||
assertEquals(8, taskList.tasks.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldBeAbleToScoreTaskUp() {
|
||||
TestSubscriber<TaskDirectionData> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.apiService.postTaskDirection(habit1.getId(), "up").subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
TaskDirectionData data = testSubscriber.getOnNextEvents().get(0);
|
||||
assertTrue(data.getDelta() > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldBeAbleToScoreTaskDown() {
|
||||
TestSubscriber<TaskDirectionData> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.apiService.postTaskDirection(habit1.getId(), "down").subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
TaskDirectionData data = testSubscriber.getOnNextEvents().get(0);
|
||||
assertTrue(data.getDelta() < 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldBeAbleToDeleteATask() {
|
||||
TestSubscriber<Void> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.apiService.deleteTask(habit1.getId()).subscribe(testSubscriber);
|
||||
testSubscriber.assertCompleted();
|
||||
testSubscriber.assertNoErrors();
|
||||
TestSubscriber<TaskList> newTaskListSubscriber = new TestSubscriber<>();
|
||||
apiHelper.apiService.getTasks().subscribe(newTaskListSubscriber);
|
||||
TaskList taskList = newTaskListSubscriber.getOnNextEvents().get(0);
|
||||
assertEquals(7, taskList.tasks.size());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
package com.habitrpg.android.habitica.api;
|
||||
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskList;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import rx.observers.TestSubscriber;
|
||||
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
import static junit.framework.Assert.assertNotSame;
|
||||
|
||||
public class UserAPITests extends BaseAPITests {
|
||||
|
||||
@Test
|
||||
public void shouldLoadUserFromServer() {
|
||||
TestSubscriber<HabitRPGUser> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.apiService.getUser().subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
testSubscriber.assertValueCount(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldLoadCompleteUserFromServer() {
|
||||
TestSubscriber<HabitRPGUser> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.retrieveUser(true).subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
testSubscriber.assertValueCount(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldRegisterNewUser() {
|
||||
hostConfig.setUser("");
|
||||
hostConfig.setApi("");
|
||||
TestSubscriber<UserAuthResponse> testSubscriber = new TestSubscriber<>();
|
||||
username = UUID.randomUUID().toString();
|
||||
apiHelper.registerUser(username, username+"@example.com", password, password)
|
||||
.subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
UserAuthResponse response = testSubscriber.getOnNextEvents().get(0);
|
||||
|
||||
assertNotSame(hostConfig.getUser(), response.getId());
|
||||
assertNotSame(hostConfig.getApi(), response.getApiToken() != null ? response.getApiToken() : response.getToken());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldLoginExistingUser() {
|
||||
TestSubscriber<UserAuthResponse> testSubscriber = new TestSubscriber<>();
|
||||
apiHelper.connectUser(username, password).subscribe(testSubscriber);
|
||||
testSubscriber.assertNoErrors();
|
||||
testSubscriber.assertCompleted();
|
||||
UserAuthResponse response = testSubscriber.getOnNextEvents().get(0);
|
||||
assertEquals(hostConfig.getUser(), response.getId());
|
||||
assertEquals(hostConfig.getApi(), response.getApiToken() != null ? response.getApiToken() : response.getToken());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -11,4 +11,4 @@ PORT=80
|
|||
# BASE_URL=http://10.0.2.2:3000
|
||||
|
||||
# Production
|
||||
BASE_URL=https://habitica.com
|
||||
BASE_URL=https://habitica.com
|
||||
|
|
|
|||
Loading…
Reference in a new issue