Skip to content

Commit

Permalink
refactored services and added service unit tests. Improved unit tests
Browse files Browse the repository at this point in the history
for other classes. Started refactoring UserHelper, will complete by next
commit
  • Loading branch information
Q115 committed Sep 5, 2017
1 parent dbdf717 commit 7bd7ad0
Show file tree
Hide file tree
Showing 35 changed files with 697 additions and 326 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Expand Up @@ -37,9 +37,9 @@ dependencies {
compile 'com.android.support:appcompat-v7:26.0.1'
compile 'com.android.support:design:26.0.1'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
testCompile group: 'org.mockito', name: 'mockito-inline', version: '2.8.9'
testCompile "org.robolectric:robolectric:3.4"
androidTestCompile 'org.mockito:mockito-core:1.10.19'
testCompile 'org.mockito:mockito-core:2.8.9'

//DBFlow
def dbflow_version = "4.0.5"
Expand Down
Expand Up @@ -3,9 +3,12 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;

import com.github.q115.goalie_android.utilsTest.GoalHelperInstrumentedTest;
import com.github.q115.goalie_android.utilsTest.ImageHelperInstrumentedTest;
import com.github.q115.goalie_android.utilsTest.PreferenceHelperInstrumentedTest;
import com.github.q115.goalie_android.utilsTest.UserHelperInstrumentedTest;
import com.raizlabs.android.dbflow.config.FlowManager;

import org.junit.Test;
import org.junit.runner.RunWith;

Expand All @@ -31,14 +34,5 @@ public class MainApplicationInstrumentedTest {
public void initalization() throws Exception {
MainApplication ma = new MainApplication();
ma.initialize(InstrumentationRegistry.getTargetContext());

ImageHelperInstrumentedTest imageHelperInstrumentedTest = new ImageHelperInstrumentedTest();
imageHelperInstrumentedTest.initalization();

PreferenceHelperInstrumentedTest preferenceHelperInstrumentedTest = new PreferenceHelperInstrumentedTest();
preferenceHelperInstrumentedTest.initalization();

UserHelperInstrumentedTest userHelperInstrumentedTest = new UserHelperInstrumentedTest();
userHelperInstrumentedTest.initalization();
}
}
@@ -0,0 +1,106 @@
package com.github.q115.goalie_android.utilsTest;

import android.support.test.InstrumentationRegistry;

import com.github.q115.goalie_android.models.Goal;
import com.github.q115.goalie_android.utils.GoalHelper;
import com.github.q115.goalie_android.utils.UserHelper;
import com.raizlabs.android.dbflow.config.FlowManager;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static test_util.DatabaseUtil.ReadDatabase;

/**
* Created by Qi on 9/5/2017.
*/

public class GoalHelperInstrumentedTest {
@BeforeClass
public static void init() {
FlowManager.init(InstrumentationRegistry.getTargetContext());
}

@AfterClass
public static void teardown() {
FlowManager.reset();
}

@Test
public void initalization() throws Exception {
GoalHelper.getInstance().initialize();
assertNotNull(GoalHelper.getInstance().getFeeds());
assertNotNull(GoalHelper.getInstance().getRequests());
assertEquals(0, GoalHelper.getInstance().getFeeds().size());
assertEquals(0, GoalHelper.getInstance().getRequests().size());
}

@Test
public void goalTest() throws Exception {
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 0);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 0);

Goal goal = new Goal("goal", Goal.GoalCompleteResult.Pending);
GoalHelper.getInstance().addGoal(goal);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 1);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 0);

Goal goal2 = new Goal("goal2", Goal.GoalCompleteResult.Ongoing);
GoalHelper.getInstance().addGoal(goal2);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 0);

Goal goal3 = new Goal("goal3", Goal.GoalCompleteResult.Success);
GoalHelper.getInstance().addGoal(goal3);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 1);

Goal goal4 = new Goal("goal4", Goal.GoalCompleteResult.Failed);
GoalHelper.getInstance().addGoal(goal4);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 2);

Goal goal5 = new Goal("goal5", Goal.GoalCompleteResult.Cancelled);
GoalHelper.getInstance().addGoal(goal5);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 3);

UserHelper.getInstance().getOwnerProfile().finishedGoals.clear();
UserHelper.getInstance().getOwnerProfile().activieGoals.clear();
UserHelper.getInstance().getAllContacts().put("", UserHelper.getInstance().getOwnerProfile());
ReadDatabase();
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 3);

