package org.openmhealth.shim.googlefit.mapper;
import org.openmhealth.schema.domain.omh.HeartRate;
import org.openmhealth.shim.googlefit.common.GoogleFitTestProperties;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.io.IOException;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.openmhealth.schema.domain.omh.HeartRate.SCHEMA_ID;
/**
* @author Chris Schaefbauer
*/
public class GoogleFitHeartRateDataPointMapperUnitTests extends GoogleFitDataPointMapperUnitTests<HeartRate> {
private final GoogleFitHeartRateDataPointMapper mapper = new GoogleFitHeartRateDataPointMapper();
@BeforeClass
@Override
public void initializeResponseNode() throws IOException {
responseNode = asJsonNode("org/openmhealth/shim/googlefit/mapper/googlefit-merge-heart-rate.json");
}
@Test
public void asDataPointsShouldReturnCorrectNumberOfDataPoints() {
assertThat(mapper.asDataPoints(responseNode).size(), equalTo(2));
}
@Test
public void asDataPointsShouldReturnCorrectDataPointsForSingleTimePoint() {
assertThatDataPointMatches(mapper.asDataPoints(responseNode).get(0),
createFloatingPointTestProperties(54, "2015-01-30T15:37:48.186Z", null,
"raw:com.google.heart_rate.bpm:com.azumio.instantheartrate.full:", SCHEMA_ID));
}
@Test
public void asDataPointsShouldReturnCorrectDataPointsForTimeRange() {
assertThatDataPointMatches(mapper.asDataPoints(responseNode).get(1),
createFloatingPointTestProperties(58.0, "2015-07-10T14:34:32.914Z", "2015-07-10T14:34:33.915Z",
"raw:com.google.heart_rate.bpm:si.modula.android.instantheartrate:", SCHEMA_ID));
}
@Override
public void assertThatMeasureMatches(HeartRate testMeasure, GoogleFitTestProperties testProperties) {
HeartRate.Builder expectedHeartRateBuilder = new HeartRate.Builder(testProperties.getFpValue());
setExpectedEffectiveTimeFrame(expectedHeartRateBuilder, testProperties);
assertThat(testMeasure, equalTo(expectedHeartRateBuilder.build()));
}
}