package com.box.sdk;
import java.text.ParseException;
import java.util.Date;
import org.junit.Assert;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import com.eclipsesource.json.JsonObject;
/**
* {@link BoxTaskAssignment} related tests.
*/
public class BoxTaskAssignmentTest {
/**
* Unit test for {@link BoxTaskAssignment#getInfo()}
*/
@Test
@Category(UnitTest.class)
public void testGetInfoSendsCorrectRequest() {
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new RequestInterceptor() {
@Override
public BoxAPIResponse onRequest(BoxAPIRequest request) {
Assert.assertEquals("https://api.box.com/2.0/task_assignments/0",
request.getUrl().toString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"id\": \"0\"}";
}
};
}
});
new BoxTaskAssignment(api, "0").getInfo();
}
/**
* Unit test for {@link BoxTaskAssignment#getInfo(String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetInfoSendsCorrectRequestWithFields() {
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new RequestInterceptor() {
@Override
public BoxAPIResponse onRequest(BoxAPIRequest request) {
Assert.assertEquals("https://api.box.com/2.0/task_assignments/0?fields=item%2Cmessage",
request.getUrl().toString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"id\": \"0\"}";
}
};
}
});
new BoxTaskAssignment(api, "0").getInfo("item", "message");
}
/**
* Unit test for {@link BoxTaskAssignment#getInfo(String...)}
*/
@Test
@Category(UnitTest.class)
public void testGetInfoParseAllFieldsCorrectly() throws ParseException {
final String id = "2698512";
final String itemID = "8018809384";
final String itemSequenceID = "0";
final String itemEtag = "0";
final String itemSha1 = "7840095ee096ee8297676a138d4e316eabb3ec96";
final String itemName = "scrumworksToTrello.js";
final String assignedToID = "1992432";
final String assignedToName = "rhaegar@box.com";
final String assignedToLogin = "rhaegar@box.com";
final String message = null;
final Date completedAt = null;
final Date assignedAt = BoxDateFormat.parse("2013-05-10T11:43:41-07:00");
final Date remindedAt = null;
final BoxTaskAssignment.ResolutionState resolutionState = BoxTaskAssignment.ResolutionState.INCOMPLETE;
final String assignedByID = "11993747";
final String assignedByName = "sean";
final String assignedByLogin = "sean@box.com";
final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n"
+ " \"type\": \"task_assignment\",\n"
+ " \"id\": \"2698512\",\n"
+ " \"item\": {\n"
+ " \"type\": \"file\",\n"
+ " \"id\": \"8018809384\",\n"
+ " \"sequence_id\": \"0\",\n"
+ " \"etag\": \"0\",\n"
+ " \"sha1\": \"7840095ee096ee8297676a138d4e316eabb3ec96\",\n"
+ " \"name\": \"scrumworksToTrello.js\"\n"
+ " },\n"
+ " \"assigned_to\": {\n"
+ " \"type\": \"user\",\n"
+ " \"id\": \"1992432\",\n"
+ " \"name\": \"rhaegar@box.com\",\n"
+ " \"login\": \"rhaegar@box.com\"\n"
+ " },\n"
+ " \"message\": null,\n"
+ " \"completed_at\": null,\n"
+ " \"assigned_at\": \"2013-05-10T11:43:41-07:00\",\n"
+ " \"reminded_at\": null,\n"
+ " \"resolution_state\": \"incomplete\",\n"
+ " \"assigned_by\": {\n"
+ " \"type\": \"user\",\n"
+ " \"id\": \"11993747\",\n"
+ " \"name\": \"sean\",\n"
+ " \"login\": \"sean@box.com\"\n"
+ " }\n"
+ "}");
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse));
BoxTaskAssignment.Info info = new BoxTaskAssignment(api, id).getInfo("item", "message");
Assert.assertEquals(id, info.getID());
Assert.assertEquals(itemID, info.getItem().getID());
Assert.assertEquals(itemSequenceID, info.getItem().getSequenceID());
Assert.assertEquals(itemEtag, info.getItem().getEtag());
Assert.assertEquals(itemSha1, ((BoxFile.Info) info.getItem()).getSha1());
Assert.assertEquals(itemName, info.getItem().getName());
Assert.assertEquals(assignedToID, info.getAssignedTo().getID());
Assert.assertEquals(assignedToName, info.getAssignedTo().getName());
Assert.assertEquals(assignedToLogin, info.getAssignedTo().getLogin());
Assert.assertEquals(message, info.getMessage());
Assert.assertEquals(completedAt, info.getCompletedAt());
Assert.assertEquals(assignedAt, info.getAssignedAt());
Assert.assertEquals(remindedAt, info.getRemindedAt());
Assert.assertEquals(resolutionState, info.getResolutionState());
Assert.assertEquals(assignedByID, info.getAssignedBy().getID());
Assert.assertEquals(assignedByName, info.getAssignedBy().getName());
Assert.assertEquals(assignedByLogin, info.getAssignedBy().getLogin());
}
/**
* Unit test for {@link BoxTaskAssignment#updateInfo(BoxTaskAssignment.Info)}
*/
@Test
@Category(UnitTest.class)
public void testUpdateInfoSendsCorrectJson() {
final String message = "hello!";
final String resolutionState = "approved";
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new JSONRequestInterceptor() {
@Override
protected BoxAPIResponse onJSONRequest(BoxJSONRequest request, JsonObject json) {
Assert.assertEquals("https://api.box.com/2.0/task_assignments/0",
request.getUrl().toString());
Assert.assertEquals(message, json.get("message").asString());
Assert.assertEquals(resolutionState, json.get("resolution_state").asString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"id\": \"0\"}";
}
};
}
});
BoxTaskAssignment assignment = new BoxTaskAssignment(api, "0");
BoxTaskAssignment.Info info = assignment.new Info();
info.addPendingChange("message", message);
info.addPendingChange("resolution_state", resolutionState);
assignment.updateInfo(info);
}
/**
* Unit test for {@link BoxTaskAssignment#updateInfo(BoxTaskAssignment.Info)}
*/
@Test
@Category(UnitTest.class)
public void testUpdateInfoParseAllFieldsCorrectly() throws ParseException {
final String id = "2698512";
final String itemID = "8018809384";
final String itemSequenceID = "0";
final String itemEtag = "0";
final String itemSha1 = "7840095ee096ee8297676a138d4e316eabb3ec96";
final String itemName = "scrumworksToTrello.js";
final String assignedToID = "1992432";
final String assignedToName = "rhaegar@box.com";
final String assignedToLogin = "rhaegar@box.com";
final String message = "hello!!!";
final Date completedAt = null;
final Date assignedAt = BoxDateFormat.parse("2013-05-10T11:43:41-07:00");
final Date remindedAt = null;
final BoxTaskAssignment.ResolutionState resolutionState = BoxTaskAssignment.ResolutionState.INCOMPLETE;
final String assignedByID = "11993747";
final String assignedByName = "sean";
final String assignedByLogin = "sean@box.com";
final JsonObject fakeJSONResponse = JsonObject.readFrom("{\n"
+ " \"type\": \"task_assignment\",\n"
+ " \"id\": \"2698512\",\n"
+ " \"item\": {\n"
+ " \"type\": \"file\",\n"
+ " \"id\": \"8018809384\",\n"
+ " \"sequence_id\": \"0\",\n"
+ " \"etag\": \"0\",\n"
+ " \"sha1\": \"7840095ee096ee8297676a138d4e316eabb3ec96\",\n"
+ " \"name\": \"scrumworksToTrello.js\"\n"
+ " },\n"
+ " \"assigned_to\": {\n"
+ " \"type\": \"user\",\n"
+ " \"id\": \"1992432\",\n"
+ " \"name\": \"rhaegar@box.com\",\n"
+ " \"login\": \"rhaegar@box.com\"\n"
+ " },\n"
+ " \"message\": \"hello!!!\",\n"
+ " \"completed_at\": null,\n"
+ " \"assigned_at\": \"2013-05-10T11:43:41-07:00\",\n"
+ " \"reminded_at\": null,\n"
+ " \"resolution_state\": \"incomplete\",\n"
+ " \"assigned_by\": {\n"
+ " \"type\": \"user\",\n"
+ " \"id\": \"11993747\",\n"
+ " \"name\": \"sean\",\n"
+ " \"login\": \"sean@box.com\"\n"
+ " }\n"
+ "}");
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(JSONRequestInterceptor.respondWith(fakeJSONResponse));
BoxTaskAssignment assignment = new BoxTaskAssignment(api, id);
BoxTaskAssignment.Info info = assignment.new Info();
info.addPendingChange("message", message);
assignment.updateInfo(info);
Assert.assertEquals(id, info.getID());
Assert.assertEquals(itemID, info.getItem().getID());
Assert.assertEquals(itemSequenceID, info.getItem().getSequenceID());
Assert.assertEquals(itemEtag, info.getItem().getEtag());
Assert.assertEquals(itemSha1, ((BoxFile.Info) info.getItem()).getSha1());
Assert.assertEquals(itemName, info.getItem().getName());
Assert.assertEquals(assignedToID, info.getAssignedTo().getID());
Assert.assertEquals(assignedToName, info.getAssignedTo().getName());
Assert.assertEquals(assignedToLogin, info.getAssignedTo().getLogin());
Assert.assertEquals(message, info.getMessage());
Assert.assertEquals(completedAt, info.getCompletedAt());
Assert.assertEquals(assignedAt, info.getAssignedAt());
Assert.assertEquals(remindedAt, info.getRemindedAt());
Assert.assertEquals(resolutionState, info.getResolutionState());
Assert.assertEquals(assignedByID, info.getAssignedBy().getID());
Assert.assertEquals(assignedByName, info.getAssignedBy().getName());
Assert.assertEquals(assignedByLogin, info.getAssignedBy().getLogin());
}
/**
* Unit test for {@link BoxTaskAssignment#updateInfo(BoxTaskAssignment.Info)}
*/
@Test
@Category(UnitTest.class)
public void testDeleteSendsCorrectRequest() {
BoxAPIConnection api = new BoxAPIConnection("");
api.setRequestInterceptor(new RequestInterceptor() {
@Override
public BoxAPIResponse onRequest(BoxAPIRequest request) {
Assert.assertEquals("https://api.box.com/2.0/task_assignments/0",
request.getUrl().toString());
return new BoxJSONResponse() {
@Override
public String getJSON() {
return "{\"id\": \"0\"}";
}
};
}
});
new BoxTaskAssignment(api, "0").delete();
}
}