deleteGoal(goal2);

assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 1);
modifyGoal(goal4);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
}

private void deleteGoal(Goal goal) {
int size = UserHelper.getInstance().getOwnerProfile().activieGoals.size()
+ UserHelper.getInstance().getOwnerProfile().finishedGoals.size();

GoalHelper.getInstance().deleteGoal(goal.guid);

int newSize = UserHelper.getInstance().getOwnerProfile().activieGoals.size()
+ UserHelper.getInstance().getOwnerProfile().finishedGoals.size();
assertEquals(newSize, size - 1);
}

private void modifyGoal(Goal goal) {
Goal newGoal = new Goal();
newGoal.guid = goal.guid;
goal.goalCompleteResult = Goal.GoalCompleteResult.Ongoing;

GoalHelper.getInstance().modifyGoal(newGoal);
UserHelper.getInstance().getOwnerProfile().finishedGoals.clear();
ReadDatabase();
}
}
Expand Up @@ -4,6 +4,7 @@
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;

import com.github.q115.goalie_android.https.RESTUploadPhoto;
import com.github.q115.goalie_android.utils.ImageHelper;

import org.junit.Before;
Expand Down Expand Up @@ -65,12 +66,4 @@ public void saveAndDeleteImage() throws Exception {
ImageHelper.getInstance().deleteImageFromPrivateStorage(imageName, ImageHelper.ImageType.PNG);
assertFalse(ImageHelper.getInstance().isImageOnPrivateStorage(imageName, ImageHelper.ImageType.PNG));
}

@Test
public void bitmapToByte() throws Exception {
Bitmap newImage = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);

// compressed image shouldn't be bigger
assertTrue(newImage.getByteCount() >= ImageHelper.bitmapToByte(newImage).length);
}
}
Expand Up @@ -6,6 +6,7 @@

import com.github.q115.goalie_android.models.Goal;
import com.github.q115.goalie_android.models.User;
import com.github.q115.goalie_android.utils.GoalHelper;
import com.github.q115.goalie_android.utils.ImageHelper;
import com.github.q115.goalie_android.utils.UserHelper;
import com.raizlabs.android.dbflow.config.FlowManager;
Expand Down Expand Up @@ -121,69 +122,4 @@ private void addUser(User user) {
assertEquals(1, UserHelper.getInstance().getAllContacts().size());
assertTrue(ModelUtil.isUserEqual(user, UserHelper.getInstance().getAllContacts().get(user.username)));
}

@Test
public void goalTest() throws Exception {
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 0);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 0);

Goal goal = new Goal("goal", Goal.GoalCompleteResult.Pending);
UserHelper.getInstance().addGoal(goal);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 1);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 0);

Goal goal2 = new Goal("goal2", Goal.GoalCompleteResult.Ongoing);
UserHelper.getInstance().addGoal(goal2);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 0);

Goal goal3 = new Goal("goal3", Goal.GoalCompleteResult.Success);
UserHelper.getInstance().addGoal(goal3);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 1);

Goal goal4 = new Goal("goal4", Goal.GoalCompleteResult.Failed);
UserHelper.getInstance().addGoal(goal4);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 2);

Goal goal5 = new Goal("goal5", Goal.GoalCompleteResult.Cancelled);
UserHelper.getInstance().addGoal(goal5);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 3);

UserHelper.getInstance().getOwnerProfile().finishedGoals.clear();
UserHelper.getInstance().getOwnerProfile().activieGoals.clear();
UserHelper.getInstance().getAllContacts().put("", UserHelper.getInstance().getOwnerProfile());
ReadDatabase();
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
assertEquals(UserHelper.getInstance().getOwnerProfile().finishedGoals.size(), 3);

deleteGoal(goal2);

assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 1);
modifyGoal(goal4);
assertEquals(UserHelper.getInstance().getOwnerProfile().activieGoals.size(), 2);
}

private void deleteGoal(Goal goal) {
int size = UserHelper.getInstance().getOwnerProfile().activieGoals.size()
+ UserHelper.getInstance().getOwnerProfile().finishedGoals.size();

UserHelper.getInstance().deleteGoal(goal.guid);

int newSize = UserHelper.getInstance().getOwnerProfile().activieGoals.size()
+ UserHelper.getInstance().getOwnerProfile().finishedGoals.size();
assertEquals(newSize, size - 1);
}

