Added JSON test for Observation.
This commit is contained in:
parent
411f6ca38c
commit
ff1622c830
@ -46,6 +46,17 @@
|
||||
<version>${dropwizard.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-core</artifactId>
|
||||
<version>2.22.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.8</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
|
@ -0,0 +1,29 @@
|
||||
package uk.co.neviyn.Observations.api;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ObservationEntry {
|
||||
|
||||
@NonNull
|
||||
@JsonProperty
|
||||
private String type;
|
||||
|
||||
@NonNull
|
||||
@JsonProperty
|
||||
private int rating;
|
||||
|
||||
@NonNull
|
||||
@JsonProperty
|
||||
private String strengths;
|
||||
|
||||
@NonNull
|
||||
@JsonProperty
|
||||
private String improvements;
|
||||
}
|
@ -1,17 +1,22 @@
|
||||
package uk.co.neviyn.Observations.core;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.*;
|
||||
import org.apache.commons.lang3.SerializationUtils;
|
||||
import org.jdbi.v3.core.mapper.RowMapper;
|
||||
import org.jdbi.v3.core.statement.StatementContext;
|
||||
import org.joda.time.DateTime;
|
||||
import uk.co.neviyn.Observations.api.ObservationEntry;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class Observation {
|
||||
|
||||
@NonNull
|
||||
@ -36,14 +41,14 @@ public class Observation {
|
||||
|
||||
@NonNull
|
||||
@JsonProperty
|
||||
private String rawData;
|
||||
private List<ObservationEntry> rawData;
|
||||
|
||||
@NonNull
|
||||
@JsonProperty
|
||||
private DateTime date;
|
||||
|
||||
public Observation(int siteId, String observed, int monitoring, int control, int conservatism, int teamwork,
|
||||
int knowledge, String rawData) {
|
||||
int knowledge, List<ObservationEntry> rawData) {
|
||||
this.siteId = siteId;
|
||||
this.observed = observed;
|
||||
this.monitoring = monitoring;
|
||||
@ -55,7 +60,7 @@ public class Observation {
|
||||
}
|
||||
|
||||
private Observation(int id, int siteId, String observed, String type, int monitoring, int control, int conservatism,
|
||||
int teamwork, int knowledge, String rawData, DateTime date) {
|
||||
int teamwork, int knowledge, byte[] rawData, DateTime date) {
|
||||
this.id = id;
|
||||
this.siteId = siteId;
|
||||
this.observed = observed;
|
||||
@ -65,16 +70,20 @@ public class Observation {
|
||||
this.conservatism = conservatism;
|
||||
this.teamwork = teamwork;
|
||||
this.knowledge = knowledge;
|
||||
this.rawData = rawData;
|
||||
this.rawData = SerializationUtils.deserialize(rawData);
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public byte[] serializeRawData(){
|
||||
return SerializationUtils.serialize((Serializable) rawData);
|
||||
}
|
||||
|
||||
public static class Mapper implements RowMapper<Observation> {
|
||||
|
||||
public Observation map(ResultSet rs, StatementContext ctx) throws SQLException {
|
||||
return new Observation(rs.getInt("id"), rs.getInt("siteId"), rs.getString("observed"), rs.getString("type"),
|
||||
rs.getInt("monitoring"), rs.getInt("control"), rs.getInt("conservatism"), rs.getInt("teamwork"),
|
||||
rs.getInt("knowledge"), rs.getString("rawData"), new DateTime(rs.getDate("date")));
|
||||
rs.getInt("knowledge"), rs.getBytes("rawData"), new DateTime(rs.getDate("date")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ public interface ObservationDao {
|
||||
|
||||
@SqlUpdate("CREATE TABLE IF NOT EXISTS observations (id INTEGER PRIMARY KEY, siteId INTEGER, " +
|
||||
"observed TEXT, type TEXT, monitoring INTEGER, control INTEGER, conservatism INTEGER, teamwork INTEGER, " +
|
||||
"knowledge INTEGER, rawData TEXT, date DATE)")
|
||||
"knowledge INTEGER, rawData BLOB, date DATE)")
|
||||
void createObservationTable();
|
||||
|
||||
@SqlUpdate("CREATE TABLE IF NOT EXISTS observation_tutor (tutorId INT NOT NULL, observationId INT NOT NULL, " +
|
||||
@ -26,7 +26,7 @@ public interface ObservationDao {
|
||||
|
||||
@SqlUpdate("INSERT INTO observations (siteId, observed, type, monitoring, control, conservatism, teamwork, knowledge, " +
|
||||
"rawData, date) VALUES (:siteId, :observed, :type, :monitoring, :control, :conservatism, :teamwork, :knowledge, " +
|
||||
":rawData, :date)")
|
||||
":serializeRawData, :date)")
|
||||
@GetGeneratedKeys
|
||||
int addObservation(@BindBean NewObservation observation, @Bind("date") DateTime date);
|
||||
|
||||
|
@ -0,0 +1,34 @@
|
||||
package uk.co.neviyn.Observations.core;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.dropwizard.jackson.Jackson;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.joda.time.DateTime;
|
||||
import org.junit.Test;
|
||||
import uk.co.neviyn.Observations.api.ObservationEntry;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import static io.dropwizard.testing.FixtureHelpers.fixture;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@Slf4j
|
||||
public class ObservationTest {
|
||||
private static final ObjectMapper mapper = Jackson.newObjectMapper();
|
||||
|
||||
private final Observation observation = new Observation(1, 1, "Just a test observation", TrainingType.INITIAL, 1, 2, 3,
|
||||
4, 5, Collections.singletonList(new ObservationEntry("MONITORING", 5, "some", "another sum")), DateTime.parse("2018-09-18T00:00:00.000Z")
|
||||
);
|
||||
|
||||
@Test
|
||||
public void serializesToJson() throws Exception {
|
||||
final String expected = mapper.writeValueAsString(mapper.readValue(fixture("fixtures/Observation.json"), Observation.class));
|
||||
assertEquals(expected, mapper.writeValueAsString(observation));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deserializesFromJson() throws Exception {
|
||||
assertEquals(observation, mapper.readValue(fixture("fixtures/Observation.json"), Observation.class));
|
||||
}
|
||||
|
||||
}
|
18
backend/src/test/resources/fixtures/Observation.json
Normal file
18
backend/src/test/resources/fixtures/Observation.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"id":1,
|
||||
"siteId":1,
|
||||
"observed":"Just a test observation",
|
||||
"type":"INITIAL",
|
||||
"monitoring":1,
|
||||
"control":2,
|
||||
"conservatism":3,
|
||||
"teamwork":4,
|
||||
"knowledge":5,
|
||||
"rawData":[{
|
||||
"type": "MONITORING",
|
||||
"rating":5,
|
||||
"strengths":"some",
|
||||
"improvements":"another sum"
|
||||
}],
|
||||
"date":"2018-09-18T00:00:00.000Z"
|
||||
}
|
Loading…
Reference in New Issue
Block a user