1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-09-01 20:33:31 +02:00

finalize add measurement use case test

This commit is contained in:
oliexdev
2018-06-01 21:16:33 +02:00
parent 8ae7ead9c2
commit 2140deb985
2 changed files with 118 additions and 13 deletions

View File

@@ -19,35 +19,50 @@ import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.test.InstrumentationRegistry; import android.support.test.InstrumentationRegistry;
import android.support.test.espresso.ViewInteraction;
import android.support.test.espresso.contrib.PickerActions; import android.support.test.espresso.contrib.PickerActions;
import android.support.test.rule.ActivityTestRule; import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4; import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.LargeTest;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.widget.DatePicker; import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import com.health.openscale.R; import com.health.openscale.R;
import com.health.openscale.core.OpenScale; import com.health.openscale.core.OpenScale;
import com.health.openscale.core.datatypes.ScaleMeasurement; import com.health.openscale.core.datatypes.ScaleMeasurement;
import com.health.openscale.core.datatypes.ScaleUser; import com.health.openscale.core.datatypes.ScaleUser;
import com.health.openscale.gui.activities.BaseAppCompatActivity; import com.health.openscale.gui.activities.BaseAppCompatActivity;
import com.health.openscale.gui.views.BicepsMeasurementView;
import com.health.openscale.gui.views.BoneMeasurementView;
import com.health.openscale.gui.views.Caliper1MeasurementView;
import com.health.openscale.gui.views.Caliper2MeasurementView;
import com.health.openscale.gui.views.Caliper3MeasurementView;
import com.health.openscale.gui.views.ChestMeasurementView;
import com.health.openscale.gui.views.CommentMeasurementView;
import com.health.openscale.gui.views.DateMeasurementView;
import com.health.openscale.gui.views.FatMeasurementView;
import com.health.openscale.gui.views.HipMeasurementView;
import com.health.openscale.gui.views.LBMMeasurementView;
import com.health.openscale.gui.views.MeasurementView;
import com.health.openscale.gui.views.MuscleMeasurementView;
import com.health.openscale.gui.views.NeckMeasurementView;
import com.health.openscale.gui.views.ThighMeasurementView;
import com.health.openscale.gui.views.TimeMeasurementView;
import com.health.openscale.gui.views.VisceralFatMeasurementView;
import com.health.openscale.gui.views.WaistMeasurementView;
import com.health.openscale.gui.views.WaterMeasurementView;
import com.health.openscale.gui.views.WeightMeasurementView;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.Matchers; import org.hamcrest.Matchers;
import org.hamcrest.TypeSafeMatcher;
import org.junit.After; import org.junit.After;
import org.junit.AfterClass; import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import java.util.Calendar; import java.util.Calendar;
import java.util.List;
import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.click;
@@ -56,7 +71,6 @@ import static android.support.test.espresso.action.ViewActions.replaceText;
import static android.support.test.espresso.action.ViewActions.scrollTo; import static android.support.test.espresso.action.ViewActions.scrollTo;
import static android.support.test.espresso.matcher.ViewMatchers.withClassName; import static android.support.test.espresso.matcher.ViewMatchers.withClassName;
import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static org.hamcrest.Matchers.allOf;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@LargeTest @LargeTest
@@ -79,8 +93,8 @@ public class AddMeasurementTest {
openScale = OpenScale.getInstance(); openScale = OpenScale.getInstance();
openScale.addScaleUser(male); male.setId(openScale.addScaleUser(male));
openScale.addScaleUser(female); female.setId(openScale.addScaleUser(female));
// Set first start to true to get the user add dialog // Set first start to true to get the user add dialog
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
@@ -88,19 +102,77 @@ public class AddMeasurementTest {
.putBoolean("firstStart", false) .putBoolean("firstStart", false)
.putString(BaseAppCompatActivity.PREFERENCE_LANGUAGE, "en") .putString(BaseAppCompatActivity.PREFERENCE_LANGUAGE, "en")
.putInt("selectedUserId", male.getId()) .putInt("selectedUserId", male.getId())
.putBoolean(VisceralFatMeasurementView.KEY + "Enable", true)
.putBoolean(LBMMeasurementView.KEY + "Enable", true)
.putBoolean(BoneMeasurementView.KEY + "Enable", true)
.putBoolean(WaistMeasurementView.KEY + "Enable", true)
.putBoolean(HipMeasurementView.KEY + "Enable", true)
.putBoolean(ChestMeasurementView.KEY + "Enable", true)
.putBoolean(BicepsMeasurementView.KEY + "Enable", true)
.putBoolean(ThighMeasurementView.KEY + "Enable", true)
.putBoolean(NeckMeasurementView.KEY + "Enable", true)
.putBoolean(Caliper1MeasurementView.KEY + "Enable", true)
.putBoolean(Caliper2MeasurementView.KEY + "Enable", true)
.putBoolean(Caliper3MeasurementView.KEY + "Enable", true)
.commit(); .commit();
} }
@After
public void addMeasurementVerification() {
List<ScaleMeasurement> scaleMeasurementList = openScale.getScaleMeasurementList();
assertEquals(1, scaleMeasurementList.size());
TestData.compareMeasurements(TestData.getMeasurement(1), scaleMeasurementList.get(0));
}
@AfterClass @AfterClass
public static void addMeasurementVerification() { public static void cleanup() {
openScale.deleteScaleUser(male.getId()); openScale.deleteScaleUser(male.getId());
openScale.deleteScaleUser(female.getId()); openScale.deleteScaleUser(female.getId());
} }
@Test @Test
public void addMeasurementTest() { public void addMeasurementTest() {
ScaleMeasurement measurement = TestData.getMeasurement(1);
onView(withId(R.id.action_add_measurement)).perform(click()); onView(withId(R.id.action_add_measurement)).perform(click());
ScaleMeasurement measurement = TestData.getMeasurement(1); onView(withClassName(Matchers.equalTo(DateMeasurementView.class.getName()))).perform(scrollTo(), click());
Calendar date = Calendar.getInstance();
date.setTime(measurement.getDateTime());
onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(date.get(Calendar.YEAR), date.get(Calendar.MONTH)+1, date.get(Calendar.DAY_OF_MONTH)));
onView(withId(android.R.id.button1)).perform(click());
onView(withClassName(Matchers.equalTo(TimeMeasurementView.class.getName()))).perform(scrollTo(), click());
onView(withClassName(Matchers.equalTo(TimePicker.class.getName()))).perform(PickerActions.setTime(date.get(Calendar.HOUR_OF_DAY), date.get(Calendar.MINUTE)));
onView(withId(android.R.id.button1)).perform(click());
setMeasuremntField(WeightMeasurementView.class.getName(), measurement.getWeight());
setMeasuremntField(FatMeasurementView.class.getName(), measurement.getFat());
setMeasuremntField(WaterMeasurementView.class.getName(), measurement.getWater());
setMeasuremntField(MuscleMeasurementView.class.getName(), measurement.getMuscle());
setMeasuremntField(LBMMeasurementView.class.getName(), measurement.getLbm());
setMeasuremntField(BoneMeasurementView.class.getName(), measurement.getBone());
setMeasuremntField(WaistMeasurementView.class.getName(), measurement.getWaist());
setMeasuremntField(HipMeasurementView.class.getName(), measurement.getHip());
setMeasuremntField(VisceralFatMeasurementView.class.getName(), measurement.getVisceralFat());
setMeasuremntField(ChestMeasurementView.class.getName(), measurement.getChest());
setMeasuremntField(ThighMeasurementView.class.getName(), measurement.getThigh());
setMeasuremntField(BicepsMeasurementView.class.getName(), measurement.getBiceps());
setMeasuremntField(NeckMeasurementView.class.getName(), measurement.getNeck());
setMeasuremntField(Caliper1MeasurementView.class.getName(), measurement.getCaliper1());
setMeasuremntField(Caliper2MeasurementView.class.getName(), measurement.getCaliper2());
setMeasuremntField(Caliper3MeasurementView.class.getName(), measurement.getCaliper3());
onView(withClassName(Matchers.equalTo(CommentMeasurementView.class.getName()))).perform(scrollTo(), click());
onView(withClassName(Matchers.equalTo(EditText.class.getName()))).perform(click(), replaceText(measurement.getComment()), closeSoftKeyboard());
onView(withId(android.R.id.button1)).perform(click());
onView(withId(R.id.saveButton)).perform(click());
}
private void setMeasuremntField(String className, float value) {
onView(withClassName(Matchers.equalTo(className))).perform(scrollTo(), click());
onView(withId(R.id.float_input)).perform(replaceText(String.valueOf(value)), closeSoftKeyboard());
onView(withId(android.R.id.button1)).perform(click());
} }
} }

