I have two table and they aren't any constraint but when run Unit test, it runs failed. This is my code:
Controller:
@play.db.jpa.Transactional
public static Result submit() throws NoSuchAlgorithmException {
DynamicForm requestData = Form.form().bindFromRequest();
String Id = session(Consts.SESSION_NAME);
ATable aTable = new ATable();
aTable.setId(Id);
aTable.setAlert(requestData.get(Const.NAME));
aTable.setCreatedAt(new Date());
aTable.setCreatedBy(session(Consts.SESSION_NAME));
aTable.setUpdatedAt(new Date());
aTable.setUpdatedBy(session(Consts.SESSION_NAME));
boolean resRequest = false;
if (ADD.equals(requestData.get(Consts.TYPE))) {
resRequest = service.insertATable(aTable);
if (resRequest) {
resRequest = service.insertBTable(requestData.get(Consts.ID),
requestData.get(Consts.MAIL), session(Consts.SESSION_NAME));
}
} else if (UPDATE.equals(requestData.get(Consts.TYPE))) {
resRequest = service.updateATable(scoringRule);
if (resRequest) {
resRequest = service.updateBTable(
requestData.get(Consts.MAIL), requestData.get(Consts.ID));
}
}
if (resRequest) {
return ok("OK");
} else {
return badRequest("NG");
}
}
In case REQUEST_TYPE is ADD: When run on browser, it runs OK. But Unit test can just run only one insert DB. When I remove insert ATable or BTable, it run OK.
And this is code for Unit test:
@Test
public void testSubmit() {
running(fakeApplication(), new Runnable() {
@Override
public void run() {
Map<String, String> data = new HashMap<String, String>();
data.put(Consts.ID, "id");
data.put(Consts.TYPE, "add");
data.put(Consts.MAIL, "a@a.com");
Result result = route(fakeRequest(POST, "/abc/a")
.withSession(Consts.SESSION_NAME, "abc")
.withFormUrlEncodedBody(data));
assertThat(status(result)).isEqualTo(OK);
assertThat(contentType(result)).isEqualTo("text/html");
assertThat(charset(result)).isEqualTo("utf-8");
}
});
}
Please help me, thanks in advance.
Aucun commentaire:
Enregistrer un commentaire