private void modifyGoal(Goal goal) {
Goal newGoal = new Goal();
newGoal.guid = goal.guid;
goal.goalCompleteResult = Goal.GoalCompleteResult.Ongoing;

UserHelper.getInstance().modifyGoal(newGoal);
UserHelper.getInstance().getOwnerProfile().finishedGoals.clear();
ReadDatabase();
}
}
Expand Up @@ -27,11 +27,13 @@ public enum DiagnosticFlag {

public static void logError(DiagnosticFlag diagnosticFlag, String message) {
SimpleDateFormat timeFormatter = new SimpleDateFormat("MM/dd/yyyy hh:mm", Locale.getDefault());
Log.e(diagnosticFlag.toString(), String.format("(%s): %s", timeFormatter.format(System.currentTimeMillis()), message));
Log.e(diagnosticFlag.toString(), String.format("(%s): %s",
timeFormatter.format(System.currentTimeMillis()), message));
}

public static void logDebug(DiagnosticFlag diagnosticFlag, String message) {
SimpleDateFormat timeFormatter = new SimpleDateFormat("MM/dd/yyyy hh:mm", Locale.getDefault());
Log.d(diagnosticFlag.toString(), String.format("(%s): %s", timeFormatter.format(System.currentTimeMillis()), message));
Log.d(diagnosticFlag.toString(), String.format("(%s): %s",
timeFormatter.format(System.currentTimeMillis()), message));
}
}
Expand Up @@ -8,6 +8,7 @@
import com.github.q115.goalie_android.models.Goal;
import com.github.q115.goalie_android.models.User;
import com.github.q115.goalie_android.services.InstanceIDService;
import com.github.q115.goalie_android.utils.GoalHelper;
import com.github.q115.goalie_android.utils.ImageHelper;
import com.github.q115.goalie_android.utils.PreferenceHelper;
import com.github.q115.goalie_android.utils.UserHelper;
Expand Down Expand Up @@ -58,6 +59,7 @@ public void initialize(Context context) {

ImageHelper.getInstance().initialize(context);
UserHelper.getInstance().initialize();
GoalHelper.getInstance().initialize();
PreferenceHelper.getInstance().initialize(context);
ReadDatabase();
UserHelper.getInstance().LoadContacts();
Expand All @@ -76,16 +78,17 @@ private void ReadDatabase() {
List<Goal> goals = SQLite.select().from(Goal.class).queryList();
for (Goal goal : goals) {
if (!goal.createdByUsername.equals(UserHelper.getInstance().getOwnerProfile().username)) {
UserHelper.getInstance().getRequests().add(goal);
GoalHelper.getInstance().getRequests().add(goal);
} else if (UserHelper.getInstance().getAllContacts().get(goal.createdByUsername) != null) {
if (goal.goalCompleteResult == Goal.GoalCompleteResult.Ongoing || goal.goalCompleteResult == Goal.GoalCompleteResult.Pending)
UserHelper.getInstance().getAllContacts().get(goal.createdByUsername).addActivitGoal(goal);
if (goal.goalCompleteResult == Goal.GoalCompleteResult.Ongoing
|| goal.goalCompleteResult == Goal.GoalCompleteResult.Pending)
UserHelper.getInstance().getAllContacts().get(goal.createdByUsername).activieGoals.add(goal);
else
UserHelper.getInstance().getAllContacts().get(goal.createdByUsername).addCompleteGoal(goal);
UserHelper.getInstance().getAllContacts().get(goal.createdByUsername).finishedGoals.add(goal);
}
}
} catch (OutOfMemoryError outOfMemoryException) {
Diagnostic.logError(Diagnostic.DiagnosticFlag.MainApplication, "Too many entries: " + outOfMemoryException.toString());
} catch (OutOfMemoryError ex) {
Diagnostic.logError(Diagnostic.DiagnosticFlag.MainApplication, "Too many entries: " + ex.toString());
} catch (Exception ex) {
Diagnostic.logError(Diagnostic.DiagnosticFlag.MainApplication, "Error loading database: " + ex.toString());
}
Expand Down
Expand Up @@ -6,6 +6,7 @@
import com.android.volley.toolbox.StringRequest;
import com.github.q115.goalie_android.models.Goal;
import com.github.q115.goalie_android.models.User;
import com.github.q115.goalie_android.utils.GoalHelper;
import com.github.q115.goalie_android.utils.UserHelper;

import org.json.JSONObject;
Expand Down Expand Up @@ -100,7 +101,7 @@ public void onResponse(String guid) {

Goal goal = new Goal(guid, mUsername, mTitle, mStart, mEnd, mWager, mEncouragement,
Goal.GoalCompleteResult.Pending, mReferee, System.currentTimeMillis());
UserHelper.getInstance().addGoal(goal);
GoalHelper.getInstance().addGoal(goal);

if (!mReferee.equals(mUsername)) {
UserHelper.getInstance().getOwnerProfile().reputation -= mWager;
Expand Down
Expand Up @@ -9,6 +9,7 @@
import com.github.q115.goalie_android.models.Goal;
import com.github.q115.goalie_android.models.GoalFeed;
import com.github.q115.goalie_android.models.User;
import com.github.q115.goalie_android.utils.GoalHelper;
import com.github.q115.goalie_android.utils.PreferenceHelper;
import com.github.q115.goalie_android.utils.UserHelper;

Expand Down Expand Up @@ -144,7 +145,7 @@ private void setupFeeds(JSONArray jsonAll) throws Exception {
goalFeedList.add(goalFeed);
}

UserHelper.getInstance().setFeeds(goalFeedList);
GoalHelper.getInstance().setFeeds(goalFeedList);
}

private void setupMyGoals(JSONArray jsonMy) throws Exception {
Expand All @@ -170,7 +171,7 @@ private void setupMyGoals(JSONArray jsonMy) throws Exception {
if (fetchedGoal != null) {
if (goal.goalCompleteResult != fetchedGoal.goalCompleteResult) {
goal.goalCompleteResult = fetchedGoal.goalCompleteResult;
UserHelper.getInstance().modifyGoal(goal);
GoalHelper.getInstance().modifyGoal(goal);

if (goal.goalCompleteResult != Goal.GoalCompleteResult.Pending
&& goal.goalCompleteResult != Goal.GoalCompleteResult.Ongoing) {
Expand Down Expand Up @@ -211,6 +212,6 @@ private void setupRequests(JSONArray jsonMyRequests) throws Exception {
}
}

UserHelper.getInstance().setRequests(requests);
GoalHelper.getInstance().setRequests(requests);
}
}
Expand Up @@ -5,6 +5,7 @@
import com.android.volley.Request;
import com.android.volley.toolbox.StringRequest;
import com.github.q115.goalie_android.models.Goal;
import com.github.q115.goalie_android.utils.GoalHelper;
import com.github.q115.goalie_android.utils.UserHelper;

import org.json.JSONObject;
Expand Down Expand Up @@ -85,7 +86,7 @@ public void onResponse(String response) {
if (mGoalCompleteResult == Goal.GoalCompleteResult.Failed
|| mGoalCompleteResult == Goal.GoalCompleteResult.Success
|| mGoalCompleteResult == Goal.GoalCompleteResult.Cancelled) {
ArrayList<Goal> list = UserHelper.getInstance().getRequests();
ArrayList<Goal> list = GoalHelper.getInstance().getRequests();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).guid.equals(mGuid)) {
list.get(i).activityDate = System.currentTimeMillis();
Expand All @@ -94,7 +95,7 @@ public void onResponse(String response) {
}
}
} else {
ArrayList<Goal> list = UserHelper.getInstance().getRequests();
ArrayList<Goal> list = GoalHelper.getInstance().getRequests();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).guid.equals(mGuid)) {
list.get(i).goalCompleteResult = mGoalCompleteResult;
Expand Down
Expand Up @@ -97,13 +97,13 @@ public byte[] getBody() {
VolleyRequestQueue.getInstance().addToRequestQueue(req);
}

private byte[] getBytesFromBitmap(Bitmap bmp) {
public byte[] getBytesFromBitmap(Bitmap bmp) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 99, baos);
return baos.toByteArray();
}

private byte[] getBytesFromString(String string) {
public byte[] getBytesFromString(String string) {
return string.getBytes(Charset.defaultCharset());
}

Expand Down

0 comments on commit 7bd7ad0

Please sign in to comment.