View File

@@ -23,8 +23,11 @@ import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.Random; import java.util.Random;
import static org.junit.Assert.assertEquals;
public class TestData { public class TestData {
private static Random rand = new Random(); private static Random rand = new Random();
private static final double DELTA = 1e-15;
public static ScaleUser getMaleUser() { public static ScaleUser getMaleUser() {
ScaleUser male = new ScaleUser(); ScaleUser male = new ScaleUser();
@@ -76,6 +79,7 @@ public class TestData {
measurement.setHip(60.0f + getRandNumberInRange(0,50)); measurement.setHip(60.0f + getRandNumberInRange(0,50));
measurement.setChest(80.0f + getRandNumberInRange(0,50)); measurement.setChest(80.0f + getRandNumberInRange(0,50));
measurement.setThigh(40.0f + getRandNumberInRange(0,50)); measurement.setThigh(40.0f + getRandNumberInRange(0,50));
measurement.setVisceralFat(10 + getRandNumberInRange(0,5));
measurement.setBiceps(30.0f + getRandNumberInRange(0,50)); measurement.setBiceps(30.0f + getRandNumberInRange(0,50));
measurement.setNeck(15.0f + getRandNumberInRange(0,50)); measurement.setNeck(15.0f + getRandNumberInRange(0,50));
measurement.setCaliper1(5.0f + getRandNumberInRange(0,10)); measurement.setCaliper1(5.0f + getRandNumberInRange(0,10));
@@ -86,10 +90,35 @@ public class TestData {
return measurement; return measurement;
} }
public static void compareMeasurements(ScaleMeasurement measurementA, ScaleMeasurement measurementB) {
assertEquals(measurementA.getDateTime().getTime(), measurementB.getDateTime().getTime(), DELTA);
assertEquals(measurementA.getWeight(), measurementB.getWeight(), DELTA);
assertEquals(measurementA.getFat(), measurementB.getFat(), DELTA);
assertEquals(measurementA.getWater(), measurementB.getWater(), DELTA);
assertEquals(measurementA.getMuscle(), measurementB.getMuscle(), DELTA);
assertEquals(measurementA.getLbm(), measurementB.getLbm(), DELTA);
assertEquals(measurementA.getBone(), measurementB.getBone(), DELTA);
assertEquals(measurementA.getWaist(), measurementB.getWaist(), DELTA);
assertEquals(measurementA.getHip(), measurementB.getHip(), DELTA);
assertEquals(measurementA.getChest(), measurementB.getChest(), DELTA);
assertEquals(measurementA.getThigh(), measurementB.getThigh(), DELTA);
assertEquals(measurementA.getVisceralFat(), measurementB.getVisceralFat(), DELTA);
assertEquals(measurementA.getBiceps(), measurementB.getBiceps(), DELTA);
assertEquals(measurementA.getNeck(), measurementB.getNeck(), DELTA);
assertEquals(measurementA.getCaliper1(), measurementB.getCaliper1(), DELTA);
assertEquals(measurementA.getCaliper2(), measurementB.getCaliper2(), DELTA);
assertEquals(measurementA.getCaliper3(), measurementB.getCaliper3(), DELTA);
assertEquals(measurementA.getComment(), measurementB.getComment());
}
private static Date getDateFromYears(int years) { private static Date getDateFromYears(int years) {
Calendar currentTime = Calendar.getInstance(); Calendar currentTime = Calendar.getInstance();
currentTime.add(Calendar.YEAR, years); currentTime.add(Calendar.YEAR, years);
currentTime.set(Calendar.HOUR_OF_DAY, 8);
currentTime.set(Calendar.MINUTE, 0);
currentTime.set(Calendar.MILLISECOND, 0);
currentTime.set(Calendar.SECOND, 0);
return currentTime.getTime(); return currentTime.getTime();
} }
@@ -98,6 +127,10 @@ public class TestData {
Calendar currentTime = Calendar.getInstance(); Calendar currentTime = Calendar.getInstance();
currentTime.add(Calendar.DAY_OF_YEAR, days); currentTime.add(Calendar.DAY_OF_YEAR, days);
currentTime.set(Calendar.HOUR_OF_DAY, 8);
currentTime.set(Calendar.MINUTE, 0);
currentTime.set(Calendar.MILLISECOND, 0);
currentTime.set(Calendar.SECOND, 0);
return currentTime.getTime(); return currentTime.getTime();
} }